Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Utilitas tablediff digunakan untuk membandingkan data dalam dua tabel untuk non-konvergensi, dan berguna untuk memecahkan masalah nonkonvergensi dalam topologi replikasi. Utilitas ini dapat digunakan dari prompt perintah atau dalam file batch untuk melakukan tugas berikut:
Bandingkan setiap baris antara tabel sumber dalam instans 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 dan membawa tabel sumber dan tujuan ke dalam konvergensi.
Catat hasil ke file output atau ke dalam tabel di database tujuan.
Catatan
Utilitas tablediff adalah bagian dari alat Replikasi SQL Server. Di SQL Server 2022 (16.x), Anda dapat menemukan tablediff.exe di lokasi C:\Program Files\Microsoft SQL Server\160\COM defaultnya setelah menginstal fitur replikasi.
Sintaks
tablediff
[ -? ] |
{
-sourceserver source_server_name [ \instance_name ]
-sourcedatabase source_database
-sourcetable source_table_name
[ -sourceschema source_schema_name ]
[ -sourcepassword source_password ]
[ -sourceuser source_login ]
[ -sourcelocked ]
-destinationserver destination_server_name [ \instance_name ]
-destinationdatabase subscription_database
-destinationtable destination_table
[ -destinationschema destination_schema_name ]
[ -destinationpassword destination_password ]
[ -destinationuser destination_login ]
[ -destinationlocked ]
[ -b large_object_bytes ]
[ -bf number_of_statements ]
[ -c ]
[ -dt ]
[ -et table_name ]
[ -f [ file_name ] ]
[ -o output_file_name ]
[ -q ]
[ -rc number_of_retries ]
[ -ri retry_interval ]
[ -strict ]
[ -t connection_timeouts ]
}
Argumen
[ -? ]
Mengembalikan daftar parameter yang didukung.
-sourceserver source_server_name[\instance_name]
Menentukan nama server sumber. Tentukan source_server_name untuk instans default SQL Server. Tentukan source_server_name\instance_name untuk instans SQL Server yang diberi nama.
-sourcedatabase source_database
Menentukan nama database sumber.
-sourcetable source_table_name
Menentukan nama tabel sumber yang sedang diperiksa.
-sourceschema source_schema_name
Pemilik skema tabel sumber. Secara default, pemilik tabel diasumsikan sebagai dbo.
-sourcepassword source_password
Menentukan 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, amankan file untuk mencegah akses yang tidak sah.
-sourceuser source_login
Menentukan login yang 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
Mengunci tabel sumber selama perbandingan dengan menggunakan petunjuk tabel TABLOCK dan HOLDLOCK.
-destinationserver destination_server_name[\instance_name]
Menentukan nama server tujuan. Tentukan destination_server_name untuk instans default SQL Server. Tentukan <destination_server_name>\<instance_name> untuk instans SQL Server yang diberi nama.
-destinationdatabase subscription_database
Menentukan nama database tujuan.
-destinationtable destination_table
Menentukan nama tabel tujuan.
-destinationschema destination_schema_name
Pemilik skema tabel tujuan. Secara default, pemilik tabel diasumsikan sebagai dbo.
-destinationpassword destination_password
Menentukan kata sandi untuk login 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, amankan file untuk mencegah akses yang tidak sah.
-destinationuser destination_login
Menentukan login yang digunakan untuk menyambungkan ke server tujuan menggunakan autentikasi SQL Server. Jika Anda tidak menyediakan destination_login, koneksi menggunakan autentikasi Windows. Jika memungkinkan, gunakan autentikasi Windows.
-tujuanterkunci
Mengunci tabel tujuan selama perbandingan dengan menggunakan petunjuk tabel TABLOCK dan HOLDLOCK.
-b large_object_bytes
Menentukan jumlah byte yang akan dibandingkan untuk kolom jenis data objek besar, yang mencakup teks, ntext, gambar, varchar(max), nvarchar(max), dan varbinary(max). Nilai default untuk large_object_bytes adalah ukuran kolom. Data apa pun yang lebih besar dari large_object_bytes tidak dibandingkan.
-bf jumlah_pernyataan
Menentukan jumlah pernyataan Transact-SQL untuk menulis ke file skrip Transact-SQL saat ini saat -f opsi digunakan. Ketika jumlah pernyataan Transact-SQL melebihi number_of_statements, file skrip Transact-SQL baru dibuat.
-c
Membandingkan perbedaan pada tingkat kolom.
-Dt
Menghilangkan 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, Anda harus menggunakan -DT atau operasi 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 Anda tidak menentukan file_name, utilitas akan menghasilkan file skrip Transact-SQL di direktori tempatnya berjalan.
-o output_file_name
Menentukan nama lengkap dan jalur file output.
-q
Melakukan perbandingan cepat dengan hanya membandingkan jumlah dan skema baris.
-rc number_of_retries
Berapa kali utilitas mencoba kembali operasi yang gagal.
-ri retry_interval
Jeda waktu, dalam detik, untuk menunggu antara percobaan mengulang.
-ketat
Membandingkan skema sumber dan tujuan secara ketat.
-t batas_waktu_koneksi
Mengatur periode batas waktu koneksi, dalam detik, untuk koneksi ke server sumber dan server tujuan.
Nilai Kembalian
| Nilai | Deskripsi |
|---|---|
0 |
Berhasil |
1 |
Kesalahan kritis |
2 |
Perbedaan antar tabel |
Keterangan
Anda tidak dapat menggunakan utilitas tablediff dengan server non-SQL Server.
Tabel dengan kolom tipe data sql_variant 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(maks) | ntext |
| varbinary(max) | gambar |
| text | varchar(max) |
| ntext | nvarchar(maks) |
| gambar | varbinary(max) |
-strict Gunakan opsi untuk melarang pemetaan ini dan melakukan validasi ketat.
Tabel sumber dalam perbandingan harus berisi setidaknya satu kunci utama, identitas, atau ROWGUID kolom. Saat Anda menggunakan opsi -strict, tabel tujuan juga harus memiliki kolom kunci utama, identitas, atau ROWGUID.
Skrip Transact-SQL yang dihasilkan untuk membawa tabel tujuan ke dalam konvergensi tidak menyertakan jenis data berikut:
- varchar(max)
- nvarchar(maks)
- varbinary(max)
- timestamp
- xml
- text
- ntext
- gambar
Izin
Untuk membandingkan tabel, Anda memerlukan SELECT ALL izin pada objek tabel yang Anda bandingkan.
Untuk menggunakan opsi -et, Anda harus menjadi anggota peran tetap pada database db_owner, atau setidaknya memiliki izin CREATE TABLE dalam database langganan dan izin ALTER pada skema pemilik tujuan di server tujuan.
Untuk menggunakan opsi -dt, Anda harus menjadi anggota peran database tetap db_owner, atau setidaknya memiliki izin ALTER pada skema pemilik tujuan di server tujuan.
Untuk menggunakan -o opsi atau -f , Anda harus memiliki izin tulis ke lokasi direktori file yang ditentukan.