Delen via


Replicatie configureren met Microsoft Entra-verificatie - SQL Server ingeschakeld door Azure Arc

van toepassing op: SQL Server 2022 (16.x)

Dit artikel bevat stappen voor het configureren van transactionele en momentopnamereplicatie met behulp van verificatie met Microsoft Entra-id (voorheen Azure Active Directory) voor Azure-Arc ingeschakelde SQL Server.

Overzicht

Microsoft Entra-verificatieondersteuning voor replicatie is geïntroduceerd in cumulatieve update 6 voor SQL Server 2022 en algemeen beschikbaar gesteld in cumulatieve update 12. Wanneer u Microsoft Entra-verificatie gebruikt voor replicatie, is de enige andere stap de eerste stap. Maak specifiek een Microsoft Entra-login aan en verleen sysadmin-machtigingen.

Gebruik daarna de Microsoft Entra-aanmelding in de opgeslagen replicatieprocedures om transactionele replicatie of momentopnamereplicatie te configureren zoals u dat normaal zou doen.

Opmerking

Vanaf SQL Server 2022 CU 6 schakelt u Microsoft Entra-verificatie voor replicatie uit met behulp van sessietraceringsvlag 11561.

Vereiste voorwaarden

Als u replicatie met Microsoft Entra-verificatie wilt configureren, moet u voldoen aan de volgende vereisten:

  • Zorg ervoor dat SQL Server 2022 is ingeschakeld door Azure-Arc vanaf cumulatieve update 6.
  • Microsoft Entra-verificatie geconfigureerd voor elke server in de replicatietopologie. Bekijk Zelfstudie: Microsoft Entra-verificatie instellen voor SQL Server voor meer informatie.
  • SQL Server Management Studio (SSMS) v19.1 of hoger.
  • De gebruiker die verbinding maakt met de uitgever en abonnee is lid van de vaste serverfunctie sysadmin .
  • De verbinding moet worden versleuteld met behulp van een certificaat van een vertrouwde certificeringsinstantie (CA) of een zelfondertekend certificaat.
    • Als een zelfondertekend certificaat wordt gebruikt, moet het worden geïmporteerd op de clientcomputer en worden geïnstalleerd in de lijst met vertrouwde certificaten voor de client om de SQL Server te vertrouwen. Deze vereiste kan niet worden omzeild door de optie Voor vertrouwensservercertificaten in SQL Server Management Studio (SSMS) te selecteren, omdat deze niet werkt met replicatie.

Beperkingen

Het configureren van uw replicatie met Microsoft Entra-verificatie heeft momenteel de volgende beperkingen:

  • Het is momenteel alleen mogelijk om replicatie te configureren met behulp van Transact-SQL (T-SQL) en de replicatiestoredprocedures, de Wizard voor Replicatie in SSMS v19.1 of hoger, of Azure Data Studio. Het is momenteel niet mogelijk om replicatie te configureren met RMO-replicatieobjecten of andere opdrachtregeltalen.
  • Elke server in de replicatietopologie moet zich ten minste op SQL Server 2022 CU 6 bevinden. Eerdere versies van SQL Server worden niet ondersteund.

SQL-aanmelding maken vanuit Microsoft Entra-id

Maak de Microsoft Entra-aanmelding en geef deze de sysadmin rol.

Als u de Microsoft Entra-aanmelding wilt maken en deze wilt toewijzen als een sysadmin, gebruikt u de volgende Transact-SQL (T-SQL):

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

Als u bijvoorbeeld de aanmeldingsnaam wilt newuser@tenant.comtoevoegen, gebruikt u deze opdracht:

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

Distributiedatabase maken

Gebruik sp_adddistributiondb om de distributiedatabase te maken.

Hier volgt een voorbeeldscript voor het maken van uw distributiedatabase op uw distributeur:

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 

In het volgende voorbeeld wordt de tabel UIProperties in de distributiedatabase gemaakt en wordt de SnapshotFolder-eigenschap ingesteld, zodat de snapshot-agent weet waar hij replicatiemomentopnamen moet schrijven.

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' 

Met het volgende script configureert u de Uitgever voor het gebruik van de Distributor-database en definieert u de aanmelding van de AD-gebruiker, samen met een wachtwoord dat moet worden gebruikt voor replicatie:

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' 

Replicatie inschakelen

Gebruik sp_replicationdboption om replicatie in te schakelen in uw Publisher-database, zoals testdbin het volgende voorbeeld:

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

De publicatie toevoegen

Gebruik sp_addpublication om de publicatie toe te voegen.

U kunt transactionele of momentopname-replicatie configureren.

Volg deze stappen om een transactionele replicatie te maken.

Configureer eerst de logboeklezeragent:

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 

Maak vervolgens de transactionele publicatie:

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' 

Maak vervolgens de momentopname-agent en sla de momentopnamebestanden voor de Publisher op door de Microsoft Entra-aanmelding voor @publisher_login te gebruiken en een wachtwoord voor de Publisher te definiëren.

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>' 

Voeg tot slot het artikel TestPub toe aan de publicatie:

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' 

Abonnement maken

Gebruik sp_addsubscription om uw abonnee toe te voegen en gebruik vervolgens sp_addpushsubscription_agent op de Uitgever om een push-abonnement te maken of sp_addpullsubscription_agent op de abonnee om een pull-abonnement te maken. Gebruik de Microsoft Entra-login voor de @subscriber_login.

Met het volgende voorbeeldscript wordt het abonnement toegevoegd:

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 

Met het volgende voorbeeldscript wordt een push-abonnementsagent toegevoegd bij 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' 

Opgeslagen replicatieprocedures

De volgende parameters in deze opgeslagen replicatieprocedures zijn gewijzigd in CU 6 voor SQL Server 2022 ter ondersteuning van Microsoft Entra-verificatie voor replicatie:

De volgende waarden definiëren de beveiligingsmodi voor deze opgeslagen procedures:

  • 0 geeft SQL Server-verificatie op.
  • 1 geeft Windows-verificatie op.
  • 2 specificeert Microsoft Entra-wachtwoordverificatie vanaf SQL Server 2022 CU 6.
  • 3 geeft geïntegreerde Microsoft Entra-verificatie aan vanaf SQL Server 2022 CU 6.
  • 4 geeft Microsoft Entra-tokenverificatie op die begint met SQL Server 2022 CU 6.

Volgende stappen

Raadpleeg SQL Server-replicatie en Microsoft Entra-verificatie voor SQL Server voor meer informatie