Aracılığıyla paylaş


tablediff yardımcı programı

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Tablediff yardımcı programı, yakınsama olmayan iki tablodaki verileri karşılaştırmak için kullanılır ve çoğaltma topolojisindeki yakınsanma sorunlarını gidermek için yararlıdır. Bu yardımcı program, aşağıdaki görevleri gerçekleştirmek için komut isteminden veya bir toplu iş dosyasında kullanılabilir:

  • Çoğaltma Yayımcısı olarak davranan bir SQL Server örneğindeki kaynak tablo ile çoğaltma Abonesi olarak davranan bir veya daha fazla SQL Server örneğindeki hedef tablo arasındaki her satırı karşılaştırın.

  • Yalnızca satır sayılarını ve şemayı karşılaştırarak hızlı bir karşılaştırma gerçekleştirin.

  • Sütun düzeyinde karşılaştırmalar yapın.

  • Hedef sunucudaki tutarsızlıkları düzeltmek ve kaynak ve hedef tabloları yakınsanmaya getirmek için bir Transact-SQL betiği oluşturun.

  • Sonuçları bir çıkış dosyasına ya da hedef veritabanındaki bir tabloya kaydedin.

Uyarı

tablediff yardımcı programı, SQL Server Çoğaltma araçlarının bir parçasıdır. SQL Server 2022'de (16.x), çoğaltma özelliğini yükledikten sonra varsayılan konumunda tablediff.exe bulabilirsinizC:\Program Files\Microsoft SQL Server\160\COM.

Sözdizimi

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 ]
}

Tartışmalar

[ -? ]

Desteklenen parametrelerin listesini döndürür.

-sourceserver source_server_name[\instance_name]

Kaynak sunucunun adını belirtir. SQL Server'ın varsayılan örneği için source_server_name belirtin. SQL Server'ın adlandırılmış bir örneği için source_server_name\instance_name belirtin.

-sourcedatabase source_database

Kaynak veritabanının adını belirtir.

-sourcetable source_table_name

Kontrol edilen kaynak tablonun adını belirtir.

-kaynakşema kaynak_şema_adı

Kaynak tablonun şema sahibi. Varsayılan olarak, tablo sahibinin dbo olduğu varsayılır.

-sourcepassword source_password

SQL Server Kimlik Doğrulaması kullanarak kaynak sunucuya bağlanmak için kullanılan oturum açma parolasını belirtir.

Önemli

Mümkün olduğunda, çalışma zamanında güvenlik kimlik bilgilerini sağlayın. Kimlik bilgilerini bir betik dosyasında depolamanız gerekiyorsa, yetkisiz erişimi önlemek için dosyanın güvenliğini sağlayın.

-sourceuser source_login

SQL Server Kimlik Doğrulaması kullanarak kaynak sunucuya bağlanmak için kullanılan oturum açma bilgilerini belirtir. source_login sağlanmazsa, kaynak sunucuya bağlanırken Windows Kimlik Doğrulaması kullanılır. Mümkün olduğunda Windows kimlik doğrulamayı kullanın.

-sourcelocked

Karşılaştırma sırasında TABLOCK ve HOLDLOCK tablo ipuçlarını kullanarak kaynak tabloyu kilitler.

-destinationserver destination_server_name[\instance_name]

Hedef sunucunun adını belirtir. SQL Server'ın varsayılan örneği için destination_server_name belirtin. SQL Server'ın adlandırılmış bir örneği için belirtin <destination_server_name>\<instance_name> .

-hedefveritabanı subscription_database

Hedef veritabanının adını belirtir.

-destinationtable destination_table

Hedef tablonun adını belirtir.

-destinationschema destination_schema_name

Hedef tablonun şema sahibi. Varsayılan olarak, tablo sahibinin dbo olduğu varsayılır.

-destinationpassword destination_password

SQL Server Kimlik Doğrulaması kullanarak hedef sunucuya bağlanmak için kullanılan oturum açma parolasını belirtir.

Önemli

Mümkün olduğunda, çalışma zamanında güvenlik kimlik bilgilerini sağlayın. Kimlik bilgilerini bir betik dosyasında depolamanız gerekiyorsa, yetkisiz erişimi önlemek için dosyanın güvenliğini sağlayın.

-destinationuser destination_login

SQL Server kimlik doğrulamasını kullanarak hedef sunucuya bağlanmak için kullanılan oturum açma bilgilerini belirtir. destination_login sağlamazsanız, bağlantı Windows kimlik doğrulamasını kullanır. Mümkün olduğunda Windows kimlik doğrulamayı kullanın.

-hedefkilitli

