utilitas tablediff

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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-tugas berikut:

  • Perbandingan baris demi baris antara tabel sumber dalam instans SQL Server bertindak sebagai Penerbit replikasi, dan tabel tujuan pada satu atau beberapa instans SQL Server 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. Pada SQL Server 2022 (16.x), tablediff.exe dapat ditemukan di lokasi C:\Program Files\Microsoft SQL Server\160\COMdefault , 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.

-destination_schema_name skema tujuan

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

-destinationpassword destination_password

Menentukan 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

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 untuk dibandingkan dengan 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 kembali

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
tinyint smallint, int, atau bigint
smallint int atau bigint
int bigint
timestamp varbinary
varchar(max) teks
nvarchar(maks) ntext
varbinary(max) gambar
teks 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 primer, identitas, atau kolom ROWGUID. Saat Anda menggunakan -strict opsi , 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
  • teks
  • 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.

Lihat juga