Подключение к SQL Server в случае, если доступ системных администраторов заблокирован
Применимо к:SQL Server
В этой статье описывается, как восстановить доступ с правами системного администратора к ядру СУБД SQL Server, если он был случайно заблокирован. Системный администратор может утратить доступ к экземпляру SQL Server по одной из следующих причин:
по ошибке удалены все члены предопределенной роли сервера sysadmin;
по ошибке удалены все группы Windows, которые являлись членами предопределенной роли сервера sysadmin;
имена входа, являющиеся членами предопределенной роли сервера sysadmin, принадлежат лицам, которые покинули компанию или недоступны;
Учетная
sa
запись отключена или никто не знает пароль.
Решение
Чтобы устранить проблему с доступом, рекомендуется запустить экземпляр SQL Server в однопользовательском режиме. Этот режим не позволит устанавливать другие подключений при попытке восстановить доступ. Вы можете подключиться к экземпляру SQL Server и добавить имя входа в роль сервера sysadmin. Подробные инструкции по решению этой проблемы приведены в этом разделе.
Экземпляр SQL Server можно запустить в однопользовательском режиме с -m
помощью командной строки или -f
параметров. Затем любой член локальной группы администраторов компьютера может подключиться к экземпляру SQL Server в качестве члена предопределенных ролей сервера sysadmin .
При запуске экземпляра в однопользовательском режиме остановите службу агента SQL Server. В противном случае агент SQL Server может сначала подключиться, принимая только доступное подключение к серверу и блокируя вход.
Кроме того, неизвестное клиентское приложение может воспользоваться единственным доступным подключением, прежде чем вы сможете выполнить вход. Чтобы исключить возникновение этой ситуации, используйте параметр -m
, за которым следует имя приложения, что позволит ограничить подключения одним подключением из определенного приложения. Например, запуск SQL Server с -mSQLCMD
ограничениями подключений к одному соединению, которое идентифицирует себя как клиентская программа sqlcmd . Чтобы подключиться через редактор запросов в Management Studio, используйте -m"Microsoft SQL Server Management Studio - Query"
.
Внимание
Не используйте -m
с именем приложения в качестве средства безопасности. Клиентские приложения предоставляют имя приложения в параметрах строки подключения и могут легко указать ложное имя.
В следующей таблице приведены различные способы запуска экземпляра в однопользовательском режиме в командной строке.
Вариант | Description | Варианты использования |
---|---|---|
-m |
Ограничение подключений одним подключением | Если другие пользователи не пытаются подключиться к экземпляру или вы не знаете имя приложения, которое используется для подключения к экземпляру. |
-mSQLCMD |
Разрешает только одно соединение, которое должно идентифицироваться как клиентская программа sqlcmd. | Если вы планируете подключиться к экземпляру с помощью sqlcmd и хотите запретить другим приложениям использовать единственное доступное подключение. |
-m"Microsoft SQL Server Management Studio - Query" |
Разрешает только одно соединение, которое должно идентифицироваться как приложение Microsoft SQL Server приложении Management Studio — Query. | Если вы планируете подключиться к экземпляру через редактор запросов в Management Studio, и вы хотите запретить другим приложениям принимать единственное доступное подключение. |
-f |
Разрешает только одно соединение и запускает экземпляр в минимальной конфигурации. | Когда запуску препятствует какая-либо другая конфигурация. |
Пошаговые инструкции
Пошаговые инструкции по запуску SQL Server в однопользовательском режиме см. в статье "Запуск SQL Server в режиме однопользовательского пользователя".
С помощью PowerShell
Вариант 1. Выполнение шагов непосредственно в исполняемой записной книжке с помощью Azure Data Studio
Заметка
Прежде чем пытаться открыть эту записную книжку, убедитесь, что на локальном компьютере установлен экземпляр Azure Data Studio. Сведения об установке Azure Data Studio см. в статье о том, как установить Azure Data Studio.
Вариант 2. Выполнение шага вручную
Открытие команды Windows PowerShell от имени администратора
Настройте имя службы и экземпляр SQL Server, а также переменные входа Windows. Замените их значениями в соответствии с используемой средой.
Если у вас есть экземпляр по умолчанию, используйте
MSSQLSERVER
без имени экземпляра.$service_name = "MSSQL`$instancename" $sql_server_instance = "machine_name\instance" $login_to_be_granted_access = "[CONTOSO\PatK]"
Прервите работу службы SQL Server, чтобы ее можно было перезапустить в однопользовательском режиме, с помощью следующей команды:
Если у вас есть экземпляр по умолчанию, используйте
MSSQLSERVER
без имени экземпляра.net stop $service_name
Теперь запустите экземпляр SQL Server в однопользовательском режиме и разрешите только подключение SQLCMD.exe (
/mSQLCMD
).Заметка
Обязательно используйте для
SQLCMD
верхний регистр.Если у вас есть экземпляр по умолчанию, используйте
MSSQLSERVER
без имени экземпляра.net start $service_name /f /mSQLCMD
С помощью sqlcmd выполните команду CREATE LOGIN и затем команду ALTER SERVER ROLE. В этом шаге предполагается, что вы вошли в Windows с учетной записью, которая является членом локальной группы администраторов. При этом предполагается, что имена доменов и имен входа заменены на учетные данные, которые необходимо предоставить системным администраторам (роль sysadmin).
Если у вас есть экземпляр по умолчанию, используйте имя сервера.
sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN $login_to_be_granted_access FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER $login_to_be_granted_access; "
Заметка
При возникновении следующей ошибки необходимо убедиться, что другие программы SQLCMD не подключены к SQL Server:
Sqlcmd: Error: Microsoft ODBC Driver X for SQL Server : Login failed for user 'CONTOSO\BobD'. Reason: Server is in single user mode. Only one administrator can connect at this time..
Смешанный режим (необязательно): если SQL Server работает в режиме смешанной аутентификации, можно также сделать следующее:
Предоставьте членам роли sysadmin имя входа SQL. Выполните следующий код, чтобы создать новое имя входа проверки подлинности SQL Server, являющееся членом предопределенных ролей сервера sysadmin . Замените
?j8:z$G=JE9
надежный пароль по вашему выбору.Если у вас есть экземпляр по умолчанию, используйте имя сервера.
$strong_password = "j8:zG=J?E9" sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN TempLogin WITH PASSWORD = '$strong_password'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin; "
Кроме того, если SQL Server работает в режиме смешанной аутентификации и необходимо сбросить пароль включенной учетной записи sa: Измените пароль учетной записи sa с помощью следующей команды. Обязательно замените
j8:zG=J?E9
надежный пароль по вашему выбору:Если у вас есть экземпляр по умолчанию, используйте имя сервера.
$strong_password = "j8:zG=J?E9" sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
Остановка и перезапуск экземпляра SQL Server в многопользовательском режиме
Если у вас есть экземпляр по умолчанию, используйте
MSSQLSERVER
без имени экземпляра.net stop $service_name net start $service_name
Использование диспетчера конфигурации SQL Server и Management Studio (SSMS)
Предварительные требования:
Экземпляр SQL Server выполняется в Windows 8 или более поздней версии. Небольшие изменения для предыдущих версий SQL Server или Windows приведены там, где применимо.
СРЕДА SQL Server Management Studio установлена на компьютере.
Следуйте этим инструкциям, выполнив вход в систему Windows в качестве члена локальной группы администраторов.
В меню "Пуск Windows" щелкните правой кнопкой мыши значок диспетчера конфигурации SQL Server и выберите "Запуск от имени администратора", чтобы передать учетные данные администратора в Configuration Manager.
В диспетчере конфигурации SQL Server на панели слева выберите Службы SQL Server. На панели справа найдите экземпляр SQL Server. (Экземпляр SQL Server по умолчанию включает в себя (MSSQLSERVER) после имени компьютера. Именованные экземпляры появляются в верхнем регистре с тем же названием, что и в списке «зарегистрированные серверы»). Щелкните правой кнопкой мыши экземпляр SQL Server и выберите Свойства.
На вкладке Параметры запуска в поле Укажите параметр запуска введите
-m
и щелкните Добавить. (Это дефис, затем буква «m» в нижнем регистре.)Для некоторых более ранних версий SQL Server нет вкладки "Параметры запуска". В этом случае на вкладке "Дополнительно" дважды щелкните "Параметры запуска". Параметры откроются в маленьком окне. Не изменяйте существующие параметры. В самом конце добавьте новый параметр
;-m
и щелкните ОК. (Это точка с запятой, затем дефис, затем буква «m» в нижнем регистре.)Щелкните ОК, а после сообщения о перезагрузке щелкните правой кнопкой мыши имя сервера и выберите Перезапустить.
После перезапуска SQL Server сервер будет находиться в однопользовательском режиме. Убедитесь, что агент SQL Server не выполняется. Если он был запущен, то он займет ваше единственное соединение.
В меню "Пуск Windows" щелкните правой кнопкой мыши значок для Management Studio и выберите "Запуск от имени администратора". Это передает учетные данные администратора в SSMS.
В более ранних версиях Windows вариант Запуск от имени администратора появляется в виде подменю.
В некоторых конфигурациях SSMS пытается выполнить несколько подключений. Несколько подключений завершаются ошибкой, так как SQL Server находится в однопользовательском режиме. Выполните одно из следующих действий, соответствующее вашему сценарию.
Подключитесь с помощью обозревателя объектов, используя проверку подлинности Windows (которая включает учетные данные администратора). Разверните Безопасность, затем Имена входаи дважды щелкните имя входа. На странице Роли сервера выберите sysadmin и щелкните ОК.
Вместо соединения с помощью обозревателя объектов подключитесь с помощью окна запросов, используя проверку подлинности Windows (которая включает учетные данные администратора). (Подключиться подобным образом можно, только если подключение не выполнено с помощью обозревателя объектов.) Выполните следующий код, чтобы добавить новое имя входа для проверки подлинности Windows, которое является членом предопределенной роли сервера sysadmin. В следующем примере создается пользователь с именем
CONTOSO\PatK
.CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
Если SQL Server работает в смешанном режиме проверки подлинности, подключитесь к окну запроса с помощью проверки подлинности Windows (включая учетные данные администратора). Выполните следующий код, чтобы создать новое имя входа проверки подлинности SQL Server, являющееся членом предопределенных ролей сервера sysadmin .
CREATE LOGIN TempLogin WITH PASSWORD = '************'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
Предупреждение
Замените ************ надежным паролем.
Если SQL Server работает в смешанном режиме проверки подлинности и хотите сбросить пароль учетной записи sa , подключитесь к окну запроса с помощью проверки подлинности Windows (включая учетные данные администратора). Измените пароль учетной записи sa с помощью следующей команды.
ALTER LOGIN sa WITH PASSWORD = '************';
Предупреждение
Замените ************ надежным паролем.
Закройте Среду Management Studio.
Следующие действия позволят переключить SQL Server в многопользовательский режим. В диспетчере конфигурации SQL Server на панели слева выберите Службы SQL Server.
В области справа щелкните экземпляр SQL Server правой кнопкой мыши и выберите Свойства.
На вкладке Параметры запуска в поле Существующие параметры выберите
-m
и щелкните Удалить.Для некоторых более ранних версий SQL Server нет вкладки "Параметры запуска". В этом случае на вкладке "Дополнительно" дважды щелкните "Параметры запуска". Параметры откроются в маленьком окне. Удалите
;-m
(добавлено выше) и щелкните ОК.Щелкните правой кнопкой мыши имя сервера и выберите Перезапустить. Не забудьте снова запустить агент SQL Server, если вы остановили его перед запуском SQL Server в однопользовательском режиме.
Теперь можно подключиться к одной из учетных записей, которая имеет фиксированную роль сервера sysadmin.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по