Як скинути пароль sa?


22

Я втратив пароль на машині, і коли я входжу в машину безпосередньо за допомогою облікового запису в групі адміністратора, SQL Server Management Studio не дозволить мені входити в систему за допомогою автентифікації Windows.

Мій план полягав у тому, щоб просто увійти на сервер, підключитися через автентифікацію Windows та скинути sa для використання нового пароля. Оскільки я не можу підключитися через автентифікацію Windows, це не працюватиме.

Як інакше можна скинути пароль sa?


Знайшов відповідь. Я не зміг увійти як адміністратор домену aa, але з використанням місцевого адміністратора працював чудово.
Даніель Вільямс

Ви маєте на увазі, що член місцевої машини «Адміністратори» зміг це зробити? Що стосується нащадків, які саме кроки ви зробили?
p.campbell

Обліковий запис був самим обліковим записом адміністратора. Цей обліковий запис є частиною локальної групи адміністраторів, як і мій обліковий запис домену. Але лише локальний обліковий запис адміністратора зміг використовувати автентифікацію Windows для входу в сервер Sql. Я сподіваюся, що це допомагає.
Даніель Вільямс

запуск примірника в режимі для одного користувача також дозволить будь-якому локальному обліковому запису, який є частиною локальної групи адміністратора, доступ до цього примірника. Редагувати: Посилання @ user1419 вказує на це.
Шон Мелтон

Відповіді:


10

Ви можете виконати кроки, зазначені у посиланні нижче, щоб скинути пароль SA:

Кроки, зведені нижче:

  1. Відкрийте Менеджер конфігурацій SQL Server у меню Пуск> Програми> Microsoft SQL Server 20xx> Інструменти конфігурації>, що стосуються найновішої інстальованої вами версії SQL Server (наприклад, якщо у вас встановлені 2005 та 2012 роки, використовуйте версію 2012 року). У вас немає меню "Пуск"? На початковому екрані Windows 8 почніть вводити SQL Server Con ..., поки він не з’явиться.
  2. Зупиніть екземпляр SQL Server, який потрібно відновити, клацнувши правою кнопкою миші екземпляр у Службах SQL Server та вибравши "Зупинити"
  3. Клацніть правою кнопкою миші екземпляр, який ви щойно зупинили, натисніть "Властивості" і на вкладці "Додатково" в текстовому полі "Властивості" додайте "; –m" в кінці списку в опції "Параметри запуску" (у нових версіях ви можна перейти безпосередньо до вкладки «Параметри запуску», введіть «-m» та натисніть кнопку «Додати», не турбуючись про синтаксис, крапку з комою чи що-небудь ще).
  4. Натисніть кнопку «ОК» та перезапустіть екземпляр SQL Server
  5. Після запуску екземпляра SQL Server в режимі однокористування обліковий запис адміністратора Windows може підключитися до SQL Server за допомогою утиліти sqlcmd за допомогою автентифікації Windows. Ви можете використовувати команди Transact-SQL, такі як "sp_addsrvrolemember", щоб додати існуючий логін (або новостворений) до ролі сервера sysadmin.

Наступний приклад додає обліковий запис "Buck" у домені "CONTOSO" до ролі sysadmin:

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

Після відновлення доступу до системного адміністратора видаліть параметр «; -m» із параметрів запуску за допомогою диспетчера конфігурації та ще раз перезавантажте екземпляр SQL Server.

ПРИМІТКА: переконайтеся, що між ";" і "-m" немає місця, аналізатор параметрів реєстру є чутливим до таких помилок. Ви повинні побачити запис у файлі ERRORLOG SQL Server із написом "SQL Server запустився в режимі однокористування".


Додаткові ресурси:

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


9

Що ви робите, буде залежати від вашої версії SQL Server, а також від того, чи можете ви дозволити зняти послугу SQL Server для встановлення нових облікових даних. Перші два способи тут не вимагають перезавантаження екземпляра:


Для екземплярів SQL Server 2005, 2008 та 2008 R2

Ви можете підключитися за допомогою NT AUTHORITY\SYSTEMоблікового запису (або інших методів зворотного доступу). У деяких відповідях тут є деякі деталі:

У мене також є підказка на MSSQLTips.com, яка стосується цієї проблеми:

По суті, ви завантажуєте PSExec від Microsoft, а потім використовуєте його для запуску Management Studio після встановлення:

PsExec -s -i "C:\...\Ssms.exe"