karşılaştırma sırasında TABLOCK ve HOLDLOCK tablo ipuçları kullanılarak hedef tabloyu kilitler.

-b large_object_bytes

Metin, ntext, görüntü, varchar(max), nvarchar(max)ve varbinary(max) içeren büyük nesne veri türü sütunları için karşılaştırılan bayt sayısını belirtir. large_object_bytes için varsayılan değer sütunun boyutudur. large_object_bytes'den büyük veriler karşılaştırılamaz.

-bf bildirim_sayısı

Seçenek -f kullanıldığında, geçerli Transact-SQL betik dosyasına yazılacak Transact-SQL deyimlerinin sayısını belirtir. Transact-SQL ifadelerinin sayısı number_of_statements aşıldığında, yeni bir Transact-SQL betik dosyası oluşturulur.

-c

Sütun seviyesindeki farklılıkları karşılaştırır.

-Dt

Eğer tablo zaten mevcutsa, table_name tarafından belirtilen sonuç tablosunu siler.

-et table_name

Oluşturulacak sonuç tablosunun adını belirtir. Bu tablo zaten varsa, kullanmanız -DT gerekir veya işlem başarısız olur.

-f [ file_name ]

Hedef sunucudaki tabloyu kaynak sunucudaki tabloyla yakınsamaya getirmek için bir Transact-SQL betiği oluşturur. İsteğe bağlı olarak, oluşturulan Transact-SQL betik dosyası için bir ad ve yol belirtebilirsiniz. file_name belirtmezseniz, yardımcı programı çalıştığı dizinde Transact-SQL betik dosyasını oluşturur.

-o output_file_name

Çıkış dosyasının tam adını ve yolunu belirtir.

-q

Yalnızca satır sayılarını ve şemayı karşılaştırarak hızlı bir karşılaştırma gerçekleştirir.

-rc tekrar_sayısı

Yeniden denemelerin sayısı, yardımcı programın başarısız bir işlemi yeniden denemesidir.

-ri retry_interval

Yeniden denemeler arasında bekleme aralığı (saniye cinsinden).

-sıkı

Kaynak ve hedef şemayı kesinlikle karşılaştırır.

-t bağlantı zaman aşımı

Kaynak sunucuya ve hedef sunucuya bağlantılar için bağlantı zaman aşımı süresini saniye cinsinden ayarlar.

Dönüş değeri

Değer Açıklama
0 Başarı
1 Kritik hata
2 Tablo farklılıkları

Açıklamalar

SQL Server olmayan sunucularda tablediff yardımcı programını kullanamazsınız.

sql_variant veri türü sütunları olan tablolar desteklenmez.

Tablediff yardımcı programı varsayılan olarak kaynak ve hedef sütunlar arasında aşağıdaki veri türü eşlemelerini destekler.

Kaynak veri türü Hedef veri türü
tinyint smallint, int veya bigint
smallint int veya bigint
int bigint
zaman damgası varbinary
varchar(max) Metin
nvarchar(max) ntext
varbinary(maks) görüntü
Metin varchar(max)
ntext nvarchar(max)
görüntü varbinary(maks)

-strict Bu eşlemeleri reddetmek ve katı bir doğrulama gerçekleştirmek için seçeneğini kullanın.

Karşılaştırmadaki kaynak tablo en az bir birincil anahtar, kimlik veya ROWGUID sütun içermelidir. -strict seçeneğini kullandığınızda, hedef tablonun birincil anahtarı, kimliği veya ROWGUID sütunu da bulunmalıdır.

Hedef tabloyu yakınsamaya getirmek için oluşturulan Transact-SQL betiği aşağıdaki veri türlerini içermez:

  • varchar(max)
  • nvarchar(max)
  • varbinary(maks)
  • zaman damgası
  • xml
  • Metin
  • ntext
  • görüntü

İzinler

Tabloları karşılaştırmak için, karşılaştırdığınız tablo nesneleri üzerinde izinlere sahip olmanız gerekir SELECT ALL .

seçeneğini -et kullanmak için, db_owner sabit veritabanı rolünün üyesi olmanız veya en azından abonelik veritabanında CREATE TABLE iznine ve hedef sunucudaki hedef sahip şeması üzerinde ALTER iznine sahip olmanız gerekir.

-dt seçeneğini kullanmak için db_owner sabit veritabanı rolünün üyesi olmanız veya en azından hedef sunucudaki hedef şemanın sahibi üzerinde ALTER izniniz olmalıdır.

veya -o seçeneklerini kullanmak -f için, belirtilen dosya dizini konumuna yazma izinleriniz olmalıdır.