Как вы сбрасываете пароль sa?

22

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

Мой план состоял в том, чтобы просто войти на сервер, подключиться через проверку подлинности Windows и сбросить sa, чтобы использовать новый пароль. Поскольку я не могу подключиться через проверку подлинности Windows, это не сработает.

Как еще я могу сбросить пароль sa?

Дэниел Уильямс
источник
Нашел ответ. Я не мог войти в систему как администратор домена, но с помощью локального администратора работал нормально.
Даниэль Уильямс
Вы имеете в виду, что член группы «Администраторы» локального компьютера смог это сделать? Для потомков, какие именно шаги вы предприняли?
p.campbell
Учетная запись была самой учетной записью локального администратора. Эта учетная запись является частью локальной группы администраторов, как и моя учетная запись домена. Но только локальная учетная запись администратора могла использовать проверку подлинности Windows для входа на Sql Server. Надеюсь, это поможет.
Даниэль Уильямс
запуск экземпляра в однопользовательском режиме также позволит любой локальной учетной записи, являющейся частью локальной группы администраторов, получить доступ к экземпляру. Редактировать: ссылка @ 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';

После восстановления доступа sysadmin удалите «; -m» из параметров запуска, используя Configuration Manager, и перезапустите экземпляр SQL Server еще раз.

ПРИМЕЧАНИЕ: убедитесь, что между «;» и «-m» нет пробела, анализатор параметров реестра чувствителен к таким опечаткам. Вы должны увидеть в файле SQL Server ERRORLOG запись, которая гласит: «SQL Server запущен в однопользовательском режиме».


Дополнительные ресурсы:

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

TroubleshootingSQL
источник
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и позволит вам делать вещи в Object Explorer, например:

  • Измените экземпляр на SQL Server и режим проверки подлинности Windows - щелкните правой кнопкой мыши имя сервера, выберите свойства и установите переключатель, если в данный момент он установлен только для Windows:

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

  • Установите пароль для saучетной записи - разверните Security, разверните Logins, щелкните правой кнопкой мыши saи нажмите «Properties», и в появившемся диалоговом окне появятся два поля ввода пароля:

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

  • Добавьте свой собственный логин какsysadmin - щелкните правой кнопкой мыши Logins, New Login ... введите ваше логин (в форме DOMAIN\username), затем перейдите на вкладку Server Roles и установите sysadminфлажок и нажмите OK:

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

  • (или, если ваш логин уже указан, щелкните правой кнопкой мыши «Свойства» и убедитесь, что 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 Server, также есть функция Reset-DbaAdmin:


Безопасность не главная проблема здесь

Я вижу множество людей, призывающих Microsoft «исправить» эти так называемые «уязвимости». Это допустимые подходы для восстановления доступа к экземпляру SQL Server, который по праву принадлежит вам. Все они требуют повышенных привилегий на физическом хосте, где находится SQL Server; как я уже говорил нескольким людям, если вы не хотите, чтобы разработчики возились с установками SQL Server, не назначайте их администраторами.

Аарон Бертран
источник
Позволит ли этот метод включить учетную запись SA? Я застрял в положении, когда моя учетная запись SA отключена, и у меня есть группа AD с публичной ролью. Кроме того, ваш метод в списке, смогу ли я выполнить эти шаги без снятия экземпляра? Я спрашиваю, потому что мой сервер сейчас находится в производственной среде.
Шон Перкинс
1
@ Да, вы должны иметь возможность повторно включить 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. Вы локальный администратор на машине? Вы уверены?
Аарон Бертран