Це підключиться як NT AUTHORITY\SYSTEMі дозволить вам робити такі речі в Провіднику об’єктів, як:

  • Змініть примірник на режим SQL Server та Windows Authentication - клацніть правою кнопкою миші ім’я сервера, натисніть властивості та змініть перемикач, якщо він наразі встановлений лише для Windows:

    введіть тут опис зображення

  • Встановіть пароль для saоблікового запису - розгорніть Безпека, розгорніть Логіни, клацніть правою кнопкою миші saта натисніть Властивості, і в діалоговому вікні, що з’явиться, буде два поля для введення пароля:

    введіть тут опис зображення

  • Додайте власний логін якsysadmin - клацніть правою кнопкою миші Логін, Новий логін ... введіть своє ім’я для входу (у формі DOMAIN\username), потім перейдіть на вкладку Ролі сервера та поставте sysadminпрапорець і натисніть кнопку ОК:

    введіть тут опис зображення

  • (або, якщо ваш логін вже вказано, клацніть правою кнопкою миші, Властивості та переконайтесь, що sysadminпрапорець встановлено в розділі Ролі сервера)


Для SQL Server 2012 та новіших екземплярів

Починаючи з SQL Server 2012, NT Authority\SYSTEMза замовчуванням більше не було надано прав на SQL Server. Тож ще один спосіб зробити це в цих нових версіях Арґеніс Фернандес :

  1. Якщо служба SQL VSS Writer запущена, зупиніть її та призупиніть всі плани технічного обслуговування або програмне забезпечення для резервного копіювання сторонніх виробників, які можуть на неї покладатися.
  2. Відкрийте regedit.exeта змініть значення, на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathяке вказуватимете SQLCMD.exe, в яке збирається C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. Після редагування значення реєстру має виглядати приблизно так (вибачте за прокрутку):

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
  3. Спробуйте запустити службу SQL VSS Writer знову (ви отримаєте помилку; це нормально).

  4. Тепер ви зможете підключитися як sysadminкористувач YourDomain\YourUserName. Тому зупиніть службу SQL VSS Writer, виправте реєстр та перезапустіть службу (якщо вона потрібна для запуску або якщо вона запускалася до того, як ви її запустили).

Я переглянув це набагато детальніше у другій підказці:

Хоча коли я писав цю пораду, я застосував більш громіздкий підхід зробити копію SQLCMD.exeта замінити sqlwriter.exe- набагато простіше просто вказати службу SQLCMD.exeбезпосередньо.


Якщо ви можете дозволити собі зняти послугу SQL Server

Існує офіційно підтримуваний шлях від Microsoft, який вимагає перезапустити екземпляр в режимі єдиного користувача:

Існує також функція в dbatools.io , рішення Powershell для управління SQL сервером, яке називається Reset-DbaAdmin:


Безпека - це не головне питання

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


чи дозволить цей метод включити обліковий запис SA? Я застряг у положенні, коли мій обліковий запис SA вимкнено, і у мене є група AD з громадською роллю. Крім того, ваш перелічений метод, чи зможу я виконувати ці кроки без зняття екземпляра? Я запитую, тому що мій сервер зараз у виробничому середовищі.
Шон Перкінс

1
@Sean так, ви повинні мати змогу повторно включити sa та / або створити інший обліковий запис для авторизації SQL, або додати користувача AD (не групу!) Спеціально для підвищеної ролі. Жоден із них не потребуватиме перезавантаження SQL Server (єдиний випадок, коли це потрібно, - це зміна між змішаною автентифікацією та лише Windows).
Аарон Бертран

Я отримую таку помилку, коли я намагаюся обробити ваш процес. Я переконався, що також знімав скріншот єдиних облікових записів. Чи відбулася якась зміна в SQL 2012, яка не дозволить цей метод? Моя поточна версія - 11.0.3128 . Далі, неважливо, який тип змін я вношу, я отримаю певну варіацію помилки, вказуючи, що у мене немає дозволів. Останнє, я сумніваюся, що це має значення, але я відкрив PowerShell з правами адміністратора, виконав cmd.exe, потім psexec -i -s "C: \ ...... smss.exe"! [Помилка створення облікового запису] ( i.stack.imgur.com/ITOja.p
Шон Перкінс

На доданому зображенні зараз нічого не відображається, але в ньому були "SA" та "NT AUTHORITY \ SYSTEM" як єдині перелічені облікові записи. Повідомлення про помилку, яке я отримав: «Користувач не має дозволу на виконання цієї дії. (Microsoft SQL Server, помилка: 15247)»
Шон Перкінс

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