Perubahan Grup pada Baris Terkait dengan Rekaman Logis

Berlaku untuk:SQL Server

Catatan

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Secara default, replikasi penggabungan memproses perubahan data berdasarkan baris demi baris. Dalam banyak keadaan, ini sesuai, tetapi untuk beberapa aplikasi, sangat penting bahwa baris terkait diproses sebagai unit. Fitur rekaman logis dari replikasi penggabungan memungkinkan Anda menentukan hubungan antara baris terkait dalam tabel yang berbeda sehingga baris diproses sebagai unit.

Catatan

Fitur rekaman logis dapat digunakan sendiri atau bersama dengan filter gabungan. Untuk informasi selengkapnya tentang filter gabungan, lihat Menggabungkan Filter. Untuk menggunakan rekaman logis, tingkat kompatibilitas publikasi harus setidaknya 90RTM.

Pertimbangkan tiga tabel terkait ini:

Three table logical record, with column names only

Tabel Pelanggan adalah tabel induk dalam hubungan ini dan memiliki kolom kunci utama CustID. Tabel Pesanan memiliki kolom kunci utama OrderID, dengan batasan kunci asing pada kolom CustID yang mereferensikan kolom CustID dalam tabel Pelanggan . Demikian pula, tabel OrderItems memiliki kolom kunci utama OrderItemID, dengan batasan kunci asing pada kolom OrderID yang mereferensikan kolom OrderID dalam tabel Pesanan .

Dalam contoh ini, catatan logis terdiri dari semua baris dalam tabel Pesanan yang terkait dengan satu nilai CustID dan semua baris dalam tabel OrderItems yang terkait dengan baris tersebut dalam tabel Pesanan. Diagram ini memperlihatkan semua baris dalam tiga tabel yang berada dalam catatan logis untuk Customer2:

First screenshot of a three table logical record with values.

Untuk menentukan hubungan rekaman logis antar artikel, lihat Menentukan Hubungan Catatan Logis Antara Artikel Tabel Gabungan.

Manfaat Catatan Logis

Fitur rekaman logis memiliki dua manfaat utama:

  • Aplikasi perubahan data sebagai unit.

  • Deteksi dan resolusi konflik secara bersamaan pada beberapa baris dari beberapa tabel.

Aplikasi Perubahan Sebagai Unit

Jika pemrosesan penggabungan terganggu, seperti dalam kasus koneksi yang terputus, kumpulan perubahan terkait yang direplikasi yang diselesaikan sebagian digulung balik jika rekaman logis digunakan. Misalnya, pertimbangkan kasus di mana Pelanggan menambahkan pesanan baru dengan OrderID = 6 dan dua baris baru dalam tabel OrderItems dengan OrderItemID = 10 dan OrderItemID = 11 untuk OrderID = 6.

Second screenshot of a three table logical record with values.

Jika proses replikasi terganggu setelah baris Pesanan untuk OrderID = 6 selesai, tetapi sebelum OrderItems 10 dan 11 selesai, dan catatan logis tidak digunakan, nilai OrderTotal untuk OrderID = 6 tidak akan konsisten dengan jumlah nilai OrderAmount untuk baris OrderItems . Jika rekaman logis digunakan, baris Pesanan untuk OrderID = 6 tidak diterapkan hingga perubahan OrderItems terkait direplikasi.

Dalam skenario yang berbeda, jika rekaman logis digunakan, dan seseorang mengkueri tabel saat proses penggabungan menerapkan perubahan, pengguna tidak akan melihat perubahan yang direplikasi sebagian sampai semuanya selesai. Misalnya, proses replikasi telah mengunggah baris Pesanan untuk OrderID = 6, tetapi pengguna meminta tabel sebelum proses replikasi telah mereplikasi baris OrderItems, nilai OrderTotal tidak akan sama dengan jumlah nilai OrderAmount. Jika rekaman logis digunakan, baris Pesanan tidak akan terlihat sampai baris OrderItems selesai dan transaksi telah diterapkan sebagai unit.

Penerapan Penanganan Konflik ke Lebih dari Satu Tabel

Pertimbangkan kasus di mana dua Pelanggan memiliki himpunan data di atas:

  • Pengguna di Pelanggan pertama mengubah OrderAmount dari OrderItemID 5 dari 100 menjadi 150 dan OrderTotal dari OrderID 3 dari 200 menjadi 250.

  • Pengguna di Pelanggan kedua mengubah OrderAmount dari OrderItemID 6 dari 25 menjadi 125 dan OrderTotal dari OrderID 3 dari 200 menjadi 300.

Jika perubahan ini direplikasi tanpa menggunakan rekaman logis, nilai OrderTotal yang berbeda akan mengakibatkan konflik dan hanya satu dari mereka yang akan direplikasi. Tetapi perubahan yang tidak bertentangan dalam tabel OrderItems akan direplikasi tanpa konflik, meninggalkan nilai OrderTotal akhir dalam status tidak konsisten sehubungan dengan baris OrderItems. Jika rekaman logis digunakan dalam skenario ini, perubahan OrderItems yang terkait dengan perubahan tabel Pesanan yang hilang juga akan digulung balik, dan nilai OrderTotal akhir akan menjadi ringkasan yang akurat dari baris OrderItems.

