Dela via


Konfigurera replikering med Microsoft Entra-autentisering – SQL Server aktiverat av Azure Arc

Gäller för: SQL Server 2022 (16.x)

Den här artikeln innehåller steg för att konfigurera transaktions- och ögonblicksbildreplikering med hjälp av autentisering med Microsoft Entra-ID (tidigare Azure Active Directory) för Azure-Arc aktiverad SQL Server.

Översikt

Microsoft Entra-autentiseringsstöd för replikering introducerades i kumulativ uppdatering 6 för SQL Server 2022 och blev allmänt tillgängligt i kumulativ uppdatering 12. När du använder Microsoft Entra-autentisering för replikering är det enda olika steget det första steget. Mer specifikt skapar du en Microsoft Entra-inloggning och beviljar sysadmin-behörigheter.

Därefter använder du Microsoft Entra-inloggningen i de lagrade procedurerna för replikering för att konfigurera transaktions- eller ögonblicksbildreplikering som vanligt.

Anmärkning

Från och med SQL Server 2022 CU 6 inaktiverar du Microsoft Entra-autentisering för replikering med hjälp av sessionsspårningsflagga 11561.

Förutsättningar

För att konfigurera replikering med Microsoft Entra-autentisering måste du uppfylla följande krav:

  • Ha SQL Server 2022 aktiverat av Azure-Arc från och med kumulativ uppdatering 6.
  • Konfigurerad Microsoft Entra-autentisering för varje server i replikeringstopologin. Läs självstudien: Konfigurera Microsoft Entra-autentisering för SQL Server om du vill veta mer.
  • SQL Server Management Studio (SSMS) v19.1 eller senare.
  • Användaren som ansluter till utgivaren och prenumeranten är medlem i den fasta sysadmin-serverrollen .
  • Anslutningen måste krypteras med hjälp av ett certifikat från en betrodd certifikatutfärdare (CA) eller ett självsignerat certifikat.
    • Om ett självsignerat certifikat används måste det importeras till klientdatorn och installeras i listan Betrodda certifikat för att klienten ska kunna lita på SQL Server. Det här kravet kan inte kringgås genom att välja alternativet Förtroendeservercertifikat i SQL Server Management Studio (SSMS) eftersom det inte fungerar med replikering.

Begränsningar

Konfigurationen av din replikering med Microsoft Entra-autentisering har för närvarande följande begränsningar:

  • För närvarande är det bara möjligt att konfigurera replikering med hjälp av Transact-SQL (T-SQL) och de lagrade procedurerna för replikering, replikeringsguiden i SSMS v19.1 eller senare eller Azure Data Studio. Det går för närvarande inte att konfigurera replikering med RMO-replikeringsobjekt eller andra kommandoradsspråk.
  • Varje server i replikeringstopologin måste finnas på minst SQL Server 2022 CU 6. Tidigare versioner av SQL Server stöds inte.

Skapa SQL-inloggning från Microsoft Entra-ID

Skapa Microsoft Entra-inloggningen och ge den sysadmin rollen.

Om du vill skapa Microsoft Entra-inloggningen och tilldela den som ett sysadminanvänder du följande Transact-SQL-kommando (T-SQL):

USE master
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
EXEC sp_addsrvrolemember @loginame='login_name', @rolename='sysadmin' 

Om du till exempel vill lägga till inloggningsnamnet för newuser@tenant.comanvänder du det här kommandot:

USE master
CREATE LOGIN [newuser@tenant.com] FROM EXTERNAL PROVIDER
EXEC sp_addsrvrolemember @loginame='newuser@tenant.com', @rolename='sysadmin' 

Skapa distributionsdatabas

Använd sp_adddistributiondb för att skapa distributionsdatabasen.

Följande är ett exempelskript för att skapa distributionsdatabasen på din distributör:

EXEC sp_adddistributiondb @database = N'distribution_db', 
@data_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER22\MSSQL\DATA', 
@log_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER22\MSSQL\DATA', 
@log_file_size = 2, @min_distretention = 0, @max_distretention = 72, 
@history_retention = 48, @deletebatchsize_xact = 5000, 
@deletebatchsize_cmd = 2000, @security_mode = 1 

I följande exempel skapas tabellen UIProperties i distributionsdatabasen och egenskapen anges SnapshotFolder så att ögonblicksbildsagenten vet var replikeringsögonblicksbilder ska skrivas:

USE [distribution_db] 
IF (not exists (SELECT * FROM sysobjects WHERE NAME = 'UIProperties' and TYPE = 'U ')) 
CREATE TABLE UIProperties(id int) 
IF (exists(SELECT * FROM::fn_listextendedproperty('SnapshotFolder', 'user', 'dbo', 'table', 'UIProperties', null, null))) 
EXEC sp_updateextendedproperty N'SnapshotFolder', N' C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER22\MSSQL\DATA', 
'user', dbo, 'table', 'UIProperties' 
ELSE 

EXEC sp_addextendedproperty N'SnapshotFolder', N' C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER22\MSSQL\DATA', 
'user', dbo, 'table', 'UIProperties' 

Följande skript konfigurerar Publisher att använda databasen Distributor och definierar AD-användarens inloggning, tillsammans med ett lösenord som ska användas för replikering:

