Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
-
sp_addpullsubscription_agent:
@distributor_security_mode -
sp_addpushsubscription_agent:
@subscriber_security_mode -
sp_addmergepullsubscription_agent:
@publisher_security_mode,@distributor_security_mode -
sp_addmergepushsubscription_agent:
@subscriber_security_mode,@publisher_security_mode -
sp_addlogreader_agent:
@publisher_security_mode -
sp_changelogreader_agent:
@publisher_security_mode -
sp_addpublication_snapshot:
@publisher_security_mode -
sp_changepublication_snapshot:
@publisher_security_mode
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