Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
- 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: Další informace získáte nastavením ověřování Microsoft Entra pro SQL Server.
- 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 nelze obejít výběrem možnosti Důvěřovat certifikátu serveru v aplikaci SQL Server Management Studio (SSMS), 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, 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:
-
sp_addpullsubscription_agent:
@distributor_security_mode -
sp_addpushsubscription_agent:
@subscriber_security_mode -
sp_addmergepullsubscription_agent:
@publisher_security_mode,@distributor_security_mode -
sp_addmergepushsubscription_agent:
@subscriber_security_mode,@publisher_security_mode -
sp_addlogreader_agent:
@publisher_security_mode -
sp_changelogreader_agent:
@publisher_security_mode -
sp_addpublication_snapshot:
@publisher_security_mode -
sp_changepublication_snapshot:
@publisher_security_mode
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.