Untuk informasi selengkapnya tentang opsi yang terkait dengan deteksi konflik dan resolusi dengan rekaman logis, lihat Mendeteksi dan Mengatasi Konflik di Rekaman Logis.

Pertimbangan untuk Menggunakan Rekaman Logis

Ingatlah pertimbangan berikut saat menggunakan rekaman logis.

Pertimbangan Umum

  • Disarankan agar Anda menyimpan jumlah tabel dalam catatan logis serendah mungkin; lima tabel atau kurang disarankan.

  • Rekaman logika tidak dapat mereferensikan kolom dengan salah satu jenis data berikut:

    • varchar(max) dan nvarchar(max)

    • varbinary(max)

    • teks dan ntext

    • gambar

    • XML

    • UDT

  • Hubungan kunci asing dalam tabel yang diterbitkan tidak dapat ditentukan dengan opsi CASCADE. Untuk informasi selengkapnya, lihat CREATE TABLE (Transact-SQL) dan ALTER TABLE (Transact-SQL).

  • Anda tidak dapat memperbarui kolom apa pun yang digunakan dalam klausa relasi logis.

  • Resolusi konflik kustom dengan penangan logika bisnis atau penyelesai kustom tidak didukung untuk artikel yang disertakan dalam catatan logis.

  • Jika rekaman logis digunakan dalam publikasi yang menyertakan filter berparameter, Anda harus menginisialisasi setiap Pelanggan dengan rekam jepret untuk partisinya. Jika Anda menginisialisasi Pelanggan dengan metode lain, Agen Penggabungan akan gagal. Untuk informasi selengkapnya, lihat Rekam Jepret untuk Gabungkan Publikasi dengan Filter Berparameter.

  • Konflik yang melibatkan rekaman logis tidak ditampilkan di Penampil Konflik. Untuk melihat informasi tentang konflik ini, gunakan prosedur tersimpan replikasi. Untuk informasi selengkapnya, lihat Menampilkan Informasi Konflik untuk Publikasi Gabungan (Pemrograman Transact-SQL Replikasi).

Pengaturan publikasi

  • Publikasi harus memiliki tingkat kompatibilitas 90RTM atau lebih besar. Untuk informasi selengkapnya, lihat bagian "Tingkat Kompatibilitas Publikasi" dari Kompatibilitas Mundur Replikasi.

  • Publikasi harus menggunakan mode rekam jepret asli. Ini adalah default kecuali Anda mereplikasi ke SQL Server Compact, yang tidak mendukung rekaman logis.

  • Publikasi tidak dapat memperbolehkan sinkronisasi Web. Untuk informasi selengkapnya tentang sinkronisasi Web, lihat Sinkronisasi Web untuk Replikasi Penggabungan.

  • Untuk menggunakan rekaman logis pada publikasi yang difilter:

  • Jika publikasi menggunakan filter gabungan, properti kunci unik gabungan harus diatur ke true untuk semua filter gabungan yang terlibat dalam hubungan rekaman logis. Untuk informasi selengkapnya, lihat Menggabungkan Filter.

Hubungan Antar Tabel

  • Tabel yang terkait melalui rekaman logis harus memiliki hubungan kunci utama-kunci asing.

  • Opsi NOT FOR REPLICATION tidak dapat diatur untuk batasan kunci asing.

  • Tabel anak hanya dapat memiliki satu tabel induk.

    Misalnya, kelas pelacakan database dan siswa mungkin memiliki desain yang mirip dengan:

    Child table with more than one parent table

    Anda tidak dapat menggunakan rekaman logis untuk mewakili tiga tabel dalam hubungan ini, karena baris di ClassMembers tidak terkait dengan satu baris kunci primer. Tabel Kelas dan ClassMembers masih dapat membentuk rekaman logis, seperti halnya tabel ClassMembers dan Students, tetapi tidak ketiganya.

  • Publikasi tidak boleh berisi hubungan filter gabungan melingkar.

    Menggunakan contoh dengan tabel Pelanggan, Pesanan, dan OrderItems, Anda tidak dapat menggunakan rekaman logis jika tabel Pesanan juga memiliki batasan kunci asing yang mereferensikan tabel OrderItems.

Implikasi performa rekaman logis

Fitur catatan logis memang dilengkapi dengan biaya performa. Jika catatan logis tidak digunakan, agen replikasi dapat memproses semua perubahan untuk artikel tertentu pada saat yang sama, dan karena perubahan diterapkan secara baris demi baris, persyaratan penguncian dan log transaksi yang diperlukan untuk menerapkan perubahan minimal.

Jika rekaman logis digunakan, Agen Penggabungan harus memproses perubahan untuk setiap seluruh rekaman logis bersama-sama. Ini berpengaruh pada jumlah waktu yang dibutuhkan Agen Penggabungan untuk mereplikasi baris. Selain itu, karena agen membuka transaksi terpisah untuk setiap catatan logis, persyaratan penguncian dapat meningkat.

Lihat Juga

Opsi Artikel untuk Replikasi Penggabungan