Mengonfigurasi Penerbitan dan Distribusi

Berlaku untuk:SQL ServerAzure 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

  1. 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.

  2. Klik kanan folder Replikasi, lalu klik Konfigurasi distribusi.

  3. 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

  1. Jalankan sp_get_distributor (Transact-SQL) untuk menentukan apakah server sudah dikonfigurasi sebagai Distributor.
  • Jika nilai dalam tataan installed hasil adalah 0, jalankan sp_adddistributor (Transact-SQL) di Distributor pada database master.

  • Jika nilai dalam tataan distribution db installed hasil adalah 0, 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.

  1. 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.

  2. Di Publisher, jalankan sp_replicationdboption (Transact-SQL). Tentukan database yang diterbitkan untuk @dbname, jenis replikasi untuk @optname, dan nilai true untuk @value.

Untuk mengonfigurasi penerbitan menggunakan distributor jarak jauh

  1. Jalankan sp_get_distributor (Transact-SQL) untuk menentukan apakah server sudah dikonfigurasi sebagai Distributor.

    • Jika nilai dalam tataan installed hasil adalah 0, jalankan sp_adddistributor (Transact-SQL) di Distributor pada database master. Tentukan kata sandi yang kuat untuk @password. Kata sandi untuk distributor_admin akun ini akan digunakan oleh Penerbit saat menyambungkan ke Distributor.

    • Jika nilai dalam tataan distribution db installed hasil adalah 0, 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.

  2. 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 nilai 0 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.

  3. 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.

  4. 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

  1. Buat koneksi ke server dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas ReplicationServer. Teruskan ServerConnection dari langkah 1.

  3. Membuat instans kelas DistributionDatabase.

  4. Atur Name properti ke nama database dan atur ConnectionContext properti ke ServerConnection dari langkah 1.

  5. Instal Distributor dengan memanggil InstallDistributor metode . Teruskan DistributionDatabase objek dari langkah 3.

  6. Membuat instans kelas DistributionPublisher.

  7. Atur properti berikut dari DistributionPublisher:

  1. Panggil Create metode.

Untuk mengonfigurasi penerbitan dan distribusi menggunakan Distributor jarak jauh

  1. Buat koneksi ke server Distributor jarak jauh dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas ReplicationServer. Teruskan ServerConnection dari langkah 1.

  3. Membuat instans kelas DistributionDatabase.

  4. Atur Name properti ke nama database, dan atur ConnectionContext properti ke ServerConnection dari langkah 1.

  5. 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.

  6. Membuat instans kelas DistributionPublisher.

  7. Atur properti berikut dari DistributionPublisher:

  1. Panggil Create metode.

  2. Buat koneksi ke server Publisher lokal dengan menggunakan ServerConnection kelas .

  3. Membuat instans kelas ReplicationServer. Teruskan ServerConnection dari langkah 9.

  4. 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

Lihat Juga

Menampilkan dan Mengubah Properti Distributor dan Penerbit
Konsep Prosedur Tersimpan Sistem Replikasi
Mengonfigurasi Distribusi
Konsep Objek Manajemen Replikasi
Mengonfigurasi Replikasi untuk Grup Ketersediaan AlwaysOn (SQL Server)