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

platí pro: SQL Server 2022 (16.x) a novější verze

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 SQL Server povolený službou Azure Arc.

Přehled

Podpora ověřování Microsoft Entra pro replikaci byla zavedena v SYSTÉMU SQL Server 2022 (16.x) Kumulativní aktualizace (CU) 6 a obecně dostupná v CU 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:

  • Má SQL Server 2022 povolený službou Azure-Arc počínaje kumulativní aktualizací 6.
  • Nakonfigurovali jsme ověřování Microsoft Entra pro každý server v topologii replikace. Projděte si kurz: Nastavení ověřování Microsoft Entra pro SQL Server s registrací aplikace, abyste se dozvěděli více.
  • Podporovaná verze aplikace SQL Server Management Studio (SSMS)
  • Uživatel, který se připojuje k vydavateli a odběrateli, je členem pevné role serveru správce systému .
  • Připojení musí být šifrované pomocí certifikátu od důvěryhodné certifikační autority (CA) nebo certifikátu podepsaného svým držitelem.
    • Pokud se používá certifikát podepsaný svým držitelem, musí být importován do klientského počítače a nainstalován do seznamu důvěryhodných certifikátů, aby klient důvěřoval SQL Serveru. Tento požadavek nejde obejít tak, že v aplikaci SQL Server Management Studio (SSMS) vyberete možnost Důvěřovat certifikátu serveru , protože nefunguje s replikací.

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 a Průvodce replikací v SSMS verze 19.1 nebo vyšší. 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;
EXECUTE 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;
EXECUTE 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:

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;

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

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:

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

Povolení replikace

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

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

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

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

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

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

Následující ukázkový skript přidá agenta push předplatného na serveru Publisher:

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

Uložené procedury replikace

Následující parametry v těchto uložených procedurách replikace byly změněny v SQL Serveru 2022 (16.x) CU 6 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í pomocí tokenu Microsoft Entra počínaje SQL Serverem 2022 CU 6.