В этой статье мы рассмотрим, как сбросить пароль SA (system administrator) в базе данных Microsoft SQL Server 2019/2017/2014/2011. Данная инструкция поможет вам восстановить доступ к базе данных MSSQL, если вы не можете аутентифицироваться с помощью учетной записи sa (пароль sa был забыт/утерян/учетка отключена) или под пользователем Windows (в настройках доступа отсутствуют пользователи с правами администратора MS SQL).
Для восстановления доступа к базе данных без полной переустановки экземпляра MS SQL (и с потерей базы master), нужно запустить SQL Server в однопользовательском режиме (single-user mode). В этом однопользовательском режиме вы сможете авторизоваться на SQL Server под любой учетной записью с правами локального администратора на компьютере, на котором установлен MS SQL Server. После этого можно сбросить пароль учетной записи sa и/или предоставить административные права нужной ученой записи Windows.
Чтобы запустить MS SQL Server в single-user mode, подключитесь к хосту MSSQL под любой учетной записью с правами локального администратора Windows.
- Остановите инстанс SQL Server (в нашем примере имя инстанса MSSQL — MSSQLSERVER) из командной строки
net stop MSSQLSERVER
или с помощью PowerShell:Get-Service MSSQLSERVER| stop-service
- Откройте редактор реестра (
regedit.exe
) и перейдите в раздел параметров запуска сервиса SQL: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MSSQLSERVER; - Измените значение параметра ImagePath, добавив в качестве аргумента sqlservr.exe ключ -m. В нашем примере получилось такое значение:
"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER -m
- Запустите службу SQL Server:
net start MSSQLSERVER
- Теперь ваш SQL Server запущен в однопользовательском режиме и позволяет любому члену локальной группы администраторов (или встроенному администратору Windows) подключаться к экземпляру SQL Server с правами sysadmin.
- Запустите SQL Server Management Studio (SSMS) и подключитесь к Database Engine под учетной записью администратора компьютера;
- Перейдите в раздел Security -> Logins и найдите пользователя sa. По умолчанию пользователь sa отключен;
- Откройте его свойства и на вкладке General задайте новый пароль SA. Затем на вкладке Status включите данного пользователя (Login -> Enabled);
- Чтобы разрешить подключаться к MSSQL с помощью локальных учетных записей SQL (в том числе sa), нужно в свойствах сервера на вкладке Security включить режим аутентификации SQL Server and Windows Authentication mode. Иначе при подключении под локальной учетной записью sa будет появляться ошибка:
Login failed for user 'sa'. (Microsoft SQL Server, Error: 18456)
- Также в разделе Logins можно добавить нужных пользователей Windows (локальных или доменных) и предоставить им права Server roles -> Sysadmin. Можно предоставить пользователю роль из командной строки sqlcmd:
EXEC sp_addsrvrolemember 'DOMAIN\Username', 'sysadmin';)
GO - Осталось еще раз остановить службу MSSQL, вернуть начальное значение параметра реестра ImagePart, убрав “-m” (
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER
); - Запустите службу SQL Server в обычном режиме;
- Теперь вы можете подключиться к SQL серверу под учетной записью sa в режиме SQL Server Authentication или под учетной записью Windows, которой вы предоставили права sysadmin в SQL Server.
Также вы можете использовать командную строку sqlcmd для сброса пароля SA и предоставления доступа к SQL Server.
- Запустите SQL Server в однопользовательском режиме как описано выше;
- Откройте командную строку и подключитесь к серверу SQL:
sqlcmd –S localhost
- Чтобы изменить пароль пользователя SA и включить его, выполните следующие команды T-SQL:
ALTER LOGIN sa enable
GO
ALTER LOGIN sa WITH PASSWORD = 'newsa_pa$$w0rdd1'
GO - Чтобы предоставить права sysadmin в MSSQL для учетной записи Windows (локальной в этом примере), используйте команды:
CREATE LOGIN [sql-srv01\user1] FROM WINDOWS
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [sql-srv01\user1]
GO
В этой статье мы показали, как восстановить доступ к SQL Server в single user mode. В этом режиме вы можете сбросить пароль sa (и других пользователей SQL), или предоставить права администратора SQL учетным записям Windows. Однопользовательский режим также можно использовать для восстановления базы temdb в MSSql Server.