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

Как сбросить пароль 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.

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