utilitas tablediff
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:
Perbandingan baris menurut 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 untuk 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), tablediff.exe
dapat ditemukan di lokasi C:\Program Files\Microsoft SQL Server\160\COM
defaultnya , setelah fitur replikasi diinstal.
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 instance_name source_server_name\ untuk instans SQL Server bernama.
-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, Anda harus mengamankan 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
Tabel sumber dikunci selama perbandingan 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 instance_name destination_server_name\untuk instans SQL Server bernama.
-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, Anda harus mengamankan file untuk mencegah akses yang tidak sah.
-destinationuser destination_login
Menentukan login yang 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
Menentukan jumlah byte yang akan dibandingkan untuk kolom jenis data objek besar, yang mencakup teks, ntext, gambar, varchar(max), nvarchar(max) dan varbinary(max). large_object_bytes default ke ukuran kolom. Data apa pun yang lebih besar dari large_object_bytes tidak dibandingkan.
-bf number_of_statements
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 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 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
Menentukan 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.
Nilai hasil
Nilai | Deskripsi |
---|---|
0 |
Berhasil |
1 |
Kesalahan kritis |
2 |
Perbedaan tabel |
Keterangan
Utilitas tablediff tidak dapat digunakan 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 |
---|---|
kecil | 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 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(maks)
- varbinary(max)
- timestamp
- xml
- text
- ntext
- gambar
Izin
Untuk membandingkan tabel, Anda memerlukan izin SELECT ALL pada objek tabel yang dibandingkan.
Untuk menggunakan opsi ini -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 ini -dt
, Anda harus menjadi anggota peran database tetap db_owner, atau setidaknya memiliki izin UBAH pada skema pemilik tujuan di server tujuan.
Untuk menggunakan -o
opsi atau -f
, Anda harus memiliki izin tulis ke lokasi direktori file yang ditentukan.