Konfigurieren der Replikation mit Microsoft Entra-Authentifizierung – SQL Server, aktiviert durch Azure Arc

Gilt für: SQL Server 2022 (16.x)

Dieser Artikel enthält Schritte zum Konfigurieren der Transaktions- und Momentaufnahmereplikation mithilfe der Authentifizierung mit Microsoft Entra ID (vormals Azure Active Directory) für Azure-Arc-aktivierte SQL Server.

Übersicht

Die Unterstützung der Microsoft Entra-Authentifizierung für die Replikation wurde im kumulativen Update 6 für SQL Server 2022 eingeführt und allgemein im kumulativen Update 12 verfügbar gemacht. Wenn Sie die Microsoft Entra-Authentifizierung für die Replikation verwenden, ist der einzige unterschiedliche Schritt der erste Schritt. Insbesondere die Erstellung einer Microsoft Entra-Anmeldung und das Erteilen von sysadmin-Berechtigungen.

Verwenden Sie danach die Microsoft Entra-Anmeldung in den gespeicherten Replikationsprozeduren, um die Transaktions- oder Momentaufnahmereplikation wie gewohnt zu konfigurieren.

Hinweis

Deaktivieren Sie ab SQL Server 2022 CU 6 die Microsoft Entra-Authentifizierung für die Replikation mithilfe des Sitzungsablaufverfolgungsflags 11561.

Voraussetzungen

Um die Replikation mit der Microsoft Entra-Authentifizierung zu konfigurieren, müssen Sie die folgenden Voraussetzungen erfüllen:

  • SQL Server 2022 muss Azure-Arc-aktiviert sein, ab dem kumulativen Update 6.
  • Die Microsoft Entra-Authentifizierung muss für jeden Server in der Replikationstopologie konfiguriert sein. Sehen Sie sich das Tutorial: Einrichten der Microsoft Entra-Authentifizierung für SQL Server für weitere Informationen an.
  • SQL Server Management Studio (SSMS) v19.1 oder höher oder Azure Data Studio.
  • Die Benutzer*innen, die eine Verbindung mit Herausgeber*in und Abonnent*in herstellen, sind Mitglieder der festen Serverrolle sysadmin ist.
  • Die Verbindung muss mit einem Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA) oder einem selbstsignierten Zertifikat verschlüsselt werden.
    • Wenn ein selbstsigniertes Zertifikat verwendet wird, muss es auf den Clientcomputer importiert und in der Liste der vertrauenswürdigen Zertifikate installiert werden, damit der Client dem SQL Server vertraut. Diese Anforderung kann nicht umgangen werden, indem die Option Serverzertifikat vertrauen in SQL Server Management Studio (SSMS) ausgewählt wird, da sie nicht mit der Replikation funktioniert.

Begrenzungen

Das Konfigurieren Ihrer Replikation mit der Microsoft Entra-Authentifizierung hat derzeit die folgenden Einschränkungen:

  • Derzeit ist es nur möglich, die Replikation mit Transact-SQL (T-SQL) und den gespeicherten Prozeduren der Replikation, dem Replikations-Assistenten in SSMS v19.1 oder höher oder Azure Data Studio zu konfigurieren. Es ist derzeit nicht möglich, die Replikation mit RMO-Replikationsobjekten oder anderen Befehlszeilensprachen zu konfigurieren.
  • Jeder Server in der Replikationstopologie muss sich mindestens auf SQL Server 2022 CU 6 befinden. Frühere Versionen von SQL Server werden nicht unterstützt.

Erstellen einer SQL-Anmeldung aus einer Microsoft Entra ID

Erstellen Sie die Microsoft Entra-Anmeldung, und gewähren Sie ihr die sysadmin-Rolle.

Verwenden Sie den folgenden Transact-SQL-Befehl (T-SQL), um die Microsoft Entra-Anmeldung zu erstellen und ihr sysadmin zuzuweisen:

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

Wenn Sie beispielsweise den Anmeldenamen für newuser@tenant.com hinzufügen möchten, verwenden Sie diesen Befehl:

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

Verteilungsdatenbank erstellen

Verwenden Sie sp_adddistributiondb, um die Verteilungsdatenbank zu erstellen.

Im Folgenden sehen Sie ein Beispielskript zum Erstellen Ihrer Verteilungsdatenbank auf Ihrem Distributor:

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 

Im folgenden Beispiel wird die Tabelle UIProperties in der Verteilungsdatenbank erstellt und die SnapshotFolder-Eigenschaft festgelegt, sodass der Momentaufnahmen-Agent weiß, wo Replikationsmomentaufnahmen geschrieben werden sollen:

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' 

Das folgende Skript konfiguriert den Herausgeber die Verwendung der Verteilerdatenbank und definiert die AD-Benutzeranmeldung zusammen mit einem Passwort, das für die Replikation verwendet werden soll:

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' 

Aktivieren der Replikation

Verwenden Sie sp_replicationdboption, um die Replikation in Ihrer Herausgeber-Datenbank zu aktivieren, wie z. B. testdb, wie im folgenden Beispiel gezeigt:

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

Hinzufügen der Veröffentlichung

Verwenden Sie sp_addpublication, um die Veröffentlichung hinzuzufügen.

Sie können die Transaktions- oder Momentaufnahmereplikation konfigurieren.

Gehen Sie folgendermaßen vor, um eine Transaktionsreplikation zu erstellen.

Konfigurieren Sie zunächst den Protokollleser-Agenten:

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 

Erstellen Sie als Nächstes die Transaktionsveröffentlichung:

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' 

Erstellen Sie dann den Momentaufnahmen-Agenten, und speichern Sie die Momentaufnahmen-Dateien für den Herausgeber, indem Sie die Microsoft Entra-Anmeldung für die @publisher_login verwenden und ein Passwort für den Herausgeber definieren:

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

Fügen Sie schließlich den Artikel TestPub zur Veröffentlichung hinzu:

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' 

Erstellen von Abonnements

Verwenden Sie sp_addsubscription, um Ihren Abonnenten hinzuzufügen, und verwenden Sie dann entweder sp_addpushsubscription_agent im Herausgeber, um ein Pushabonnement zu erstellen, oder sp_addpullsubscription_agent im Abonnenten, um ein Pullabonnement zu erstellen. Verwenden Sie die Microsoft Entra-Anmeldung für die @subscriber_login.

Das folgende Beispielskript fügt das Abonnement hinzu:

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 

Das folgende Beispielskript fügt einen Pushabonnement-Agenten im Herausgeber hinzu:

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' 

Gespeicherte Prozeduren für die Replikation

Die folgenden Parameter in diesen gespeicherten Replikationsprozeduren wurden in CU 6 für SQL Server 2022 geändert, um die Microsoft Entra-Authentifizierung für die Replikation zu unterstützen:

Die folgenden Werte definieren die Sicherheitsmodi für diese gespeicherten Prozeduren:

  • 0 gibt die SQL Server-Authentifizierung an.
  • 1 Gibt die Windows-Authentifizierung an.
  • 2 gibt die Microsoft Entra-Kennwortauthentifizierung ab SQL Server 2022 CU 6 an.
  • 3 gibt die integrierte Microsoft Entra-Authentifizierung ab SQL Server 2022 CU 6 an.
  • 4 gibt die Microsoft Entra-Tokenauthentifizierung ab SQL Server 2022 CU 6 an.

Nächste Schritte

Weitere Informationen finden Sie unter SQL Server-Replikation und Microsoft Entra-Authentifizierung für SQL Server