SQL: Восстановление доступа к инстансу SQL Server без перезапуска

13 январь 2020, Понедельник
5 090
0
0 0
Начиная с Microsoft SQL Server 2008, по умолчанию группа локальных администраторов больше не добавляется в администраторы SQL Server во время установки, это можно сделать только вручную. В результате, если группа администраторов не была добавлена во время или после установки, то бывают ситуации в которых административный доступ к SQL сервер оказывается утерян. Это может произойти, когда пользователь из под которого выполнялась установка неизвестен или утерян пароль учетной записи sa, или предыдущий администратор баз данных уволился и его учетная запись Windows, будучи единственной с правами администратора для SQL Server, была удалена.
Обычно в таком случае используется штатных механизм с перезапуском SQL Server в однопользовательском режиме. Однако такой подход требует, некоторого времени простоя, а в некоторых системах это неприемлемо.

Есть очень безболезненный способ решить эту проблему без каких-либо простоев, при соблюдении определенных условий. Многие слышали и использовали утилиты Марка Русиновича - Windows Sysinternals. В этом наборе есть утилита PsExec, которая позволяет запустить какой либо процесс на локальной или удаленном машине. Одно из преимуществ этой утилиты является возможность запускать процессы от имени учетной записи NT AUTHORITY\SYSTEM, которая - в отличие от "обычных" учетных записей администратора - имеет доступ к SQL Server по умолчанию.

Чтобы этот способ сработал, на SQL Server должна быть включена аутентификация Windows и он должен быть запущен и работать от имени учетной записи NT AUTHORITY\SYSTEM, иначе у учетной записи NT AUTHORITY\SYSTEM будут только права public, а не sysadmin.


Подготовка к восстановлению административного доступа к SQL Server

1. Убедитесь, что служба SQL сервер работает от имени учетной записи NT AUTHORITY\SYSTEM
2. Скачайте и установите на SQL сервер актуальную версию SQL Server Management Studio (SSMS), например, тут
3. Скачайте и распакуйте архив на SQL сервер актуальную версию набора утилит PsTools (PsExec в нее входит), например, PSTools.


Добавления администратора SQL Server

1. Запустите на SQL сервере командную строку с повышенными правами (Shift + щелкните правой кнопкой мыши, "Запуск от имени администратора") и перейдите в папку в которую находится распаковали утилиту PsExec
2. Выполните команду ниже, скорректировав свой фактический путь до Management Studio:
PsExec -s -i "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe"
параметры:
  • -i - указывает, что необходимо запустить процесс в интерактивном режиме
  • -s - указывает, что необходимо запустить процесс от имени системного аккаунта NT AUTHORITY\SYSTEM
Получится примерно следующее (при первом запуске появится окно с лицензионным соглашение):
и запустится SSMS
3. Нажав Connect, Вы сможете подключиться и увидеть список объектов на сервере
4. Теперь, необходимо перейти в раздел Security > Logins и добавить свою учетную запись в качестве системного администратора, и обновить пароль sa, в общем сделать все необходимое, чтобы сделать ваш экземпляр управляемым.

Данный способ хоть и имеет ряд ограничений, однако позволяет без остановки сервера баз данных востановить управление SQL сервером.
Комментарии:
Прокомментировать
При использовании материалов ссылка на сайт UserMan.ru обязательна.
Политика конфиденциальности
Пользовательское соглашение
UserMan.ru © 2017-2024
Соцсети: VK