Bagikan melalui


Konsep Objek Manajemen Replikasi

Objek Manajemen Replikasi (RMO) adalah rakitan kode terkelola yang merangkum fungsi replikasi untuk SQL Server. RMO diimplementasikan oleh Microsoft.SqlServer.Replication namespace.

Topik di bagian berikut menjelaskan bagaimana Anda dapat menggunakan RMO untuk mengontrol tugas replikasi secara terprogram:

Mengonfigurasi Distribusi
Topik di bagian ini memperlihatkan 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 memperlihatkan 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 .NET Framework Microsoft. Assembly 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 rakitan Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, 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 mencakup 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

  1. Mulai Visual Studio.

  2. Pada menu File , klik ProyekBaru. Kotak dialog Proyek Baru muncul.

  3. Dalam kotak dialog Jenis Proyek , pilih Proyek Visual C#. Di panel Templat , pilih Aplikasi Windows.

  4. (Opsional) Di Nama, ketik nama aplikasi baru.

  5. Klik OK untuk memuat templat Visual C# Windows.

  6. Pada menu Proyek , pilih Tambahkan item Referensi . Kotak dialog Add Reference muncul.

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

  8. (Opsional) Ulangi langkah 6. Klik tab Telusuri, navigasi ke C:\Program Files\Microsoft SQL Server\120\COM, pilih Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, lalu klik OK.

  9. Pada menu Tampilan , klik Kode.

  10. Dalam kode, sebelum pernyataan namespace, ketik pernyataan berikut using 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 Microsoft Visual Basic .NET baru

  1. Mulai Visual Studio.

  2. Pada menu File, pilih Proyek Baru. Kotak dialog Proyek Baru muncul.

  3. Di panel Jenis Proyek, pilih Visual Basic. Di panel Templat, pilih Aplikasi Windows.

  4. (Opsional) Dalam kotak Nama , ketik nama aplikasi baru.

  5. Klik OK untuk memuat templat Windows Visual Basic.

  6. Pada menu Proyek, pilih Tambahkan Referensi. Kotak dialog Add Reference muncul.

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

  8. (Opsional) Ulangi langkah 6. Klik tab Telusuri, navigasi ke C:\Program Files\Microsoft SQL Server\120\COM, pilih Microsoft.SqlServer.Replication.BusinessLogicSupport.dll, lalu klik OK.

  9. Pada menu Tampilan , klik Kode.

  10. Dalam kode, sebelum deklarasi apa pun, ketik pernyataan berikut Imports 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 ConnectionContext properti 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 sendiriServerConnection.

  • Objek ServerConnection ditetapkan ke ConnectionContext properti objek pemrograman RMO yang sedang dibuat atau diakses di server.

  • Metode Connect ini 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 Create metode 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, metode Load atau LoadProperties 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 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, Refresh metode 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 ditangkap 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 CommitPropertyChanges metode objek . Untuk menyimpan perubahan properti, CachePropertyChanges properti objek harus diatur ke true. Saat properti penembolokan 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 deklarasi transaksi eksplisit saat mengatur properti, transaksi tersebut ServerConnection dapat mengganggu transaksi replikasi internal, dapat menghasilkan hasil yang tidak diantisipasi, dan tidak boleh digunakan dengan RMO.

Contoh

Contoh ini menunjukkan penembolokan perubahan properti. Perubahan yang dilakukan pada atribut publikasi transaksional di-cache hingga secara eksplisit dikirim ke server.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";

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();
}

Lihat juga

Konsep Prosedur Tersimpan Sistem Replikasi
Konsep Pemrograman Replikasi