SQL Server 2012 не вдається запустити через помилку входу


77

Нещодавно я встановив Microsoft SQL Server 2012 на свіжій установці Windows 7, але щоразу, коли я хочу запустити сервер, я отримую таку помилку:

Помилка 1069: Служба не запустилася через помилку входу в систему.

Для запуску служби налаштовано наступного користувача: NT Service\MSSQL$SQLEXPRESS

Як я можу вирішити цю проблему?


1
Чи надає переглядач подій Windows додаткову інформацію?
acraig5075

1
@ acraig5075: Так! У ньому сказано, що обліковий запис не має дозволу "ввійти як сервіс".
xsl

3
@xsl - будь ласка, подумайте про зміну прийнятої відповіді на це питання відповідно до обговорення нижче, і тоді автор цієї відповіді може його відкликати. Дякую!
killthrush

Це може статися, якщо ви приєднаєте комп'ютер до домену. Відповідь нижче про порожній пароль у службі mmc це виправляє.
Brain2000

Однак це лише виправляє це тимчасово.
Ньюклік

Відповіді:


215

Відповідь на це може бути ідентичною проблемі з повнофункціональним SQL Server (NTService \ MSSQLSERVER), і це полягає у скиданні пароля. Іронічно, що пароля немає.

Кроки:

  • Клацніть правою кнопкою миші на Сервіс у сервісах mmc
  • Клацніть Властивості
  • Клацніть на вкладку Вхід
  • У полях для паролів з’являться записи ...
  • Видаліть обидва поля пароля
  • Натисніть "OK"

Це має повторно надати доступ до послуги, і вона повинна запуститися знову. Дивно?

ПРИМІТКА: якщо проблема з’явиться через кілька годин або днів, то, ймовірно, у вас є групова політика, яка перевизначає ваші налаштування, і вона з’являється та приймає негайно знову.


7
Ця відповідь спрацювала для мене. Погасив їх - потім сказав, що служба мала відповідні права, тоді всі залежні служби змогли запустити.
tresstylez

3
Іноді потрібно буде ввести правильний пароль у поля. Наприклад, коли ви змінили пароль для входу до Windows.
Істер

7
Чому це працює? Немає сенсу в тому, що я можу неявно надавати "Увійти як послуга" прямо через Служби, хоча групова політика це забирає. Як я можу заборонити груповій політиці зламати обліковий запис при перезавантаженні?
wrschneider

18

Це сталося зі мною. Політика щодо домену відбирала права облікового запису користувача SQL Server "Увійти як сервіс". Ви можете обійти це, використовуючи рішення JLo, але не вирішує проблему групової політики конкретно, і вона повернеться наступного разу, коли групові політики оновляться на машині.

Конкретною політикою, яка спричинила проблему для мене, було: Під, Конфігурація комп'ютера -> Налаштування Windows -> Налаштування безпеки -> Локальна політика -> Призначення прав користувача: Увійдіть як сервіс

Ви можете побачити, які політики застосовуються до вашої машини, запустивши команду "rsop" із командного рядка. Дотримуйтесь шляху до переліченої вище політики, і ви побачите її поточне значення, а також те, який об'єкт групової політики встановив значення.


Як це виправити? Чи потрібно бути адміністратором групової політики, щоб її змінити?
wrschneider

1
Довелося змусити ІТ-команду, яка керує груповою політикою, змінити її. Ви можете надати користувачеві права "Запустити як службу" локально, але він буде знищений щоразу, коли відбувається оновлення групової політики (кожні кілька годин). Якщо вам потрібно щось працювати, поки політику не вдасться виправити, ви можете налаштувати заплановане завдання, щоб запустити інструмент "ntrights" для повторного надання привілею, використовуючи подію як тригер --- подією оновлення групової політики є Log: Система / Джерело: Групова політика / Ідентифікатор події 1502.
Аарон

11

Поки функція ("запустити як СИСТЕМУ") працює, людям слід порадити, що це означає перехід від облікового запису типу мінімальних дозволів до облікового запису, який має всі дозволи у світі. Що вкрай не є рекомендованою практикою налаштування чи з точки зору безпеки.

