У нас есть 2 сервера в группе AlwaysOn.
Хотя учетные записи пользователей в каждой синхронизированной базе данных существуют на обоих серверах, логины уровня экземпляра базы данных существуют только на одном из серверов. Т.е. DBINSTANCE-> Security-> Logins отсутствуют на одном сервере.
Поэтому, когда происходит аварийное переключение, я получаю сбои входа на второй сервер (на котором нет соответствующих имен входа на уровне экземпляра).
Как мне преодолеть эту проблему? Я должен был настроить учетную запись пользователя особым образом?
Ответы:
Насколько я понимаю, если вы не используете автономные базы данных , вам нужно будет убедиться, что логины созданы в других экземплярах вручную.
Что-то вроде этого скрипта от SQLSoldier , изначально размещенного как Transfer Logins to Database Mirror , должно сработать .
источник
Msg 7202, Level 11, State 2, Line 1 Could not find server 'otherserver' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Вы должны либо использовать автономную базу данных, либо заново создать пользователей на других серверах с тем же хэшем пароля и SID.
Сценарий для этого предоставляется Microsoft: как передавать логины и пароли между экземплярами SQL Server
Решение Марка было частично правильным, однако его рекомендуемое решение было для зеркальных баз данных, в отличие от AlwaysOn, о котором спрашивают вопросы.
источник
Я отвечаю на пост через долгое время, но он может помочь кому-то еще с подобной проблемой. PowerShell можно использовать для копирования имен входа из первичной реплики во вторичные реплики. Подробности можно найти здесь https://maq.guru/synchronizing-sql-server-logins-in-an-always-on-availability-group/ .
Полное раскрытие: я владею вышеуказанным сайтом.
Скрипт PowerShell:
источник
Вы должны использовать учетные записи домена Windows и создавать их в каждом случае. Поскольку идентификатор безопасности управляется активным каталогом, вы сможете получить доступ ко всем репликам, входящим в группу доступности, если имя входа существует в основной реплике. Другой вариант, вы должны использовать сертификат.
источник