Назад | Перейти на главную страницу

Утерян пароль sa SQL Server - нет аутентификации Windows - новые роли, созданные в командной строке, НЕ появляются

Наши сотрудники службы поддержки изменили пароль sa для нашей базы данных SQL Server. Они отключили проверку подлинности Windows. Потом парень, который делал работу, ушел.

Итак, у нас есть производственная база данных, для которой не выполняется резервное копирование, и мы заблокированы. И данные о производстве за 10 лет в нем.

Я пробовал обычный прием добавления новых ролей из командной строки SQLCmd.

  1. Перезапустить MSSQLSERVER в однопользовательском режиме

  2. из командной строки MS-DOS введите «MSSql -S 127.0.0.1 \ MSSQLSERVER», а затем в командной строке:

    USE [master]
    GO
    
    CREATE LOGIN [BUILTIN\Administrators] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
    GO
    
    EXEC master..sp_addsrvrolemember @loginame = 'BUILTIN\Administrators', @rolename = 'sysadmin'
    GO 
    
  3. Перезапустите MSSQLSERVER как обычно

Но в SQL Management Studio нигде не видно новых пользователей и новых назначений ролей. Пользователи

Если я перейду на master.sys.server_principals, я не увижу новые логины. таблица server_principals

Если я попытаюсь добавить роль существующему пользователю в Management Studio, он сообщит мне, что у меня нет разрешений. Я вошел в систему как администратор Windows, но не с именем sa (потому что это пароль, который я пытаюсь восстановить или сбросить): Нет разрешения

Я возвращаюсь в командную строку MSSql и повторно ввожу приведенные выше команды, и в нем говорится, что принципал уже существует. принципал существует

На машине нет другого экземпляра SQL. В нашей сети нет другого сервера. Я нигде не вижу сообщений об ошибках. Я делаю это с полными правами администратора в Windows Server 2012 R2.

Почему командная строка MSSql создает логины и назначает роли, сообщая, что все в порядке, но в SQL Server Management Studio нет сообщений об ошибках и ничего не видно. Я перезапустил MSSQLSERVER. Я перезапустил Management Studio.

Думаю, я схожу с ума. У кого-нибудь есть идеи, что делать ???

Я бы порекомендовал выполнить указанные ниже действия, чтобы восстановить доступ к своим данным.

  1. Верните экземпляр SQL Server в режим проверки подлинности в смешанном режиме.

Вы можете сделать это, остановив экземпляр SQL Server и изменив ключ реестра. Изменение этого реестра - это все, что SSMS сделала, когда администратор базы данных формы изменил его. Нет проблем с изменением этого раздела реестра, чтобы восстановить его, просто убедитесь, что экземпляр не запущен.

Путь к ключу реестра должен быть примерно таким: HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQLSERVER\MSSQLServer\LoginMode. Теперь вы должны обнаружить, что для проверки подлинности Windows этот параметр равен 1. Измените это значение на 2 для смешанного режима.

  1. Установите модуль PowerShell на сервер или клиентский компьютер из галереи PowerShell под названием dbatools.

После того, как вы установили модуль, вы можете использовать команду: Сбросить-DbaAdmin. Вам будет предложено сбросить учетную запись «sa» и снова получить доступ к экземпляру.

#Install from the gallery
Install-Module dbatools

# Import module and run command
Import-Module dbatools
Reset-DbaAdmin -SqlInstance YourServerName

У меня это сработало пару раз, когда я это делал. Вы пробовали сбросить пароль sa, когда сервер находится в одноразовом режиме?