Якщо ви знаєте, що робите, і знаєте, що ваш SQL Server завжди працюватиме в ізольованому середовищі (тобто не в мережі готелю чи аеропорту), це, мабуть, добре, але це створює цілком реальний вектор атаки, який може повністю скомпрометувати машину, якщо вона відкрита Інтернет.

Здається, це помилка з боку Microsoft, і люди повинні знати про наслідки опублікованого обхідного шляху.


MSSQLServer 2008 використовував СИСТЕМУ (принаймні в моїй інсталяції), але 2012 більше не. Мені довелося запустити MS SQL Server як SYSTEM, оскільки інша служба (яка МОЖА була запускатися як SYSTEM) автоматично входила в екземпляр SQL Server.
Neil Wightman

3
Правильно, але, вибачте, це не відповідь. Як сказав @xsl, це коментар.

4

Коротка відповідь:
встановіть інструменти віддаленого адміністрування сервера на ваш SQL Server (це необов’язкова функція Windows Server), перезавантажте, потім запустіть диспетчер конфігурацій SQL Server, отримайте доступ до налаштувань служби для кожної з служб, обліковий запис для входу яких починається з «NT Service». . ", очистіть поля пароля та перезапустіть службу. Під обкладинками менеджер конфігурації SQL Server призначить цим віртуальним обліковим записам право входу як служби, і ви вже в дорозі.

tl; dr;

Між налаштуваннями за замовчуванням для домену Windows та встановленням за замовчуванням SQL Server 2012 існує зачіпка.

Як зазначалося вище, налаштування домену за замовчуванням Windows дійсно завадить вам визначити "вхід як послуга" безпосередньо за допомогою редагування групової політики на локальній машині (принаймні за допомогою графічного інтерфейсу; якщо ви встановите модуль Powershell ActiveDirectory (за допомогою інструментів віддаленого адміністрування сервера) ) це можна зробити за допомогою сценарію.

І за замовчуванням установка SQL Server 2012 запускає служби у "віртуальних облікових записах" (префікс NT Service \, наприклад, NT Service \ MSSQLServer. Це як локальні машинні облікові записи, а не облікові записи домену, але ви все одно не можете призначити їх для входу як сервісні права, якщо ваш сервер приєднаний до домену. Налаштування SQL Server намагається призначити право під час інсталяції, а інструмент управління конфігурацією SQL Server також намагається призначити право під час зміни облікового запису для входу.

І прекрасний catch-22 такий: інструменти SQL Server залежать від (якогось компонента) RSAT, щоб призначити вхід як правильний сервіс. Якщо випадково не встановлено RSAT на вашому сервері-учаснику, SQL Server Config Manager не вдається мовчки, намагаючись застосувати цей параметр (незважаючи на всю пишну перевірку перед встановленням, яку він виконує), і ви отримуєте послуги, які не запускаються.

Одним натяком на цю вимогу, яку мені вдалося знайти в хуртовині SQL Server та віртуального облікового запису, був такий: https://msdn.microsoft.com/en-us/library/ms143504.aspx#New_Accounts , пошук RSAT .


2

У мене була подібна проблема, яку вирішили наступним чином:

  1. У Services.MSC клацніть на вкладці Вхід і додайте користувача з мінімальними привілеями та паролем (у службі, яка видає помилку входу)
  2. Запустивши Sql Server для запуску від імені адміністратора

Якщо користувач є користувачем домену, використовуйте ім’я користувача та пароль домену


1

Однією з можливостей є встановлення інструментів передачі даних сервера sql Bi, тоді як сервер sql вже налаштований.

Рішення: - 1. Просто відремонтуйте сервер sql з налаштованим екземпляром

якщо рішення не працює, то варто витратити свій час на втручання в services.msc


0

Я не знаю, наскільки це хороше рішення, але після безуспішного виконання деяких інших відповідей на це питання я вирішив встановити підключення користувача служби MSSQLSERVER до "Локальна служба".

Примітка: я використовую SQL Server 2017.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.