Udostępnij za pomocą


Konfiguracja replikacji przy użyciu uwierzytelniania Microsoft Entra — program SQL Server obsługiwany przez Azure Arc

Dotyczy: SQL Server 2022 (16.x)

Ten artykuł opisuje kroki konfigurowania replikacji transakcyjnej i migawkowej z wykorzystaniem uwierzytelniania za pomocą Microsoft Entra ID (dawniej Azure Active Directory) dla serwera SQL Azure-Arc.

Przegląd

Obsługa uwierzytelniania Microsoft Entra dla replikacji została wprowadzona w Aktualizacji Zbiorczej 6 dla programu SQL Server 2022 i stała się publicznie dostępna w Aktualizacji Zbiorczej 12. W przypadku korzystania z uwierzytelniania Microsoft Entra na potrzeby replikacji jedynym innym krokiem jest pierwszy krok. W szczególności utwórz nazwę logowania w usłudze Microsoft Entra i przyznaj uprawnienia administratora systemu.

Następnie użyj logowania Microsoft Entra w procedurach składowanych replikacji, aby skonfigurować replikację transakcyjną lub replikację migawkową, tak jak zwykle.

Uwaga / Notatka

Począwszy od programu SQL Server 2022 CU 6, wyłącz uwierzytelnianie Microsoft Entra na potrzeby replikacji przy użyciu flagi śledzenia sesji 11561.

Wymagania wstępne

Aby skonfigurować replikację przy użyciu uwierzytelniania firmy Microsoft Entra, należy spełnić następujące wymagania wstępne:

  • Czy program SQL Server 2022 jest włączony przez usługę Azure-Arc , począwszy od aktualizacji zbiorczej 6.
  • Skonfigurowano uwierzytelnianie firmy Microsoft Entra dla każdego serwera w topologii replikacji. Zapoznaj się z Samouczkiem: konfigurowanie uwierzytelniania Microsoft Entra dla programu SQL Server, aby dowiedzieć się więcej.
  • Obsługiwana wersja programu SQL Server Management Studio (SSMS).
  • Użytkownik nawiązujący połączenie z wydawcą i subskrybentem jest członkiem stałej roli serwera sysadmin .
  • Połączenie musi być szyfrowane przy użyciu certyfikatu z zaufanego urzędu certyfikacji lub certyfikatu z podpisem własnym.
    • Jeśli jest używany certyfikat z podpisem własnym, należy go zaimportować na maszynę klienta i zainstalować na liście Zaufanych certyfikatów, aby klient ufał programowi SQL Server. Nie można pominąć tego wymagania, wybierając opcję Certyfikat serwera zaufania w programie SQL Server Management Studio (SSMS), ponieważ nie działa z replikacją.

Ograniczenia

Konfigurowanie replikacji przy użyciu uwierzytelniania firmy Microsoft Entra ma obecnie następujące ograniczenia:

  • Obecnie można skonfigurować replikację tylko przy użyciu Transact-SQL (T-SQL) i procedur składowanych replikacji, Kreatora replikacji w programie SSMS w wersji 19.1 lub nowszej lub Azure Data Studio. Obecnie nie można skonfigurować replikacji przy użyciu obiektów replikacji RMO lub innych języków wiersza polecenia.
  • Każdy serwer w topologii replikacji musi znajdować się w co najmniej programie SQL Server 2022 CU 6. Poprzednie wersje programu SQL Server nie są obsługiwane.

Tworzenie loginu SQL na podstawie identyfikatora Entra ID firmy Microsoft

Utwórz login Microsoft Entra i przyznaj sysadmin mu rolę.

Aby utworzyć identyfikator logowania firmy Microsoft Entra i przypisać go jako element sysadmin, użyj następującego polecenia Transact-SQL (T-SQL):

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

Aby na przykład dodać nazwę logowania dla newuser@tenant.com, użyj następującego polecenia:

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

Tworzenie bazy danych dystrybucji

Użyj sp_adddistributiondb , aby utworzyć bazę danych dystrybucji.

Poniżej przedstawiono przykładowy skrypt umożliwiający utworzenie bazy danych dystrybucji w dystrybutorze:

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 

Poniższy przykład tworzy tabelę UIProperties w bazie danych dystrybucji i ustawia właściwość SnapshotFolder, aby agent migawki wiedział, gdzie zapisywać migawki replikacji.

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' 

Poniższy skrypt konfiguruje wydawcę do korzystania z bazy danych dystrybutora i definiuje identyfikator logowania użytkownika usługi AD wraz z hasłem, które ma być używane do replikacji:

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' 

Włączanie replikacji

Użyj sp_replicationdboption, aby włączyć replikację w swojej bazie danych wydawcy, na przykład, jak w poniższym przykładzie:

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

Dodawanie publikacji

Użyj sp_addpublication , aby dodać publikację.

Można skonfigurować replikację transakcyjną lub migawkową.

Wykonaj następujące kroki, aby utworzyć replikację transakcyjną.

Najpierw skonfiguruj agenta czytnika dzienników:

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 

Następnie utwórz publikację transakcyjną:

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' 

Następnie utwórz agenta migawek i zapisz pliki migawek dla programu Publisher przy użyciu login Microsoft Entra dla @publisher_login i zdefiniuj hasło dla wydawcy.

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

Na koniec dodaj artykuł TestPub do publikacji:

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' 

Utwórz subskrypcję

Użyj sp_addsubscription, aby dodać subskrybenta, a następnie użyj sp_addpushsubscription_agent w programie Publisher, aby utworzyć subskrypcję wypychaną lub sp_addpullsubscription_agent na subskrybencie w celu utworzenia subskrypcji pobierania. Użyj logowania Microsoft Entra dla @subscriber_login.

Następujący przykładowy skrypt dodaje subskrypcję:

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 

Poniższy przykładowy skrypt dodaje agenta subskrypcji wypychanej w programie 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' 

Składowane procedury replikacji

Następujące parametry w procedurach replikacji zostały zmodyfikowane w aktualizacji CU 6 dla programu SQL Server 2022, aby obsługiwać uwierzytelnianie Microsoft Entra na potrzeby replikacji.

Następujące wartości definiują tryby zabezpieczeń dla tych procedur składowanych:

  • 0 określa uwierzytelnianie programu SQL Server.
  • 1 określa uwierzytelnianie systemu Windows.
  • 2 określa uwierzytelnianie haseł Microsoft Entra od SQL Server 2022 CU 6.
  • 3 określa zintegrowane uwierzytelnianie firmy Microsoft, począwszy od programu SQL Server 2022 CU 6.
  • 4 określa uwierzytelnianie tokenu Entra firmy Microsoft, począwszy od programu SQL Server 2022 CU 6.

Dalsze kroki

Aby dowiedzieć się więcej, zapoznaj się z tematem Replikacja programu SQL Server i uwierzytelnianie w usłudze Microsoft Entra dla programu SQL Server