Mengonfigurasi Penerbitan dan Distribusi
Berlaku untuk: SQL Server Azure SQL Managed Instance
Topik ini menjelaskan cara mengonfigurasi penerbitan dan distribusi di SQL Server dengan menggunakan SQL Server Management Studio, Transact-SQL, atau Replication Management Objects (RMO).
Sebelum Anda mulai
Keamanan
Untuk informasi selengkapnya, lihat Menampilkan dan mengubah pengaturan keamanan replikasi.
Menggunakan SQL Server Management Studio
Konfigurasikan distribusi menggunakan Wizard Publikasi Baru atau Wizard Konfigurasi Distribusi. Setelah Distributor dikonfigurasi, tampilkan dan ubah properti di kotak dialog Properti Distributor - <Distributor> . Gunakan Panduan Konfigurasi Distribusi jika Anda ingin mengonfigurasi Distributor sehingga anggota db_owner
peran database tetap dapat membuat publikasi, atau karena Anda ingin mengonfigurasi Distributor jarak jauh yang bukan Penerbit.
Untuk mengonfigurasi distribusi
Di Microsoft SQL Server Management Studio, sambungkan ke server yang akan menjadi Distributor (dalam banyak kasus, Penerbit dan Distributor adalah server yang sama), lalu perluas simpul server.
Klik kanan folder Replikasi, lalu klik Konfigurasi distribusi.
Ikuti Wizard Konfigurasi Distribusi untuk:
Pilih Distributor. Untuk menggunakan Distributor lokal, pilih ServerName akan bertindak sebagai Distributornya sendiri; SQL Server akan membuat database dan log distribusi. Untuk menggunakan Distributor jarak jauh, pilih Gunakan server berikut sebagai Distributor, lalu pilih server. Server harus sudah dikonfigurasi sebagai Distributor, dan Penerbit harus diaktifkan untuk menggunakan Distributor. Untuk informasi selengkapnya, lihat Mengaktifkan Penerbit Jarak Jauh di Distributor (SQL Server Management Studio).
Jika Anda memilih Distributor jarak jauh, Anda harus memasukkan kata sandi di halaman Kata Sandi Administratif untuk koneksi yang dibuat dari Penerbit ke Distributor. Kata sandi ini harus cocok dengan kata sandi yang ditentukan ketika Publisher diaktifkan di Distributor jarak jauh.
Tentukan folder rekam jepret akar (untuk Distributor lokal). Folder rekam jepret hanyalah direktori yang telah Anda tetapkan sebagai berbagi; agen yang membaca dari dan menulis ke folder ini harus memiliki izin yang memadai untuk mengaksesnya. Setiap Publisher yang menggunakan Distributor ini membuat folder di bawah folder akar, dan setiap publikasi membuat folder di bawah folder Publisher untuk menyimpan file rekam jepret. Untuk informasi selengkapnya tentang mengamankan folder dengan tepat, lihat Mengamankan Folder Rekam Jepret.
Tentukan database distribusi (untuk Distributor lokal). Database distribusi menyimpan metadata dan data riwayat untuk semua jenis replikasi dan transaksi untuk replikasi transaksional.
Secara opsional mengaktifkan Penerbit lain untuk menggunakan Distributor. Jika Penerbit lain diaktifkan untuk menggunakan Distributor, Anda harus memasukkan kata sandi di halaman Kata Sandi Distributor untuk koneksi yang dibuat dari Penerbit ini ke Distributor.
Secara opsional pengaturan konfigurasi skrip. Untuk informasi selengkapnya, lihat Replikasi Pembuatan Skrip.
Menggunakan T-SQL
Penerbitan dan distribusi replikasi dapat dikonfigurasi secara terprogram menggunakan prosedur tersimpan replikasi.
Untuk mengonfigurasi penerbitan menggunakan distributor lokal
- Jalankan sp_get_distributor (Transact-SQL) untuk menentukan apakah server sudah dikonfigurasi sebagai Distributor.
Jika nilai dalam tataan
installed
hasil adalah0
, jalankan sp_adddistributor (Transact-SQL) di Distributor pada database master.Jika nilai dalam tataan
distribution db installed
hasil adalah0
, jalankan sp_adddistributiondb (Transact-SQL) di Distributor pada database master. Tentukan nama database distribusi untuk@database
. Secara opsional, Anda dapat menentukan periode retensi transaksional maksimum untuk@max_distretention
dan periode retensi riwayat untuk@history_retention
. Jika database baru sedang dibuat, tentukan parameter properti database yang diinginkan.
Di Distributor, yang juga Penerbit, jalankan sp_adddistpublisher (Transact-SQL), menentukan berbagi UNC yang akan digunakan sebagai folder rekam jepret default untuk
@working_directory
.Untuk distributor di SQL Managed Instance, gunakan akun penyimpanan Azure untuk
@working_directory
dan kunci akses penyimpanan untuk@storage_connection_string
.Di Publisher, jalankan sp_replicationdboption (Transact-SQL). Tentukan database yang diterbitkan untuk
@dbname
, jenis replikasi untuk@optname
, dan nilaitrue
untuk@value
.
Untuk mengonfigurasi penerbitan menggunakan distributor jarak jauh
Jalankan sp_get_distributor (Transact-SQL) untuk menentukan apakah server sudah dikonfigurasi sebagai Distributor.
Jika nilai dalam tataan
installed
hasil adalah0
, jalankan sp_adddistributor (Transact-SQL) di Distributor pada database master. Tentukan kata sandi yang kuat untuk@password
. Kata sandi untukdistributor_admin
akun ini akan digunakan oleh Penerbit saat menyambungkan ke Distributor.Jika nilai dalam tataan
distribution db installed
hasil adalah0
, jalankan sp_adddistributiondb (Transact-SQL) di Distributor pada database master. Tentukan nama database distribusi untuk@database
. Secara opsional, Anda dapat menentukan periode retensi transaksional maksimum untuk@max_distretention
dan periode retensi riwayat untuk@history_retention
. Jika database baru sedang dibuat, tentukan parameter properti database yang diinginkan.
Di Distributor, jalankan sp_adddistpublisher (Transact-SQL), menentukan berbagi UNC yang akan digunakan sebagai folder rekam jepret default untuk
@working_directory
. Jika Distributor akan menggunakan Autentikasi SQL Server saat menyambungkan ke Penerbit, Anda juga harus menentukan nilai0
untuk@security_mode
dan informasi masuk Microsoft SQL Server untuk@login
dan@password
.Untuk distributor di SQL Managed Instance, gunakan akun penyimpanan Azure untuk
@working_directory
dan kunci akses penyimpanan untuk@storage_connection_string
.Di Publisher pada database master, jalankan sp_adddistributor (Transact-SQL). Tentukan kata sandi kuat yang digunakan di langkah 1 untuk
@password
. Kata sandi ini akan digunakan oleh Penerbit saat menyambungkan ke Distributor.Di Publisher, jalankan sp_replicationdboption (Transact-SQL). Tentukan database yang diterbitkan untuk
@dbname
, jenis replikasi untuk@optname
, dan nilai true untuk@value
.
Contoh (Transact-SQL)
Contoh berikut menunjukkan cara mengonfigurasi penerbitan dan distribusi secara terprogram. Dalam contoh ini, nama server yang sedang dikonfigurasi sebagai penerbit dan distributor lokal disediakan menggunakan variabel pembuatan skrip. Penerbitan dan distribusi replikasi dapat dikonfigurasi secara terprogram menggunakan prosedur tersimpan replikasi.
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2022';
-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;
-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB,
@security_mode = 1;
GO
-- Create a Publisher and enable AdventureWorks2022 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher,
@distribution_db=@distributionDB,
@security_mode = 1;
GO
Menggunakan Objek Manajemen Replikasi (RMO)
Untuk mengonfigurasi penerbitan dan distribusi pada satu server
Buat koneksi ke server dengan menggunakan ServerConnection kelas .
Membuat instans kelas ReplicationServer. Teruskan ServerConnection dari langkah 1.
Membuat instans kelas DistributionDatabase.
Atur Name properti ke nama database dan atur ConnectionContext properti ke ServerConnection dari langkah 1.
Instal Distributor dengan memanggil InstallDistributor metode . Teruskan DistributionDatabase objek dari langkah 3.
Membuat instans kelas DistributionPublisher.
Atur properti berikut dari DistributionPublisher:
Name - nama Penerbit.
ConnectionContext - dari ServerConnection langkah 1.
DistributionDatabase - nama database yang dibuat di langkah 5.
WorkingDirectory - berbagi yang digunakan untuk mengakses file rekam jepret.
PublisherSecurity - mode keamanan yang digunakan saat menyambungkan ke Publisher. WindowsAuthentication disarankan.
- Panggil Create metode.
Untuk mengonfigurasi penerbitan dan distribusi menggunakan Distributor jarak jauh
Buat koneksi ke server Distributor jarak jauh dengan menggunakan ServerConnection kelas .
Membuat instans kelas ReplicationServer. Teruskan ServerConnection dari langkah 1.
Membuat instans kelas DistributionDatabase.
Atur Name properti ke nama database, dan atur ConnectionContext properti ke ServerConnection dari langkah 1.
Instal Distributor dengan memanggil InstallDistributor metode . Tentukan kata sandi aman (digunakan oleh Publisher saat menyambungkan ke Distributor jarak jauh) dan DistributionDatabase objek dari langkah 3. Untuk informasi selengkapnya, lihat Mengamankan Distributor.
Penting
Jika memungkinkan, minta pengguna untuk memasukkan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial, gunakan layanan kriptografi yang disediakan oleh Microsoft Windows .NET Framework.
Membuat instans kelas DistributionPublisher.
Atur properti berikut dari DistributionPublisher:
Name - nama server Publisher lokal.
ConnectionContext - dari ServerConnection langkah 1.
DistributionDatabase - nama database yang dibuat di langkah 5.
WorkingDirectory - berbagi yang digunakan untuk mengakses file rekam jepret.
PublisherSecurity - mode keamanan yang digunakan saat menyambungkan ke Publisher. WindowsAuthentication disarankan.
Panggil Create metode.
Buat koneksi ke server Publisher lokal dengan menggunakan ServerConnection kelas .
Membuat instans kelas ReplicationServer. Teruskan ServerConnection dari langkah 9.
Panggil InstallDistributor metode. Berikan nama Distributor jarak jauh dan kata sandi untuk Distributor jarak jauh yang ditentukan di langkah 5.
Penting
Jika memungkinkan, minta pengguna untuk memasukkan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial, gunakan layanan kriptografi yang disediakan oleh Windows .NET Framework.
Contoh (RMO)
Anda dapat mengonfigurasi penerbitan dan distribusi replikasi secara terprogram dengan menggunakan Objek Manajemen Replikasi (RMO).
// Set the server and database names
string distributionDbName = "distribution";
string publisherName = publisherInstance;
string publicationDbName = "AdventureWorks2022";
DistributionDatabase distributionDb;
ReplicationServer distributor;
DistributionPublisher publisher;
ReplicationDatabase publicationDb;
// Create a connection to the server using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the server acting as the Distributor
// and local Publisher.
conn.Connect();
// Define the distribution database at the Distributor,
// but do not create it now.
distributionDb = new DistributionDatabase(distributionDbName, conn);
distributionDb.MaxDistributionRetention = 96;
distributionDb.HistoryRetention = 120;
// Set the Distributor properties and install the Distributor.
// This also creates the specified distribution database.
distributor = new ReplicationServer(conn);
distributor.InstallDistributor((string)null, distributionDb);
// Set the Publisher properties and install the Publisher.
publisher = new DistributionPublisher(publisherName, conn);
publisher.DistributionDatabase = distributionDb.Name;
publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
publisher.PublisherSecurity.WindowsAuthentication = true;
publisher.Create();
// Enable AdventureWorks2022 as a publication database.
publicationDb = new ReplicationDatabase(publicationDbName, conn);
publicationDb.EnabledTransPublishing = true;
publicationDb.EnabledMergePublishing = true;
}
catch (Exception ex)
{
// Implement appropriate error handling here.
throw new ApplicationException("An error occurred when installing distribution and publishing.", ex);
}
finally
{
conn.Disconnect();
}
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2022"
Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase
' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the server acting as the Distributor
' and local Publisher.
conn.Connect()
' Define the distribution database at the Distributor,
' but do not create it now.
distributionDb = New DistributionDatabase(distributionDbName, conn)
distributionDb.MaxDistributionRetention = 96
distributionDb.HistoryRetention = 120
' Set the Distributor properties and install the Distributor.
' This also creates the specified distribution database.
distributor = New ReplicationServer(conn)
distributor.InstallDistributor((CType(Nothing, String)), distributionDb)
' Set the Publisher properties and install the Publisher.
publisher = New DistributionPublisher(publisherName, conn)
publisher.DistributionDatabase = distributionDb.Name
publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
publisher.PublisherSecurity.WindowsAuthentication = True
publisher.Create()
' Enable AdventureWorks2022 as a publication database.
publicationDb = New ReplicationDatabase(publicationDbName, conn)
publicationDb.EnabledTransPublishing = True
publicationDb.EnabledMergePublishing = True
Catch ex As Exception
' Implement appropriate error handling here.
Throw New ApplicationException("An error occurred when installing distribution and publishing.", ex)
Finally
conn.Disconnect()
End Try