Bagikan melalui


sp_table_validation (T-SQL)

Berlaku untuk: SQL Server

Mengembalikan informasi rowcount atau checksum pada tabel atau tampilan terindeks, atau membandingkan informasi rowcount atau checksum yang disediakan dengan tabel atau tampilan terindeks yang ditentukan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi dan di Pelanggan pada database langganan.

Catatan

sp_table_validation tidak didukung untuk Oracle Publishers.

Konvensi sintaks transact-SQL

Sintaks

sp_table_validation [ @table = ] 'table'
    [ , [ @expected_rowcount = ] type_of_check_requested OUTPUT ]
    [ , [ @expected_checksum = ] expected_checksum OUTPUT ]
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @owner = ] 'owner' ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @column_list = ] 'column_list' ]
[ ; ]

Argumen

[ @table = ] 'tabel'

Nama tabel. table adalah sysname, tanpa default.

[ @expected_rowcount = ] expected_rowcount OUTPUT

Menentukan apakah akan mengembalikan jumlah baris yang diharapkan dalam tabel. @expected_rowcount int, dengan default NULL. Jika NULL, rowcount aktual dikembalikan sebagai parameter output. Jika nilai disediakan, nilai tersebut diperiksa terhadap rowcount aktual untuk mengidentifikasi perbedaan apa pun.

[ @expected_checksum = ] expected_checksum OUTPUT

Menentukan apakah akan mengembalikan checksum yang diharapkan untuk tabel. @expected_checksum numerik, dengan default NULL. Jika NULL, checksum aktual dikembalikan sebagai parameter output. Jika nilai disediakan, nilai tersebut diperiksa terhadap checksum aktual untuk mengidentifikasi perbedaan apa pun.

[ @rowcount_only = ] type_of_check_requested

Menentukan jenis checksum atau rowcount apa yang akan dilakukan. @rowcount_only kecil, dengan default 1.

Jika 0, lakukan rowcount dan checksum yang kompatibel dengan SQL Server 7.0.

Jika 1, lakukan pemeriksaan rowcount saja.

Jika 2, lakukan rowcount dan checksum biner.

[ @owner = ] 'pemilik'

Nama pemilik tabel. @owner adalah sysname, dengan default NULL.

[ @full_or_fast = ] full_or_fast

Metode yang digunakan untuk menghitung rowcount. @full_or_fast kecil, dengan default 2, dan bisa menjadi salah satu nilai ini.

Nilai Deskripsi
0 Apakah jumlah penuh menggunakan COUNT(*).
1 Apakah hitungan cepat dari sysindexes.rows. Menghitung baris jauh sysindexes lebih cepat daripada menghitung baris dalam tabel aktual. Namun, karena sysindexes diperbarui dengan malas, rowcount mungkin tidak akurat.
2 (default) Lakukan penghitungan cepat bersyarat dengan terlebih dahulu mencoba metode cepat. Jika metode cepat menunjukkan perbedaan, kembali ke metode penuh. Jika expected_rowcount NULL dan prosedur tersimpan sedang digunakan untuk mendapatkan nilai, nilai lengkap COUNT(*) selalu digunakan.

[ @shutdown_agent = ] shutdown_agent

Jika Agen Distribusi menjalankan sp_table_validation, menentukan apakah Agen Distribusi harus segera dimatikan setelah menyelesaikan validasi. @shutdown_agent adalah bit, dengan default 0. Jika 0, agen replikasi tidak dimatikan. Jika 1, kesalahan 20578 dinaikkan dan agen replikasi disinyalir akan dimatikan. Parameter ini diabaikan ketika sp_table_validation dijalankan langsung oleh pengguna.

[ @table_name = ] 'table_name'

Nama tabel tampilan yang digunakan untuk pesan output. table_name adalah sysname, dengan default @table.

[ @column_list = ] 'column_list'

Daftar kolom yang harus digunakan dalam fungsi checksum. column_list adalah nvarchar(4000), dengan default NULL. Mengaktifkan validasi artikel penggabungan untuk menentukan daftar kolom yang mengecualikan kolom komputasi dan tanda waktu.

Mengembalikan nilai kode

Jika melakukan validasi checksum dan checksum yang diharapkan sama dengan checksum dalam tabel, sp_table_validation mengembalikan pesan bahwa tabel melewati validasi checksum. Jika tidak, ini mengembalikan pesan bahwa tabel mungkin tidak sinkron dan melaporkan perbedaan antara jumlah baris yang diharapkan dan aktual.

Jika melakukan validasi rowcount dan jumlah baris yang diharapkan sama dengan angka dalam tabel, sp_table_validation mengembalikan pesan bahwa tabel melewati validasi rowcount. Jika tidak, ini mengembalikan pesan bahwa tabel mungkin tidak sinkron dan melaporkan perbedaan antara jumlah baris yang diharapkan dan aktual.

Keterangan

sp_table_validation digunakan dalam semua jenis replikasi. sp_table_validation tidak didukung untuk Oracle Publishers.

Checksum menghitung pemeriksaan redundansi siklik 32-bit (CRC) pada seluruh gambar baris di halaman. Ini tidak secara selektif memeriksa kolom dan tidak dapat beroperasi pada tampilan atau partisi vertikal tabel. Selain itu, checksum melompati konten kolom teks dan gambar (berdasarkan desain).

Saat melakukan checksum, struktur tabel harus identik antara kedua server; artinya, tabel harus memiliki kolom yang sama yang ada dalam urutan yang sama, jenis dan panjang data yang sama, dan kondisi NULL/NOT NULL yang sama. Misalnya, jika Publisher melakukan CREATE TABLE, maka ALTER TABLE untuk menambahkan kolom, tetapi skrip yang diterapkan pada Pelanggan adalah tabel CREATE sederhana, strukturnya TIDAK sama. Jika Anda tidak yakin bahwa struktur kedua tabel identik, lihat syscolumns dan konfirmasikan bahwa offset di setiap tabel sama.

Nilai floating point kemungkinan akan menghasilkan perbedaan checksum jika bcp mode karakter digunakan, yang terjadi jika publikasi memiliki pelanggan non-SQL Server. Ini disebabkan oleh perbedaan kecil dan tidak dapat ditolak dalam presisi ketika melakukan konversi ke dan dari mode karakter.

Izin

Untuk menjalankan sp_table_validation, Anda harus memiliki izin SELECT pada tabel yang sedang divalidasi.