EXEC sp_adddistpublisher @publisher = N'publisher_db', @distribution_db = N'distribution_db', 
@security_mode = 0, @login = N'newuser@tenant.com', @password = N'password', 
@working_directory = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER22\MSSQL\ReplData', 
@trusted = N'false', @thirdparty_flag = 0, @publisher_type = N'MSSQLSERVER' 

Aktivera replikering

Använd sp_replicationdboption för att aktivera replikering i Publisher-databasen, till exempel testdb, som i följande exempel:

EXEC sp_replicationdboption @dbname = N'testdb', @optname = N'publish', @value = N'true' 

Lägg till publikationen

Använd sp_addpublication för att lägga till publikationen.

Du kan konfigurera transaktions- eller ögonblicksbildreplikering.

Följ de här stegen för att skapa en transaktionsreplikation.

Konfigurera först loggläsaragenten:

USE [AdventureWorksDB] 
EXEC [AdventureWorksDB].sys.sp_addlogreader_agent @job_login = null, @job_password = null, 
@publisher_security_mode = 2, @publisher_login = N'newuser@tenant.com', 
@publisher_password = N'<password>', @job_name = null 
GO 

Skapa sedan transaktionspublikationen:

use [AdventureWorksDB] 
exec sp_addpublication @publication = N'AdvWorksProducTrans', 
@description = N'Publication of database ''AdventureWorksDB'' from Publisher 'N'publisher_db''.', 
@sync_method = N'concurrent', @retention = 0, @allow_push = N'true', @allow_pull = N'true', 
@allow_anonymous = N'false', @enabled_for_internet = N'false', @snapshot_in_defaultfolder = N'true', 
@compress_snapshot = N'false', @ftp_port = 21, @allow_subscription_copy = N'false', 
@add_to_active_directory = N'false', @repl_freq = N'continuous', @status = N'active', 
@independent_agent = N'true', @immediate_sync = N'false', @allow_sync_tran = N'true', 
@allow_queued_tran = N'true', @allow_dts = N'false', @replicate_ddl = 1, 
@allow_initialize_from_backup = N'false', @enabled_for_p2p = N'false', 
@enabled_for_het_sub = N'false', @conflict_policy = N'pub wins' 

Skapa därefter ögonblicksbildsagenten och lagra ögonblicksbildfilerna för utgivaren genom att använda Microsoft Entra-inloggningen för @publisher_login och definiera ett lösenord för utgivaren.

use [AdventureWorksDB] 
exec sp_addpublication_snapshot @publication = N'AdvWorksProducTrans', @frequency_type = 1,
 @frequency_interval = 1, @frequency_relative_interval = 1, @frequency_recurrence_factor = 0, 
@frequency_subday = 8, @frequency_subday_interval = 1, @active_start_time_of_day = 0, 
@active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, 
@job_login = null, @job_password = null, @publisher_security_mode = 2, 
@publisher_login = N'newuser@tenant.com', @publisher_password = N'<password>' 

Lägg slutligen till artikeln TestPub i publikationen:

use [AdventureWorksDB] 
exec sp_addarticle @publication = N'AdvWorksProducTrans', @article = N'testtable', 
@source_owner = N'dbo', @source_object = N'testtable', @type = N'logbased', 
@description = null, @creation_script = null, @pre_creation_cmd = N'drop', 
@schema_option = 0x000000000803509D, @identityrangemanagementoption = N'manual', 
@destination_table = N'testtable', @destination_owner = N'dbo', @vertical_partition = N'false' 

Skapa en prenumeration

Använd sp_addsubscription för att lägga till din prenumerant och använd sedan antingen sp_addpushsubscription_agent på Publisher för att skapa en push-prenumeration eller sp_addpullsubscription_agent på prenumeranten för att skapa en pull-prenumeration. Använd Microsoft Entra-inloggningen för @subscriber_login.

Följande exempelskript lägger till prenumerationen:

USE [testdb] 
EXEC sp_addsubscription @publication = N'testpub', @subscriber = N'<subscription_server>', 
@destination_db = N'testdb', @subscription_type = N'Push', @sync_type = N'automatic', 
@article = N'all', @update_mode = N'read only', @subscriber_type = 0 

Följande exempelskript lägger till en push-prenumerationsagent i Publisher:

EXEC sp_addpushsubscription_agent @publication = N'testpub', @subscriber = N'<subscription server.', 
@subscriber_db = N'testdb', @job_login = null, @job_password = null, @subscriber_security_mode = 2, 
@subscriber_login = N'newuser@tenant.com', @subscriber_password = 'password', @frequency_type = 64, 
@frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, 
@frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, 
@active_end_time_of_day = 235959, @active_start_date = 20220406, @active_end_date = 99991231, @enabled_for_syncmgr = N'False', @dts_package_location = N'Distributor' 

Lagrade procedurer för replikering

Följande parametrar i dessa replikerings lagrade procedurer ändrades i CU 6 för SQL Server 2022 för att stödja Microsoft Entra-autentisering för replikering:

Följande värden definierar säkerhetslägena för dessa lagrade procedurer:

  • 0 anger SQL Server-autentisering.
  • 1 anger Windows-autentisering.
  • 2 anger Microsoft Entra-lösenordsautentisering från och med SQL Server 2022 CU 6.
  • 3 anger Microsoft Entra-integrerad autentisering från och med SQL Server 2022 CU 6.
  • 4 anger Microsoft Entra-tokenautentisering från och med SQL Server 2022 CU 6.

Nästa steg

Mer information finns i SQL Server Replication och Microsoft Entra-autentisering för SQL Server