sp_mergecleanupmetadata (T-SQL)
Berlaku untuk: SQL Server
Hanya boleh digunakan dalam topologi replikasi yang menyertakan server yang menjalankan versi SQL Server sebelum Paket Layanan SQL Server 2000 (8.x) 1. sp_mergecleanupmetadata
memungkinkan administrator membersihkan metadata dalam MSmerge_genhistory
tabel sistem , MSmerge_contents
, dan MSmerge_tombstone
. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.
Sintaks
sp_mergecleanupmetadata
[ [ @publication = ] N'publication' ]
[ , [ @reinitialize_subscriber = ] N'reinitialize_subscriber' ]
[ ; ]
Argumen
[ @publication = ] N'publikasi'
Nama publikasi. @publication adalah sysname, dengan default %
, yang membersihkan metadata untuk semua publikasi. Publikasi harus sudah ada jika ditentukan secara eksplisit.
[ @reinitialize_subscriber = ] N'reinitialize_subscriber'
Menentukan apakah akan menginisialisasi ulang Pelanggan. @reinitialize_subscriber adalah nvarchar(5), dengan default true
.
- Jika
true
, langganan ditandai untuk reinisialisasi. - Jika
false
, langganan tidak ditandai untuk reinisialisasi.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Keterangan
sp_mergecleanupmetadata
hanya boleh digunakan dalam topologi replikasi yang menyertakan server yang menjalankan versi SQL Server sebelum Paket Layanan SQL Server 2000 (8.x) 1. Topologi yang hanya mencakup SQL Server 2000 (8.x) Paket Layanan 1 atau yang lebih baru harus menggunakan pembersihan metadata berbasis retensi otomatis. Saat menjalankan prosedur tersimpan ini, waspadai pertumbuhan file log yang diperlukan dan berpotensi besar di komputer tempat prosedur tersimpan berjalan.
Setelah sp_mergecleanupmetadata
dijalankan, secara default, semua langganan di Pelanggan publikasi yang memiliki metadata yang disimpan di MSmerge_genhistory
, MSmerge_contents
dan MSmerge_tombstone
ditandai untuk reinitialisasi, setiap perubahan yang tertunda di Pelanggan hilang, dan rekam jepret saat ini ditandai usang.
Jika ada beberapa publikasi pada database, dan salah satu publikasi tersebut menggunakan periode retensi publikasi tak terbatas (@retention ), 0
berjalan sp_mergecleanupmetadata
tidak membersihkan metadata pelacakan perubahan replikasi gabungan untuk database. Untuk alasan ini, gunakan retensi publikasi tak terbatas dengan hati-hati.
Saat menjalankan prosedur tersimpan ini, Anda dapat memilih apakah akan menginisialisasi ulang Pelanggan dengan mengatur parameter @reinitialize_subscriber ke true
(default) atau false
. Jika sp_mergecleanupmetadata
dijalankan dengan parameter @reinitialize_subscriber diatur ke true
, rekam jepret diterapkan kembali di Pelanggan meskipun langganan dibuat tanpa rekam jepret awal (misalnya, jika data rekam jepret dan skema diterapkan secara manual atau sudah ada di Pelanggan). Mengatur parameter ke false
harus digunakan dengan hati-hati, karena jika publikasi tidak diinisialisasi ulang, Anda harus memastikan bahwa data di Penerbit dan Pelanggan disinkronkan.
Terlepas dari nilai @reinitialize_subscriber, sp_mergecleanupmetadata
gagal jika ada proses penggabungan yang sedang berlangsung yang mencoba mengunggah perubahan ke Penerbit atau Pelanggan penerbit ulang pada saat prosedur tersimpan dipanggil.
Jalankan sp_mergecleanupmetadata dengan @reinitialize_subscriber = N'true'
Disarankan, tetapi tidak diperlukan, agar Anda menghentikan semua pembaruan untuk database publikasi dan langganan. Jika pembaruan berlanjut, pembaruan apa pun yang dibuat di Pelanggan sejak penggabungan terakhir hilang ketika publikasi diinisialisasi ulang, tetapi konvergensi data dipertahankan.
Jalankan penggabungan dengan menjalankan Agen Penggabungan. Kami menyarankan agar Anda menggunakan opsi baris perintah -Validasi agen di setiap Pelanggan saat Anda menjalankan Agen Penggabungan. Jika Anda menjalankan penggabungan mode berkelanjutan, lihat Pertimbangan Khusus untuk Penggabungan Mode Berkelanjutan nanti di bagian ini.
Setelah semua penggabungan selesai, jalankan
sp_mergecleanupmetadata
.Jalankan
sp_reinitmergepullsubscription
pada semua pelanggan menggunakan langganan penarikan bernama atau anonim untuk memastikan konvergensi data.Jika Anda menjalankan penggabungan mode berkelanjutan, lihat Pertimbangan Khusus untuk Penggabungan Mode Berkelanjutan nanti di bagian ini.
Regenerasi file rekam jepret untuk semua publikasi gabungan yang terlibat di semua tingkatan. Jika Anda mencoba menggabungkan tanpa meregenerasi rekam jepret terlebih dahulu, Anda menerima perintah untuk meregenerasi rekam jepret.
Mencadangkan database publikasi. Kegagalan untuk melakukannya dapat menyebabkan kegagalan penggabungan setelah pemulihan database publikasi.
Jalankan sp_mergecleanupmetadata dengan @reinitialize_subscriber = N'false'
Hentikan semua pembaruan untuk database publikasi dan langganan.
Jalankan penggabungan dengan menjalankan Agen Penggabungan. Kami menyarankan agar Anda menggunakan
-Validate
opsi baris perintah agen di setiap Pelanggan saat Anda menjalankan Agen Penggabungan. Jika Anda menjalankan penggabungan mode berkelanjutan, lihat Pertimbangan khusus untuk penggabungan mode berkelanjutan nanti di artikel ini.Setelah semua penggabungan selesai, jalankan
sp_mergecleanupmetadata
.Jika Anda menjalankan penggabungan mode berkelanjutan, lihat Pertimbangan Khusus untuk Penggabungan Mode Berkelanjutan nanti di bagian ini.
Regenerasi file rekam jepret untuk semua publikasi gabungan yang terlibat di semua tingkatan. Jika Anda mencoba menggabungkan tanpa meregenerasi rekam jepret terlebih dahulu, Anda menerima perintah untuk meregenerasi rekam jepret.
Mencadangkan database publikasi. Kegagalan untuk melakukannya dapat menyebabkan kegagalan penggabungan setelah pemulihan database publikasi.
Pertimbangan khusus untuk penggabungan mode berkelanjutan
Jika Menjalankan penggabungan mode berkelanjutan, Anda harus:
Hentikan Merge Agent, lalu lakukan penggabungan lain tanpa
-Continuous
parameter yang ditentukan.Nonaktifkan publikasi dengan
sp_changemergepublication
untuk memastikan bahwa setiap penggabungan mode berkelanjutan yang melakukan polling untuk status publikasi gagal.EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive';
Ketika Anda telah menyelesaikan langkah 3 dari menjalankan sp_mergecleanupmetadata
, lanjutkan penggabungan mode berkelanjutan berdasarkan cara Anda menghentikannya. Yaitu:
Tambahkan kembali parameter -Continuous untuk Agen Penggabungan.
Aktifkan kembali publikasi dengan
sp_changemergepublication
.EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
Izin
Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_mergecleanupmetadata
.
Untuk menggunakan prosedur tersimpan ini, Publisher harus menjalankan SQL Server 2000 (8.x). Pelanggan harus menjalankan SQL Server 2000 (8.x) atau SQL Server 7.0, Paket Layanan 2.