Konsep Objek Manajemen Replikasi
Berlaku untuk: SQL Server Azure SQL Managed Instance
Objek Manajemen Replikasi (RMO) adalah rakitan kode terkelola yang merangkum fungsionalitas replikasi untuk SQL Server. RMO diimplementasikan oleh Microsoft.SqlServer.Replication namespace layanan.
Topik di bagian berikut menjelaskan bagaimana Anda dapat menggunakan RMO untuk mengontrol tugas replikasi secara terprogram:
Mengonfigurasi Distribusi
Topik di bagian ini menunjukkan cara menggunakan RMO untuk mengonfigurasi penerbitan dan distribusi.
Membuat Publikasi
Topik di bagian ini memperlihatkan cara menggunakan RMO untuk membuat, menghapus, dan memodifikasi publikasi dan artikel.
Berlangganan Publikasi
Topik di bagian ini memperlihatkan cara menggunakan RMO untuk membuat, menghapus, dan mengubah langganan.
Mengamankan Topologi Replikasi
Topik di bagian ini menunjukkan cara menggunakan RMO untuk melihat dan mengubah pengaturan keamanan.
Menyinkronkan Langganan (Replikasi)
Topik di bagian ini memperlihatkan cara menyinkronkan langganan.
Memantau replikasi
Topik di bagian ini menunjukkan cara memantau topologi replikasi secara terprogram.
Pengantar Pemrograman RMO
RMO dirancang untuk memprogram semua aspek replikasi SQL Server. Namespace RMO adalah Microsoft.SqlServer.Replication, dan diimplementasikan oleh Microsoft.SqlServer.Rmo.dll, yang merupakan rakitan Microsoft .NET Framework. Rakitan Microsoft.SqlServer.Replication.dll, yang juga termasuk dalam Microsoft.SqlServer.Replication namespace layanan, mengimplementasikan antarmuka kode terkelola untuk memprogram berbagai agen replikasi (Agen Rekam Jepret, Agen Distribusi, dan Agen Penggabungan). Kelasnya dapat diakses dari RMO untuk menyinkronkan langganan. Kelas di Microsoft.SqlServer.Replication.BusinessLogicSupport namespace layanan, yang diimplementasikan oleh Microsoft.SqlServer.Replication.BusinessLogicSupport.dll assembly, digunakan untuk membuat logika bisnis kustom untuk replikasi penggabungan. Rakitan ini independen dari RMO.
Menyebarkan Aplikasi Berdasarkan RMO
RMO tergantung pada komponen replikasi dan komponen konektivitas klien yang disertakan dengan semua versi SQL Server kecuali SQL Server Compact. Untuk menyebarkan aplikasi berdasarkan RMO, Anda harus menginstal versi SQL Server yang menyertakan komponen replikasi dan komponen konektivitas klien di komputer tempat aplikasi akan berjalan.
Memulai RMO
Bagian ini menjelaskan cara memulai proyek RMO sederhana menggunakan Microsoft Visual Studio.
Untuk membuat proyek Microsoft Visual C# baru
Mulai Visual Studio.
Pada menu File , klik ProyekBaru. Kotak dialog Proyek Baru muncul.
Dalam kotak dialog Jenis Proyek, pilih Proyek Visual C#. Di panel Templat , pilih Aplikasi Windows.
(Opsional) Di Nama, ketik nama aplikasi baru.
Klik OK untuk memuat templat Visual C# Windows.
Pada menu Proyek , pilih Tambahkan item Referensi . Kotak dialog Tambahkan Referensi muncul.
Pilih rakitan berikut dari daftar pada tab .NET , lalu klik OK.
Microsoft.SqlServer.Replication .NET Programming Interface
Microsoft.SqlServer.ConnectionInfo
Pustaka Agen Replikasi
Catatan
Gunakan tombol CTRL untuk memilih lebih dari satu file.
(Opsional) Ulangi langkah 6. Klik tab Telusuri , navigasi ke C:\Program Files\Microsoft SQL Server\nnn\COM, pilih Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, lalu klik OK.
Pada menu Tampilan , klik Kode.
Dalam kode, sebelum pernyataan namespace layanan, ketik pernyataan penggunaan berikut untuk memenuhi syarat jenis di namespace RMO:
// These namespaces are required. using Microsoft.SqlServer.Replication; using Microsoft.SqlServer.Management.Common; // This namespace is only used when creating custom business // logic for merge replication. using Microsoft.SqlServer.Replication.BusinessLogicSupport;
Untuk membuat proyek .NET Microsoft Visual Basic baru
Mulai Visual Studio.
Pada menu File, pilih Proyek Baru. Kotak dialog Proyek Baru muncul.
Di panel Jenis Proyek, pilih Visual Basic. Di panel Templat, pilih Aplikasi Windows.
(Opsional) Dalam kotak Nama , ketik nama aplikasi baru.
Klik OK untuk memuat templat Visual Basic Windows.
Pada menu Proyek, pilih Tambahkan Referensi. Kotak dialog Tambahkan Referensi muncul.
Pilih rakitan berikut dari daftar pada tab .NET , lalu klik OK.
Microsoft.SqlServer.Replication .NET Programming Interface
Microsoft.SqlServer.ConnectionInfo
Pustaka Agen Replikasi
Catatan
Gunakan tombol CTRL untuk memilih lebih dari satu file.
(Opsional) Ulangi langkah 6. Klik tab Telusuri , navigasi ke C:\Program Files\Microsoft SQL Server\nnn\COM, pilih Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, lalu klik OK.
Pada menu Tampilan , klik Kode.
Dalam kode, sebelum deklarasi apa pun, ketik pernyataan Impor berikut untuk memenuhi syarat jenis di namespace RMO.
' These namespaces are required. Imports Microsoft.SqlServer.Replication Imports Microsoft.SqlServer.Management.Common ' This namespace is only used when creating custom business ' logic for merge replication. Imports Microsoft.SqlServer.Replication.BusinessLogicSupport
Menyambungkan ke Server Replikasi
Objek pemrograman RMO mengharuskan koneksi ke instans SQL Server dibuat dengan menggunakan instans ServerConnection kelas . Koneksi ke server ini dibuat secara independen dari objek pemrograman RMO apa pun. Kemudian diteruskan ke objek RMO baik selama pembuatan instans atau dengan penugasan ke P:Microsoft.SqlServer.Replication.ReplicationObject.ConnectionContex
properti t objek. Dengan cara ini, objek pemrograman RMO dan instans objek koneksi dapat dibuat dan dikelola secara terpisah, dan satu objek koneksi dapat digunakan kembali dengan beberapa objek pemrograman RMO. Aturan berikut berlaku untuk koneksi ke server replikasi:
Semua properti untuk koneksi didefinisikan untuk objek tertentu ServerConnection .
Koneksi ke setiap instans SQL Server harus memiliki objeknya sendiri ServerConnection .
Objek ServerConnection ditetapkan ke
P:Microsoft.SqlServer.Replication.ReplicationObject.ConnectionContext
properti objek pemrograman RMO yang sedang dibuat atau diakses di server.Metode Connect membuka koneksi ke server. Metode ini harus dipanggil sebelum memanggil metode apa pun yang mengakses server pada objek pemrograman RMO apa pun menggunakan koneksi.
Karena RMO dan SQL Server Management Objects (SMO) keduanya menggunakan ServerConnection kelas untuk koneksi ke SQL Server, koneksi yang sama dapat digunakan oleh objek RMO dan SMO. Untuk informasi selengkapnya, lihat Menyambungkan ke Instans SQL Server.
Semua informasi autentikasi untuk membuat koneksi dan berhasil masuk ke server disediakan dalam ServerConnection objek.
Autentikasi Windows adalah default. Untuk menggunakan Autentikasi SQL Server, LoginSecure harus diatur ke false dan Login dan Password harus diatur ke log masuk dan kata sandi SQL Server yang valid. Kredensial keamanan harus selalu disimpan dan ditangani dengan aman, dan disediakan pada run-time jika memungkinkan.
Untuk aplikasi multithread, objek terpisah ServerConnection harus digunakan di setiap utas.
Disconnect Panggil metode pada ServerConnection objek untuk menutup koneksi server aktif yang digunakan oleh objek RMO.
Mengatur Properti RMO
Properti objek pemrograman RMO mewakili properti objek replikasi ini di server. Saat membuat objek replikasi baru di server, properti RMO digunakan untuk menentukan objek ini. Untuk objek yang ada, properti RMO mewakili properti objek yang ada, yang hanya dapat dimodifikasi untuk properti yang dapat ditulis atau diatur. Properti dapat diatur pada objek baru atau objek yang sudah ada.
Mengatur Properti untuk Objek Replikasi Baru
Saat membuat objek replikasi baru di server, Anda harus menentukan semua properti yang diperlukan sebelum memanggil metode Buat objek. Untuk informasi selengkapnya tentang mengatur properti untuk objek replikasi baru, lihat Mengonfigurasi Penerbitan dan Distribusi.
Mengatur Properti untuk Objek Replikasi yang Ada
Untuk objek replikasi yang ada di server, tergantung pada objek, RMO mungkin mendukung kemampuan untuk mengubah beberapa atau semua propertinya. Hanya properti yang dapat ditulis atau dapat diatur yang dapat diubah. Sebelum properti dapat diubah, beban atau M:Microsoft.SqlServer.Replication.ReplicationObject.LoadProperties
metode harus dipanggil untuk mendapatkan properti saat ini dari server. Memanggil metode ini menunjukkan bahwa objek yang ada sedang dimodifikasi.
Secara default, saat mengubah properti objek, RMO menerapkan perubahan ini ke server berdasarkan mode eksekusi yang ServerConnection digunakan. Metode P:Microsoft.SqlServer.Replication.ReplicationObject.IsExistingObject
ini dapat digunakan untuk memverifikasi bahwa objek ada di server sebelum mencoba mengambil atau mengubah propertinya. Untuk informasi selengkapnya tentang mengubah properti objek replikasi, lihat Menampilkan dan Mengubah Properti Distributor dan Penerbit.
Catatan
Ketika beberapa klien RMO atau beberapa instans objek pemrograman RMO mengakses objek replikasi yang sama di server, metode Refresh objek RMO dapat dipanggil untuk memperbarui properti berdasarkan status objek saat ini di server.
Perubahan Properti Penembolokan
SqlExecutionModes Ketika properti diatur ke CaptureSql semua pernyataan Transact-SQL yang dihasilkan oleh RMO diambil sehingga dapat dijalankan secara manual dalam satu batch dengan menggunakan salah satu metode eksekusi. RMO memungkinkan Anda menyimpan perubahan properti dan menerapkannya bersama-sama dalam satu batch dengan menggunakan M:Microsoft.SqlServer.Replication.ReplicationObject.CommitPropertyChanges
metode objek. Untuk menyimpan perubahan properti, P:Microsoft.SqlServer.Replication.ReplicationObject.CachePropertyChanges
properti objek harus diatur ke true. Saat penembolokan properti berubah di RMO, ServerConnection objek masih mengontrol kapan perubahan dikirim ke server. Untuk informasi selengkapnya tentang penembolokan perubahan properti untuk objek replikasi, lihat Menampilkan dan Mengubah Properti Distributor dan Penerbit.
Penting
Meskipun kelas mendukung deklarasikan transaksi eksplisit saat mengatur properti, transaksi tersebut ServerConnection dapat mengganggu transaksi replikasi internal, dapat menghasilkan hasil yang tidak terduga, dan tidak boleh digunakan dengan RMO.
Mengaktifkan Dukungan TLS 1.2 untuk Komponen RMO
Dukungan TLS1.2 untuk Komponen RMO pada Windows 2012 dan yang lebih rendah dapat diaktifkan dengan menginstal 3140245 KB pembaruan, dan membuat kunci registri seperti yang disebutkan dalam artikel. Pada Windows 2012 R2 dan versi yang lebih baru, hanya kunci registri seperti yang disebutkan dalam artikel di atas, yang perlu dibuat.
Contoh
Contoh ini menunjukkan penembolokan perubahan properti. Perubahan yang dilakukan pada atribut publikasi transaksional di-cache hingga dikirim secara eksplisit ke server.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
TransPublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// Explicitly enable caching of property changes on this object.
publication.CachePropertyChanges = true;
// If we can't get the properties for this publication,
// throw an application exception.
if (publication.LoadProperties())
{
// Enable support for push subscriptions and disable support
// for pull subscriptions.
if ((publication.Attributes & PublicationAttributes.AllowPull) != 0)
{
publication.Attributes ^= PublicationAttributes.AllowPull;
}
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Send changes to the server.
publication.CommitPropertyChanges();
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(
"The publication property could not be changed.", ex);
}
finally
{
conn.Disconnect();
}