UPDATE pernyataan dapat direplikasi sebagai pasangan Hapus/MENYISIPKAN

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 238254 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

RINGKASAN

Jika setiap kolom yang merupakan bagian dari kendala unik Diperbarui, maka SQL Server menerapkan pembaruan sebagai "pembaruan yang ditangguhkan", yang berarti sebagai sepasang HAPUS/MASUKKAN operasi. "Pembaruan ditangguhkan" ini menyebabkan replikasi untuk mengirim sepasang HAPUS/MASUKKAN pernyataan untuk pelanggan. Juga ada situasi lain yang mungkin menyebabkan pembaruan yang ditangguhkan. Oleh karena itu, logika bisnis apapun yang Anda menerapkan dalam Anda UPDATE pemicu atau kustom prosedur yang tersimpan pada pelanggan harus juga dimasukkan dalam HAPUS/MASUKKAN pemicu atau kustom disimpan prosedur.

INFORMASI LEBIH LANJUT

Perilaku default di transactional replication with scripts adalah dengan menggunakan MASUKKAN, UPDATE dan HAPUS Custom disimpan prosedur untuk menerapkan perubahan pada pelanggan.

MASUKKAN pernyataan yang dibuat di penerbit diterapkan untuk pelanggan melalui MASUKKAN disimpan prosedur. Demikian pula, HAPUS pernyataan diterapkan melalui HAPUS disimpan prosedur.

Namun, ketika UPDATE pernyataan dijalankan sebagai "pembaruan ditangguhkan", agen logreader tempat sepasang HAPUS/MASUKKAN disimpan prosedur panggilan dalam database distribusi untuk diterapkan untuk pelanggan daripada update disimpan prosedur. Sebagai contoh, Misalkan Anda memiliki sebuah tabel penerbitan yang bernama TABLE1, dengan tiga kolom:
  • col1 int
  • col2 int
  • col3 varchar(30).
Kendala hanya unik pada TABLE1 didefinisikan pada col1 melalui kunci kendala utama. Asumsikan bahwa Anda memiliki satu catatan (1,1, 'Dallas').

Ketika Anda menjalankan kode ini:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'
				
The UPDATE pernyataan dilaksanakan oleh SQL Server sebagai sepasang HAPUS/MASUKKAN pernyataan karena Anda memperbarui col1, yang memiliki indeks unik didefinisikan. Dengan demikian, logreader tempat sepasang HAPUS/MASUKKAN panggilan dalam database distribusi. Hal ini dapat mempengaruhi bisnis logika yang hadir dalam memicu atau kustom prosedur yang tersimpan pada Pelanggan. Anda harus memasukkan logika bisnis tambahan di HAPUS dan MASUKKAN pemicu atau disimpan prosedur untuk menangani situasi ini.

Jika Anda memilih untuk menggunakan satu logika dan Anda ingin semua Anda UPDATE perintah direplikasi sebagai HAPUS/MASUKKAN pasangan, Anda dapat mengaktifkan bendera jejak seperti yang dijelaskan dalam Microsoft ini Artikel Basis Pengetahuan:
160181 INF: Jejak bendera untuk mereplikasi UPDATE sebagai pasangan Hapus/MENYISIPKAN
Selain itu, jika Anda menggunakan horizontal filter dalam publikasi Anda dan jika diperbarui baris tidak memenuhi filter kondisi, hanya HAPUS panggilan prosedur dikirim ke pelanggan. Jika baris diperbarui sebelumnya tidak memenuhi penyaring kondisi tetapi memenuhi kondisi setelah memperbarui, hanya MASUKKAN panggilan prosedur dikirim melalui proses replikasi.

Dalam contoh sebelumnya, menganggap bahwa Anda juga memiliki horisontal penyaring yang didefinisikan pada TABLE1: di mana col2 = 'Dallas'. Jika Anda mengeksekusi kode ini:
UPDATE table1 set col2 = 'New York' where col1 = 3
				
logreader agen hanya tempat HAPUS disimpan prosedur panggilan untuk diterapkan ke pelanggan sejak Diperbarui baris tidak memenuhi kriteria horizontal filter.

Sekarang, jika Anda Jalankan kode ini:
UPDATE table1 set col2 = 'Dallas' where col1 = 3
				
logreader menghasilkan hanya MASUKKAN disimpan prosedur panggilan, karena baris sebelumnya tidak memenuhi penyaring kondisi.

Meskipun UPDATE Operasi dilakukan pada penerbit, hanya yang sesuai perintah diterapkan pada pelanggan.

REFERENSI

SQL Server 2000 Paket Layanan 1, atau yang lebih baru, melihat artikel berikut pada Basis Pengetahuan Microsoft:
302341 INF: Bendera jejak baru untuk mengaktifkan Singleton Update untuk Transactional Replication with scripts

Properti

ID Artikel: 238254 - Kajian Terakhir: 20 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
Kata kunci: 
kbinfo kbmt KB238254 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:238254

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com