Наши сотрудники службы поддержки изменили пароль sa для нашей базы данных SQL Server. Они отключили проверку подлинности Windows. Потом парень, который делал работу, ушел.
Итак, у нас есть производственная база данных, для которой не выполняется резервное копирование, и мы заблокированы. И данные о производстве за 10 лет в нем.
Я пробовал обычный прием добавления новых ролей из командной строки SQLCmd.
Перезапустить MSSQLSERVER в однопользовательском режиме
из командной строки 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
Перезапустите 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.
Думаю, я схожу с ума. У кого-нибудь есть идеи, что делать ???
Я бы порекомендовал выполнить указанные ниже действия, чтобы восстановить доступ к своим данным.
Вы можете сделать это, остановив экземпляр SQL Server и изменив ключ реестра. Изменение этого реестра - это все, что SSMS сделала, когда администратор базы данных формы изменил его. Нет проблем с изменением этого раздела реестра, чтобы восстановить его, просто убедитесь, что экземпляр не запущен.
Путь к ключу реестра должен быть примерно таким: HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQLSERVER\MSSQLServer\LoginMode
. Теперь вы должны обнаружить, что для проверки подлинности Windows этот параметр равен 1. Измените это значение на 2
для смешанного режима.
После того, как вы установили модуль, вы можете использовать команду: Сбросить-DbaAdmin. Вам будет предложено сбросить учетную запись «sa» и снова получить доступ к экземпляру.
#Install from the gallery
Install-Module dbatools
# Import module and run command
Import-Module dbatools
Reset-DbaAdmin -SqlInstance YourServerName
У меня это сработало пару раз, когда я это делал. Вы пробовали сбросить пароль sa, когда сервер находится в одноразовом режиме?