Bagikan melalui


Mengonfigurasi replikasi dengan autentikasi Microsoft Entra - SQL Server diaktifkan oleh Azure Arc

Berlaku untuk: SQL Server 2022 (16.x)

Artikel ini menyediakan langkah-langkah untuk mengonfigurasi replikasi Transaksional dan Rekam Jepret dengan menggunakan autentikasi dengan ID Microsoft Entra (sebelumnya Azure Active Directory) untuk SQL Server dengan dukungan Azure-Arc.

Gambaran Umum

Dukungan autentikasi Microsoft Entra untuk replikasi diperkenalkan dalam Pembaruan Kumulatif 6 untuk SQL Server 2022, dan tersedia secara umum di Pembaruan Kumulatif 12. Saat Anda menggunakan autentikasi Microsoft Entra untuk replikasi, satu-satunya langkah yang berbeda adalah langkah pertama. Secara khusus, buat login Microsoft Entra, dan berikan izin sysadmin.

Setelah itu, gunakan login Microsoft Entra dalam prosedur tersimpan replikasi untuk mengonfigurasi replikasi Transaksional atau Rekam Jepret seperti biasa.

Catatan

Dimulai dengan SQL Server 2022 CU 6, nonaktifkan autentikasi Microsoft Entra untuk replikasi dengan menggunakan bendera pelacakan sesi 11561.

Prasyarat

Untuk mengonfigurasi replikasi dengan autentikasi Microsoft Entra, Anda harus memenuhi prasyarat berikut:

  • Mengaktifkan SQL Server 2022 oleh Azure-Arc dimulai dengan Pembaruan Kumulatif 6.
  • Mengonfigurasi autentikasi Microsoft Entra untuk setiap server dalam topologi replikasi. Tinjau Tutorial: Menyiapkan autentikasi Microsoft Entra untuk SQL Server untuk mempelajari selengkapnya.
  • SQL Server Management Studio (SSMS) v19.1 atau lebih tinggi atau Azure Data Studio.
  • Pengguna yang terhubung ke penerbit dan pelanggan adalah anggota peran server tetap sysadmin .
  • Koneksi harus dienkripsi menggunakan sertifikat dari Otoritas Sertifikat (CA) tepercaya atau sertifikat yang ditandatangani sendiri.
    • Jika sertifikat yang ditandatangani sendiri digunakan, sertifikat harus diimpor ke komputer klien dan diinstal ke dalam daftar Sertifikat Tepercaya agar klien mempercayai SQL Server. Persyaratan ini tidak dapat dilewati dengan memilih opsi Sertifikat server kepercayaan di SQL Server Management Studio (SSMS) karena tidak berfungsi dengan replikasi.

Batasan

Mengonfigurasi replikasi Anda dengan autentikasi Microsoft Entra saat ini memiliki batasan berikut:

  • Saat ini hanya dimungkinkan untuk mengonfigurasi replikasi menggunakan Transact-SQL (T-SQL) dan prosedur tersimpan replikasi, Wizard Replikasi di SSMS v19.1 atau yang lebih tinggi, atau Azure Data Studio. Saat ini tidak dimungkinkan untuk mengonfigurasi replikasi menggunakan objek replikasi RMO atau bahasa baris perintah lainnya.
  • Setiap server dalam topologi replikasi harus berada di setidaknya SQL Server 2022 CU 6. Versi SQL Server sebelumnya tidak didukung.

Membuat login SQL dari ID Microsoft Entra

Buat login Microsoft Entra, dan berikan perannya sysadmin .

Untuk membuat login Microsoft Entra dan menetapkannya sebagai sysadmin, gunakan perintah Transact-SQL (T-SQL) berikut:

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

Misalnya, untuk menambahkan nama login untuk newuser@tenant.com, gunakan perintah ini:

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

Membuat database Distribusi

Gunakan sp_adddistributiondb untuk membuat database distribusi.

Berikut ini adalah contoh skrip untuk membuat database distribusi Anda di Distributor Anda:

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 

Contoh berikut membuat tabel UIProperties dalam database Distribusi, dan mengatur SnapshotFolder properti sehingga agen rekam jepret tahu tempat menulis rekam jepret replikasi:

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' 

Skrip berikut mengonfigurasi Publisher untuk menggunakan database Distributor, dan menentukan login pengguna AD, bersama dengan kata sandi yang akan digunakan untuk replikasi:

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' 

Aktifkan replikasi

Gunakan sp_replicationdboption untuk mengaktifkan replikasi pada database Publisher Anda, seperti testdb, seperti contoh berikut:

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

Menambahkan publikasi

Gunakan sp_addpublication untuk menambahkan publikasi.

Anda dapat mengonfigurasi replikasi transaksional atau rekam jepret.

Ikuti langkah-langkah ini untuk membuat replikasi Transaksional.

Pertama, konfigurasikan agen pembaca log:

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 

Selanjutnya, buat publikasi transaksi:

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' 

Kemudian, buat Agen Rekam Jepret dan simpan file rekam jepret untuk Publisher dengan menggunakan login Microsoft Entra untuk @publisher_login dan menentukan kata sandi untuk 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>' 

Terakhir, tambahkan artikel TestPub ke publikasi:

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' 

Buat Langganan

Gunakan sp_addsubscription untuk menambahkan Pelanggan Anda, lalu gunakan sp_addpushsubscription_agent di Penerbit untuk membuat langganan push atau sp_addpullsubscription_agent pada Pelanggan untuk membuat langganan penarikan. Gunakan login Microsoft Entra untuk @subscriber_login.

Contoh skrip berikut menambahkan langganan:

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 

Contoh skrip berikut menambahkan agen langganan push di 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' 

Prosedur tersimpan replikasi

Parameter berikut dalam prosedur tersimpan replikasi ini dimodifikasi di CU 6 untuk SQL Server 2022 untuk mendukung autentikasi Microsoft Entra untuk replikasi:

  • 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

Nilai berikut menentukan mode keamanan untuk prosedur tersimpan ini:

  • 0 menentukan Autentikasi SQL Server.
  • 1 menentukan Autentikasi Windows.
  • 2 menentukan autentikasi kata sandi Microsoft Entra yang dimulai dengan SQL Server 2022 CU 6.
  • 3 menentukan autentikasi terintegrasi Microsoft Entra yang dimulai dengan SQL Server 2022 CU 6.
  • 4 menentukan autentikasi token Microsoft Entra yang dimulai dengan SQL Server 2022 CU 6.

Langkah berikutnya

Untuk mempelajari lebih lanjut, tinjau Replikasi SQL Server dan autentikasi Microsoft Entra untuk SQL Server