Microsoft Entra kimlik doğrulaması kullanarak çoğaltmayı yapılandırma - Azure Arc ile etkinleştirilen SQL Server

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri

Bu makalede, Azure Arc tarafından etkinleştirilen SQL Server için Microsoft Entra Id (eski adı Azure Active Directory) ile kimlik doğrulaması kullanarak İşlem ve Anlık Görüntü çoğaltmasını yapılandırma adımları sağlanır.

Genel Bakış

Çoğaltma için Microsoft Entra kimlik doğrulama desteği SQL Server 2022 (16.x) Toplu Güncelleştirme (CU) 6'da kullanıma sunulmuştur ve CU 12'de genel kullanıma sunulmuştur. Çoğaltma için Microsoft Entra kimlik doğrulamasını kullandığınızda, tek farklı adım ilk adımdır. Bir Microsoft Entra hesabı oluşturun ve sistem yöneticisi izinleri verin.

Bundan sonra, normalde yaptığınız gibi İşlem veya Anlık Görüntü çoğaltmasını yapılandırmak için çoğaltma saklı yordamlarında Microsoft Entra oturum açma bilgilerini kullanın.

Uyarı

SQL Server 2022 CU 6'dan başlayarak, 11561 oturum izleme bayrağını kullanarak çoğaltma için Microsoft Entra kimlik doğrulamasını devre dışı bırakın.

Önkoşullar

Microsoft Entra kimlik doğrulaması ile çoğaltmayı yapılandırmak için aşağıdaki önkoşulları karşılamanız gerekir:

Sınırlamalar

Microsoft Entra kimlik doğrulaması ile çoğaltmanızı yapılandırmanın şu anda aşağıdaki sınırlamaları vardır:

  • Şu anda yalnızca Transact-SQL (T-SQL) ve çoğaltma saklı yordamlarını ve SSMS v19.1 veya sonraki sürümlerde Çoğaltma Sihirbazı'nı kullanarak çoğaltmayı yapılandırmak mümkündür. Şu anda RMO çoğaltma nesnelerini veya diğer komut satırı dillerini kullanarak çoğaltmayı yapılandırmak mümkün değildir.
  • Çoğaltma topolojisindeki her sunucu en az SQL Server 2022 CU 6'da olmalıdır. SQL Server'ın önceki sürümleri desteklenmez.

Microsoft Entra Id'den SQL oturum açma bilgileri oluşturma

Microsoft Entra oturum açma bilgilerini oluşturun ve sysadmin rolünü verin.

"Microsoft Entra" oturum açma bilgilerini oluşturmak ve olarak sysadmin atamak için aşağıdaki Transact-SQL (T-SQL) komutunu kullanın.

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

Örneğin, için oturum açma adını eklemek için newuser@tenant.comşu komutu kullanın:

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

Dağıtım veritabanı oluşturma

Dağıtım veritabanını oluşturmak için sp_adddistributiondb kullanın.

Dağıtımcınızda dağıtım veritabanınızı oluşturmak için örnek bir betik aşağıda verilmiştir:

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;

Aşağıdaki örnek, Dağıtım veritabanında tabloyu UIProperties oluşturur ve anlık görüntü aracısının çoğaltma anlık görüntülerini nereye yazacağını bilmesi için SnapshotFolder özelliğini ayarlar.

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

Aşağıdaki betik Yayımcı'yı Dağıtımcı veritabanını kullanacak şekilde yapılandırarak AD kullanıcı oturum açma bilgilerini ve çoğaltma için kullanılacak parolayı tanımlar:

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

Çoğaltmayı etkinleştirme

sp_replicationdboption kullanarak şu örnekte olduğu gibi testdb, Publisher veritabanınızda çoğaltmayı etkinleştirin:

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

Yayını ekle

Yayını eklemek için sp_addpublication kullanın.

İşlem veya anlık görüntü çoğaltmayı yapılandırabilirsiniz.

İşlemsel çoğaltma oluşturmak için şu adımları izleyin.

İlk olarak, günlük okuyucu aracısını yapılandırın:

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;

Ardından işlem yayınını oluşturun:

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'

Ardından Snapshot Agent'ı oluşturun ve Yayımcı için Microsoft Entra oturum açma bilgilerini kullanarak ve Yayımcı için @publisher_login bir parola tanımlayarak anlık görüntü dosyalarını depolayın:

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

Son olarak, makaleyi TestPub yayına ekleyin:

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

Abonelik Oluştur

Abonenizi eklemek için sp_addsubscription kullanın ve ardından yayımcıda sp_addpushsubscription_agent kullanarak anında iletme aboneliği oluşturun veya abone üzerinde sp_addpullsubscription_agent kullanarak çekme aboneliği oluşturun. için @subscriber_loginMicrosoft Entra oturum açma bilgilerini kullanın.

Aşağıdaki örnek betik aboneliği ekler:

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;

Aşağıdaki örnek betik, Publisher'a bir push abonelik ajanı ekler.

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

Çoğaltma saklı yordamları

Bu çoğaltma saklı yordamlarındaki aşağıdaki parametreler, çoğaltma için Microsoft Entra kimlik doğrulamasını desteklemek üzere SQL Server 2022 (16.x) CU 6'da değiştirildi:

Aşağıdaki değerler, bu saklı yordamlar için güvenlik modlarını tanımlar:

  • 0 SQL Server Kimlik Doğrulama'sı belirtir.
  • 1 , Windows Kimlik Doğrulaması belirtir.
  • 2 SQL Server 2022 CU 6 ile başlayan Microsoft Entra parola kimlik doğrulamasını belirtir.
  • 3 SQL Server 2022 CU 6 ile başlayan Microsoft Entra tümleşik kimlik doğrulamayı belirtir.
  • 4 SQL Server 2022 CU 6 ile başlayan Microsoft Entra belirteci kimlik doğrulamayı belirtir.