Bagikan melalui


Utilitas tablediff

Utilitas tablediff digunakan untuk membandingkan data dalam dua tabel untuk non-konvergensi, dan sangat berguna untuk memecahkan masalah non-konvergensi dalam topologi replikasi. Utilitas ini dapat digunakan dari prompt perintah atau dalam file batch untuk melakukan tugas berikut:

  • Perbandingan baris menurut baris antara tabel sumber dalam instans Microsoft SQL Server yang bertindak sebagai Penerbit replikasi dan tabel tujuan pada satu atau beberapa instans SQL Server yang bertindak sebagai Pelanggan replikasi.

  • Lakukan perbandingan cepat dengan hanya membandingkan jumlah dan skema baris.

  • Lakukan perbandingan tingkat kolom.

  • Buat skrip Transact-SQL untuk memperbaiki perbedaan di server tujuan untuk membawa tabel sumber dan tujuan ke dalam konvergensi.

  • Catat hasil ke file output atau ke dalam tabel di database tujuan.

Sintaks

  
      tablediff   
[ -? ] |   
{  
        -sourceserversource_server_name[\instance_name]  
        -sourcedatabasesource_database-sourcetablesource_table_name   
    [ -sourceschemasource_schema_name ]  
    [ -sourcepasswordsource_password ]  
    [ -sourceusersource_login ]  
    [ -sourcelocked ]  
        -destinationserverdestination_server_name[\instance_name]  
        -destinationdatabasesubscription_database-destinationtabledestination_table   
    [ -destinationschemadestination_schema_name ]  
    [ -destinationpassworddestination_password ]  
    [ -destinationuserdestination_login ]  
    [ -destinationlocked ]  
    [ -blarge_object_bytes ]   
    [ -bfnumber_of_statements ]   
    [ -c ]   
    [ -dt ]   
    [ -ettable_name ]   
    [ -f [ file_name ] ]   
    [ -ooutput_file_name ]   
    [ -q ]   
    [ -rcnumber_of_retries ]   
    [ -riretry_interval ]   
    [ -strict ]  
    [ -tconnection_timeouts ]   
}  

Argumen

Apa yang terjadi denganmu ? ]
Mengembalikan daftar parameter yang didukung.

-sourceserver source_server_name[\instance_name]
Adalah nama server sumber. Tentukan source_server_name untuk instans default SQL Server. Tentukan instance_name source_server_name\ untuk instans SQL Server bernama.

-sourcedatabase source_database
Adalah nama database sumber.

-sourcetable source_table_name
Adalah nama tabel sumber yang sedang diperiksa.

-sourceschema source_schema_name
Pemilik skema tabel sumber. Secara default, pemilik tabel diasumsikan sebagai dbo.

-sourcepassword source_password
Apakah kata sandi untuk masuk yang digunakan untuk menyambungkan ke server sumber menggunakan Autentikasi SQL Server.

Penting

Jika memungkinkan, berikan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial dalam file skrip, Anda harus mengamankan file untuk mencegah akses yang tidak sah.

-sourceuser source_login
Apakah login digunakan untuk menyambungkan ke server sumber menggunakan Autentikasi SQL Server. Jika source_login tidak disediakan, maka Autentikasi Windows digunakan saat menyambungkan ke server sumber. Jika memungkinkan, gunakan Autentikasi Windows.

-sourcelocked
Tabel sumber dikunci selama perbandingan menggunakan petunjuk tabel TABLOCK dan HOLDLOCK.

-destinationserver destination_server_name[\instance_name]
Adalah nama server tujuan. Tentukan destination_server_name untuk instans default SQL Server. Tentukan instance_name destination_server_name\untuk instans SQL Server bernama.

-destinationdatabase subscription_database
Adalah nama database tujuan.

-destinationtable destination_table
Adalah nama tabel tujuan.

-destinationschema destination_schema_name
Pemilik skema tabel tujuan. Secara default, pemilik tabel diasumsikan sebagai dbo.

-destinationpassword destination_password
Apakah kata sandi untuk masuk yang digunakan untuk menyambungkan ke server tujuan menggunakan Autentikasi SQL Server.

Penting

Jika memungkinkan, berikan kredensial keamanan saat runtime. Jika Anda harus menyimpan kredensial dalam file skrip, Anda harus mengamankan file untuk mencegah akses yang tidak sah.

