Вы уважаемый и пользующийся доверием в своей организации администратор баз данных. Вы поддерживаете и обновляете несколько важных сервисов, выполняемых SQL Server вашей производственной среды. Вы предприняли следующие шаги (отражающие рекомендации, которым должен следовать любой добросовестный администратор баз данных), чтобы защитить базы данных SQL Server своей компании от любых видов неуполномоченного доступа.
- Удалили все встроенные административные учетные записи SQL Server.
- Удалили всех пользователей (за исключением System Administrator или SA), входящих в серверную роль SYSADMIN (все учетные записи Windows Accounts и SQL Server).
- Установили для учетной записи SA некий чрезвычайно сложный пароль, который тяжело угадать или запомнить.
- Выполняете повседневные операции обслуживания SQL Server под учетной записью пользователя домена, имеющей разрешения Database Owner (DBO) на пользовательские базы данных, но не имеющей привилегий SYSADMIN в системе.
- Вы нигде не записали пароль SA, чтобы другие его не узнали. Ведь записывать пароли — не лучший подход.
Однако поскольку вы задали такой сложный пароль для SA и использовали свою доменную учетную запись, а не учетную запись SA при повседневной работе с базами данных SQL Server, случилось невообразимое. Вы забыли пароль учетной записи SA своего SQL Server.
Вы единственный сотрудник своей группы, который знал пароль SA. Теперь вы не можете вспомнить, каким он был, а вам нужно сделать несколько подтверждений на сервером уровне в окнах настройки производственного SQL Server. Что же теперь делать? Вот кое-какие варианты.
- Попробуйте войти как SA, указывая всевозможные пароли, которые придут вам в голову.
- Поищите пароль SA на жестком диске своего компьютера или в электронной почте (возможно, вы сохранили его в каком-нибудь файле; это плохой подход, но может помочь).
- Попробуйте восстановить базу данных Master с резервной копии. Это не поможет в долгосрочной перспективе, поскольку, если вы не вспомните пароль SA, то будете испытывать те же самые проблемы.
- Заново сформируйте базу данных Master. Это мало чем поможет, поскольку вы потеряете все параметры и конфигурации системного и серверного уровней, в том числе учетные записи, разрешения и все объекты серверного уровня.
- Переустановите SQL Server 2012 и присоедините все пользовательские базы данных. Это может не сработать, поскольку вы будете испытывать те же проблемы, что и при переформировании базы данных Master.
Предположим, что все попытки войти в систему под учетной записью SA потерпели неудачу. Пора вызвать подкрепление: группу поддержки продуктов Microsoft. Вот что могут предложить ее сотрудники.
В SQL Server 2012 имеется лазейка, позволяющая получить доступ SYSADMIN к производственным SQL Server. Однако требуется, чтобы ваша учетная запись Windows входила в группу локальных администраторов систем Windows Server, на которых выполняются сервисы SQL Server 2012.
SQL Server позволяет любому члену группы Local Administrators подсоединяться к SQL Server с привилегиями SYSADMIN.
Ниже приведены операции, которые нужно выполнить, чтобы взять SQL Server 2012 под контроль как SA.
1. | Запустите экземпляр SQL Server 2012 в однопользовательском режиме из командной строки, причем вы должны зайти в окно командной строки как администратор. Можно также запустить SQL Server 2012 в минимальной конфигурации, при этом SQL Server тоже будет работать в однопользовательском режиме. |
2. | В командной строке (Run as Administrator) наберите: SQLServr.Exe –m (or SQLServr.exe –f), чтобы запустить ядро баз данных SQL Server 2012. Не закрывайте это окно командной строки. Возможно, SQLServr.exe находится в папке Binn, указанной в переменной окружения PATH. Если папка Binn SQL Server 2012 не указана в PATH, всегда можно перейти в папку Binn с SQL Server 2012 по структуре каталогов вашего компьютера. Обычно папка Binn находится по пути C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>. |
3. | Как только вы запустите сервис SQL Server 2012 в однопользовательском режиме или в минимальной конфигурации, можно будет открыть еще одно окно командной строки под администратором и выполнить в нем команду SQLCMD, чтобы подсоединиться к экземпляру SQL Server 2012: |
SQLCMD –S <Имя сервера\Имя экземпляра>
Например: SQLCMD –S "SALEEMHAKANI"
| Итак, вы вошли в SQL Server. Обратите внимание, что вы вошли как администратор в экземпляр SQL Server 2012 SALEEMHAKANI. |
4. | После входа в SQL Server 2012 из окна командной строки с помощью SQLCMD вы имеете возможность создать учетную запись и предоставить ей любые разрешения серверного уровня. Создайте учетную запись SQL Server 2012 с именем " SQL_SALEEM ", а затем добавьте ее в серверную роль SA. Чтобы создать учетную запись из командной строки после выполнения пункта 3, выполните следующий код: |
1> CREATE LOGIN '<Имя_учетной_записи>' with PASSWORD='<Пароль>'
2> GO
1> CREATE LOGIN SQL_SALEEM WITH PASSWORD='$@L649$@m'
2> GO
| После создания учетной записи "SQL_SALEEM" добавьте ее в серверную роль SYSADMIN экземпляра SQL Server 2012. В том же окне командной строки выполните следующий оператор: |
1> SP_ADDSRVROLEMEMBER '<Имя_учетной_записи>','SYSADMIN'
2>go
1> SP_ADDSRVROLEMEMBER SQL_SALEEM,'SYSADMIN'
2> GO
| Приведенный выше оператор предоставляет привилегии SYSADMIN учетной записи "SQL_SALEEM". |
5. | После успешного выполнения предыдущих операций остановите сервисы SQL Server и перезапустите их с обычными параметрами. Теперь уже не нужны параметры –f или –m. |
6. | Войдите в SQL Server 2012 Management Studio. Вы также можете зайти из окна командной строки, указав учетную запись "SQL_SALEEM" и соответствующий пароль. Теперь вы имеете доступ SA к своему экземпляру SQL Server 2012. Вы можете поменять пароль SA и изменить параметры своего производственного SQL Server. |
Совершенно нормально время от времени забывать пароль, и это не значит, что возникнут даже небольшие неудобства. Описанные мной меры восстановления позволят вам обеспечить работоспособность SQL Server без простоев и дешифрации паролей.