Как сбросить пароль SA в Microsoft SQL Server?

В этой статье мы рассмотрим, как сбросить пароль SA (system administrator) в базе данных Microsoft SQL Server 2019/2017/2014/2011. Данная инструкция поможет вам восстановить доступ к базе данных MSSQL, если вы не можете аутентифицироваться с помощью учетной записи sa (пароль sa был забыт/утерян/учетка отключена) или под пользователем Windows (в настройках доступа отсутствуют пользователи с правами администратора MS SQL).

Локальная учетная запись sa имеет максимальные привилегии в MS SQL. В большинстве случаев она отключена, но вы можете включить ее, задать нужный пароль и восстановить доступ к SQL Server.

Для восстановления доступа к базе данных без полной переустановки экземпляра MS SQL (и с потерей базы master), нужно запустить SQL Server в однопользовательском режиме ( single-user mode ). В этом однопользовательском режиме вы сможете авторизоваться на SQL Server под любой учетной записью с правами локального администратора на компьютере, на котором установлен MS SQL Server . После этого можно сбросить пароль учетной записи sa и/или предоставить административные права нужной ученой записи Windows.

Совет . Напомним, что, начиная с MS SQL Server 2008, роль sysadmin на SQL сервере по-умолчанию не назначается локальной группе администраторов Windows.

Чтобы запустить MS SQL Server в single-user mode, подключитесь к хосту MSSQL под любой учетной записью с правами локального администратора Windows.

  1. Остановите инстанс SQL Server (в нашем примере имя инстанса MSSQL — MSSQLSERVER ) из командной строки net stop MSSQLSERVER или с помощью PowerShell: Get-Service MSSQLSERVER| stop-service остановить службу MSSQLSERVER
  2. Откройте редактор реестра ( regedit.exe ) и перейдите в раздел параметров запуска сервиса SQL: HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesMSSQLSERVER ;
  3. Измените значение параметра ImagePath , добавив в качестве аргумента sqlservr.exe ключ -m . В нашем примере получилось такое значение: "C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBinnsqlservr.exe" -sMSSQLSERVER -m запуск mssql в однопользовательском режиме с параметром -m
  4. Запустите службу SQL Server: net start MSSQLSERVER
  5. Теперь ваш SQL Server запущен в однопользовательском режиме и позволяет любому члену локальной группы администраторов (или встроенному администратору Windows ) подключаться к экземпляру SQL Server с правами sysadmin.
  6. Запустите SQL Server Management Studio (SSMS) и подключитесь к Database Engine под учетной записью администратора компьютера; SQL Server Management Studio: подключиться к MSSQL под локальным администратором
  7. Перейдите в раздел Security -> Logins и найдите пользователя sa . По умолчанию пользователь sa отключен; полльзователь sa в sql server отключен
  8. Откройте его свойства и на вкладке General задайте новый пароль SA. Затем на вкладке Status включите данного пользователя (Login -> Enabled); сбросить пароль sa в mssql
  9. Чтобы разрешить подключаться к MSSQL с помощью локальных учетных записей SQL (в том числе sa), нужно в свойствах сервера на вкладке Security включить режим аутентификации SQL Server and Windows Authentication mode . Иначе при подключении под локальной учетной записью sa будет появляться ошибка:
     Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)

    режим аутентфикации mssql: SQL Server and Windows Authentication mode

  10. Также в разделе Logins можно добавить нужных пользователей Windows (локальных или доменных) и предоставить им права Server roles -> Sysadmin . Можно предоставить пользователю роль из командной строки sqlcmd:
    EXEC sp_addsrvrolemember 'DOMAINUsername', 'sysadmin';)
    GO

    предоставить роль sysadmin для пользователя windows в sql
  11. Осталось еще раз остановить службу MSSQL, вернуть начальное значение параметра реестра ImagePart, убрав “-m” ( C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBinnsqlservr.exe" -sMSSQLSERVER );
  12. Запустите службу SQL Server в обычном режиме;
  13. Теперь вы можете подключиться к SQL серверу под учетной записью sa в режиме SQL Server Authentication или под учетной записью Windows, которой вы предоставили права sysadmin в SQL Server.
Совет . Также вы можете запустить SQL Server в однопользовательском режиме с помощью SQL Server Configuration Manager. Для этого нужно в свойствах нужного инстанса перейти на вкладку Startup Parameters и добавить опцию запуска –m . Startup Parameters в настройках SQL Server Configuration Manager

Также вы можете использовать командную строку sqlcmd для сброса пароля SA и предоставления доступа к SQL Server.

  1. Запустите SQL Server в однопользовательском режиме как описано выше;
  2. Откройте командную строку и подключитесь к серверу SQL: sqlcmd –S localhost
  3. Чтобы изменить пароль пользователя SA и включить его, выполните следующие команды T-SQL: ALTER LOGIN sa enable
    GO
    ALTER LOGIN sa WITH PASSWORD = 'newsa_pa$$w0rdd1'
    GO
  4. Чтобы предоставить права sysadmin в MSSQL для учетной записи Windows (локальной в этом примере), используйте команды:
    CREATE LOGIN [sql-srv01user1] FROM WINDOWS
    GO
    ALTER SERVER ROLE sysadmin ADD MEMBER [sql-srv01user1]
    GO

В этой статье мы показали, как восстановить доступ к SQL Server в single user mode. В этом режиме вы можете сбросить пароль sa (и других пользователей SQL), или предоставить права администратора SQL учетным записям Windows. Однопользовательский режим также можно использовать для восстановления базы temdb в MSSql Server .

EnglishRussianUkrainian