Freigeben über


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 SQL Server, die von Azure Arc aktiviert sind.

Übersicht

Microsoft Entra-Authentifizierungsunterstützung für die Replikation wurde in SQL Server 2022 (16.x) kumulatives Update (CU) 6 eingeführt und allgemein in CU 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. Lernprogramm: Einrichten der Microsoft Entra-Authentifizierung für SQL Server mit App-Registrierung, um mehr zu erfahren.
  • Eine unterstützte Version von SQL Server Management Studio (SSMS).
  • 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 und dem Replikations-Assistenten in SSMS v19.1 oder höher 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;
EXECUTE 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;
EXECUTE 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:

EXECUTE 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))
)
    EXECUTE sp_updateextendedproperty N'SnapshotFolder', N' C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER22\MSSQL\DATA', 'user', dbo, 'table', 'UIProperties';
ELSE
    EXECUTE 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:

EXECUTE 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:

EXECUTE 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];
EXECUTE [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;

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];
EXECUTE 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];
EXECUTE 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];
EXECUTE 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:

EXECUTE 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 SQL Server 2022 (16.x) CU 6 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.