MSSQL Alwayson Sync Login

MSSQL Alwayson Sync Login, MSSQL high availability çözümlerinden en çok kullanılan alwayson  da bir sunucuya kullanıcı oluşturulduğundan diğer tarafta oluşturulmayacaktır.

Aşağıdaki komut yardımı ile primary de oluşturulan kullanıcıyı diğer tarafa otomatik olarak oluşturabilirsiniz.

USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [ddl_login_pswd]
ON ALL SERVER
FOR ALTER_LOGIN
AS
DECLARE @secondary_script NVARCHAR(MAX)
DECLARE @text NVARCHAR(MAX)= (EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'nvarchar(max)'))
if(@text like '%PASSWORD%')
BEGIN
DECLARE @LoginName NVARCHAR(1000)=(EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]', 'nvarchar(100)'))
DECLARE @Password NVARCHAR(512)=(select sys.fn_varbintohexstr((SELECT password_hash FROM sys.sql_logins WHERE name=@LoginName)))
SET @secondary_script=CONCAT('EXEC (''ALTER LOGIN ', @LoginName , ' WITH PASSWORD=', @Password , ' HASHED, CHECK_POLICY=OFF'') AT [secondary_sunucu]  ')
EXEC sp_Executesql @secondary_script
SET @secondary_script=CONCAT('EXEC (''ALTER LOGIN ', @LoginName ,' WITH CHECK_POLICY=ON'') AT [secondary_sunucu]  ')
EXEC sp_Executesql @secondary_script
END
GO
DISABLE TRIGGER [ddl_login_pswd] ON ALL SERVER
GO

Loading