-destinationuser destination_login
Apakah login digunakan untuk menyambungkan ke server tujuan menggunakan Autentikasi SQL Server. Jika destination_login tidak disediakan, maka Autentikasi Windows digunakan saat menyambungkan ke server. Jika memungkinkan, gunakan Autentikasi Windows.

-destinationlocked
Tabel tujuan dikunci selama perbandingan menggunakan petunjuk tabel TABLOCK dan HOLDLOCK.

-b large_object_bytes
Adalah jumlah byte untuk dibandingkan untuk kolom jenis data objek besar, yang mencakup: text, , ntextimage, varchar(max), nvarchar(max) dan varbinary(max). large_object_bytes default ke ukuran kolom. Data apa pun di atas large_object_bytes tidak akan dibandingkan.

-bf number_of_statements
Adalah jumlah pernyataan Transact-SQL untuk menulis ke file skrip Transact-SQL saat ini ketika opsi -f digunakan. Ketika jumlah pernyataan Transact-SQL melebihi number_of_statements, file skrip Transact-SQL baru dibuat.

-c
Membandingkan perbedaan tingkat kolom.

-Dt
Letakkan tabel hasil yang ditentukan oleh table_name, jika tabel sudah ada.

-et table_name
Menentukan nama tabel hasil yang akan dibuat. Jika tabel ini sudah ada, -DT harus digunakan atau operasi akan gagal.

-f [ file_name ]
Menghasilkan skrip Transact-SQL untuk membawa tabel di server tujuan ke dalam konvergensi dengan tabel di server sumber. Anda dapat secara opsional menentukan nama dan jalur untuk file skrip Transact-SQL yang dihasilkan. Jika file_name tidak ditentukan, file skrip Transact-SQL dihasilkan di direktori tempat utilitas berjalan.

-o output_file_name
Adalah nama lengkap dan jalur file output.

-q
Lakukan perbandingan cepat dengan hanya membandingkan jumlah dan skema baris.

-rc number_of_retries
Berapa kali utilitas mencoba kembali operasi yang gagal.

-ri retry_interval
Interval, dalam detik, untuk menunggu di antara percobaan ulang.

-ketat
Skema sumber dan tujuan sangat dibandingkan.

-t connection_timeouts
Mengatur periode batas waktu koneksi, dalam detik, untuk koneksi ke server sumber dan server tujuan.

Tampilkan Nilai

Nilai Deskripsi
0 Berhasil
1 Kesalahan kritis
2 Perbedaan tabel

Keterangan

Utilitas tablediff tidak dapat digunakan dengan server non-SQL Server.

Tabel dengan sql_variant kolom tipe data tidak didukung.

Secara default, utilitas tablediff mendukung pemetaan jenis data berikut antara kolom sumber dan tujuan.

Jenis data sumber Jenis data tujuan
tinyint smallint, int, atau bigint
smallint int atau bigint
int bigint
timestamp varbinary
varchar(max) text
nvarchar(max) ntext
varbinary(max) image
text varchar(max)
ntext nvarchar(max)
image varbinary(max)

Gunakan opsi -strict untuk melarang pemetaan ini dan melakukan validasi ketat.

Tabel sumber dalam perbandingan harus berisi setidaknya satu kunci utama, identitas, atau kolom ROWGUID. Saat Anda menggunakan opsi -strict , tabel tujuan juga harus memiliki kunci utama, identitas, atau kolom ROWGUID.

Skrip Transact-SQL yang dihasilkan untuk membawa tabel tujuan ke dalam konvergensi tidak menyertakan jenis data berikut:

  • varchar(max)

  • nvarchar(max)

  • varbinary(max)

  • timestamp

  • xml

  • text

  • ntext

  • image

Izin

Untuk membandingkan tabel, Anda memerlukan izin SELECT ALL pada objek tabel yang dibandingkan.

Untuk menggunakan opsi -et , Anda harus menjadi anggota peran database tetap db_owner, atau setidaknya memiliki izin CREATE TABLE dalam database langganan dan izin UBAH pada skema pemilik tujuan di server tujuan.

Untuk menggunakan opsi -dt , Anda harus menjadi anggota peran database tetap db_owner, atau setidaknya memiliki izin UBAH pada skema pemilik tujuan di server tujuan.

Untuk menggunakan opsi -o atau -f , Anda harus memiliki izin tulis ke lokasi direktori file yang ditentukan.

Lihat Juga

Membandingkan Tabel yang Direplikasi untuk Perbedaan (Pemrograman Replikasi)