Sdílet prostřednictvím


Konfigurace replikace s ověřováním Microsoft Entra – SQL Server povolený službou Azure Arc

platí pro: SQL Server 2022 (16.x)

Tento článek obsahuje postup konfigurace transakční replikace a replikace snímků pomocí ověřování s ID Microsoft Entra (dříve Azure Active Directory) pro Azure-Arc povolený SQL Server.

Přehled

Podpora ověřování Microsoft Entra pro replikaci byla zavedena v kumulativní aktualizaci 6 pro SQL Server 2022 a byla obecně dostupná v kumulativní aktualizaci 12. Pokud pro replikaci použijete ověřování Microsoft Entra, jediným krokem je první krok. Konkrétně vytvořte přihlášení Microsoft Entra a udělte oprávnění správce systému.

Potom pomocí přihlášení Microsoft Entra v uložených procedurách replikace nakonfigurujte transakční nebo snímkovou replikaci tak, jak byste normálně.

Poznámka:

Počínaje SQL Serverem 2022 CU 6 zakažte ověřování Microsoft Entra pro replikaci pomocí trasovacího příznaku relace 11561.

Požadavky

Pokud chcete nakonfigurovat replikaci pomocí ověřování Microsoft Entra, musíte splnit následující požadavky:

Omezení

Konfigurace replikace pomocí ověřování Microsoft Entra má aktuálně následující omezení:

  • V současné době je možné nakonfigurovat replikaci pouze pomocí Transact-SQL (T-SQL) a uložených procedur replikace, Průvodce replikací v SSMS verze 19.1 nebo vyšší nebo Azure Data Studio. V současné době není možné nakonfigurovat replikaci pomocí objektů replikace RMO nebo jiných jazyků příkazového řádku.
  • Každý server v topologii replikace musí být alespoň na SQL Serveru 2022 CU 6. Předchozí verze SQL Serveru nejsou podporované.

Vytvoření přihlášení SQL z Microsoft Entra ID

Vytvořte přihlášení Microsoft Entra a udělte mu sysadmin roli.

Pokud chcete vytvořit přihlášení Microsoft Entra a přiřadit ho jako sysadmin, použijte následující příkaz Transact-SQL (T-SQL):

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

Pokud například chcete přidat přihlašovací jméno pro newuser@tenant.com, použijte tento příkaz:

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

Vytvoření distribuční databáze

K vytvoření distribuční databáze použijte sp_adddistributiondb .

Následuje ukázkový skript pro vytvoření distribuční databáze na distributoru:

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 

Následující příklad vytvoří tabulku UIProperties v distribuční databázi a nastaví SnapshotFolder vlastnost tak, aby agent snímků věděl, kde zapisovat snímky replikace:

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' 

Následující skript nakonfiguruje Vydavatele tak, aby používal databázi Distributor, a definuje přihlášení uživatele AD spolu s heslem, které se má použít pro replikaci:

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' 

Povolení replikace

Pomocí sp_replicationdboption povolte replikaci v databázi Publisheru, například testdbv následujícím příkladu:

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

Přidání publikace

K přidání publikace použijte sp_addpublication .

Můžete nakonfigurovat transakční nebo snímkovou replikaci.

Pomocí těchto kroků vytvořte transakční replikaci.

Nejprve nakonfigurujte agenta čtenáře protokolů:

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 

Dále vytvořte transakční publikaci:

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' 

Pak vytvořte snapshot agenta a uložte soubory snímků pro vydavatele pomocí přihlášení Microsoft Entra pro @publisher_login a definování hesla pro Publisher:

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

Nakonec do publikace přidejte článek TestPub :

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' 

Vytvoření předplatného

Pomocí sp_addsubscription přidejte odběratele a potom pomocí sp_addpushsubscription_agent na Publisheru vytvořte push předplatné nebo sp_addpullsubscription_agent na odběrateli a vytvořte pull předplatné. Použijte přihlášení Microsoft Entra pro @subscriber_login.

Následující ukázkový skript přidá předplatné:

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 

Následující ukázkový skript přidá agenta push předplatného na serveru 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' 

Uložené procedury replikace

Následující parametry v těchto uložených procedurách replikace byly změněny v CU 6 pro SQL Server 2022 pro podporu ověřování Microsoft Entra pro replikaci:

Následující hodnoty definují režimy zabezpečení pro tyto uložené procedury:

  • 0 určuje ověřování SQL Serveru.
  • 1 určuje ověřování systému Windows.
  • 2 určuje ověřování hesla Microsoft Entra počínaje SQL Serverem 2022 CU 6.
  • 3 určuje integrované ověřování Microsoft Entra počínaje SQL Serverem 2022 CU 6.
  • 4 určuje ověřování tokenu Microsoft Entra počínaje SQL Serverem 2022 CU 6.

Další kroky

Další informace najdete v tématu Replikace SQL Serveru a ověřování Microsoft Entra pro SQL Server.