Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
-
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
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