Bagikan melalui


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_genhistorytabel sistem , MSmerge_contents, dan MSmerge_tombstone . Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Konvensi sintaks transact-SQL

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 ), 0berjalan 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'

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

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

  3. Setelah semua penggabungan selesai, jalankan sp_mergecleanupmetadata.

  4. Jalankan sp_reinitmergepullsubscription pada semua pelanggan menggunakan langganan penarikan bernama atau anonim untuk memastikan konvergensi data.

  5. Jika Anda menjalankan penggabungan mode berkelanjutan, lihat Pertimbangan Khusus untuk Penggabungan Mode Berkelanjutan nanti di bagian ini.

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

  7. Mencadangkan database publikasi. Kegagalan untuk melakukannya dapat menyebabkan kegagalan penggabungan setelah pemulihan database publikasi.

Jalankan sp_mergecleanupmetadata dengan @reinitialize_subscriber = N'false'

  1. Hentikan semua pembaruan untuk database publikasi dan langganan.

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

  3. Setelah semua penggabungan selesai, jalankan sp_mergecleanupmetadata.

  4. Jika Anda menjalankan penggabungan mode berkelanjutan, lihat Pertimbangan Khusus untuk Penggabungan Mode Berkelanjutan nanti di bagian ini.

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

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