Freigeben über


tablediff (Hilfsprogramm)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Mit dem Hilfsprogramm tablediff wird verglichen, ob die Daten in zwei Tabellen konvergent sind. Das Hilfsprogramm eignet sich zur Problembehandlung bei mangelnder Konvergenz in einer Replikationstopologie. Dieses Hilfsprogramm kann an der Eingabeaufforderung oder in einer Batchdatei verwendet werden, um die folgenden Aufgaben auszuführen:

  • Vergleichen Sie jede Zeile zwischen einer Quelltabelle in einer Instanz von SQL Server, die als Replikationsherausgeber fungiert, und die Zieltabelle in einer oder mehreren Instanzen von SQL Server, die als Replikationsabonnent fungieren.

  • Ausführen eines schnellen Vergleichs, indem nur Zeilenanzahl und Schema verglichen werden.

  • Ausführen spaltenweiser Vergleiche.

  • Generieren Sie ein Transact-SQL Skript, um Diskrepanzen auf dem Zielserver zu beheben und die Quell- und Zieltabellen in die Konvergenz zu integrieren.

  • Protokollieren von Ergebnissen in einer Ausgabedatei oder einer Tabelle in der Zieldatenbank.

Hinweis

Das Tablediff-Hilfsprogramm ist Teil der SQL Server-Replikationstools. In SQL Server 2022 (16.x) finden Sie tablediff.exe am Standardspeicherort von C:\Program Files\Microsoft SQL Server\160\COM nach der Installation des Replikationsfeatures.

Syntax

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

Argumente

[ -? ]

Gibt die Liste unterstützter Parameter zurück.

-sourceserver source_server_name[\instance_name]

Gibt den Namen des Quellservers an. Geben Sie Name des Quellservers für die Standardinstanz von SQL Serveran. Geben Sie Name des Quellservers\Instanzname für eine benannte Instanz von SQL Serveran.

-sourcedatabase Quelldatenbank

Gibt den Namen der Quelldatenbank an.

-sourcetable Quelltabellenname

Gibt den Namen der zu überprüfenden Quelldatenbank an.

-sourceschema Quellschemaname

Der Schemabesitzer der Quelltabelle. Standardmäßig wird dbo als Tabellenbesitzer angenommen.

-sourcepassword Quellkennwort

Gibt das Kennwort für die Anmeldung an, die verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Quellserver herzustellen.

Wichtig

Anmeldeinformationen sollten, sofern möglich, zur Laufzeit angegeben werden. Wenn Sie Anmeldeinformationen in einer Skriptdatei speichern müssen, sollten Sie die Datei schützen, um nicht autorisierten Zugriff zu verhindern.

-sourceuser Quellanmeldung

Gibt die Anmeldung an, die verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Quellserver herzustellen. Wenn Quellanmeldung nicht angegeben ist, wird die Windows-Authentifizierung zum Herstellen der Verbindung mit dem Quellserver verwendet. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

-sourcelocked

Sperrt die Quelltabelle während des Vergleichs mithilfe der Tabellensperr-Hinweise TABLOCK und HOLDLOCK.

-destinationserver Zielservername[\Instanzname]

Gibt den Namen des Zielservers an. Angeben von Zielservername für die Standardinstanz von SQL Server. Geben Sie <destination_server_name>\<instance_name> für eine benannte Instanz von SQL Server an.

-destinationdatabase Abonnementdatenbank

Gibt den Namen der Zieldatenbank an.

-destinationtable Zieltabelle

Gibt den Namen der Zieltabelle an.

-destinationschema Zielschemaname

Der Schemabesitzer der Zieltabelle. Standardmäßig wird dbo als Tabellenbesitzer angenommen.

-destinationpassword Zielkennwort

Gibt das Kennwort für die Anmeldung an, die verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Zielserver herzustellen.

Wichtig

Anmeldeinformationen sollten, sofern möglich, zur Laufzeit angegeben werden. Wenn Sie Anmeldeinformationen in einer Skriptdatei speichern müssen, sollten Sie die Datei schützen, um nicht autorisierten Zugriff zu verhindern.

-destinationuser Zielanmeldung

Gibt die Anmeldung an, die zum Herstellen einer Verbindung mit dem Zielserver mithilfe der SQL Server-Authentifizierung verwendet wird. Wenn Sie keine destination_login bereitstellen, verwendet die Verbindung die Windows-Authentifizierung. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

-destinationlocked

Sperrt die Ziel-Tabelle während des Vergleichs mithilfe der Tabelle TABLOCK und HOLDLOCK Hinweise.

-b LOB-Bytes

Gibt die Anzahl der Bytes an, die für Spalten mit großem Objektdatentyp verglichen werden sollen, einschließlich Text, ntext, Bild, varchar(max), nvarchar(max) und varbinary(max). Der Standardwert für large_object_bytes ist die Größe der Spalte. Daten, die größer als LOB-Bytes sind, werden nicht verglichen.

-bf Anweisungsanzahl

Gibt die Anzahl der Transact-SQL-Anweisungen an, die in die aktuelle Transact-SQL-Skriptdatei geschrieben werden können, wenn die Option -f verwendet wird. Wenn die Anzahl der TransactSQL-Anweisungen number_of_statementsüberschreitet, wird eine neue TransactSQL-Skriptdatei erstellt.

-c

Vergleicht Unterschiede auf Spaltenebene.

-dt

Die Ergebnistabelle, die durch table_name angegeben wird, wird gelöscht, falls die Tabelle bereits existiert.

-et Tabellenname

Gibt den Namen der zu erstellenden Ergebnistabelle an. Wenn diese Tabelle bereits vorhanden ist, müssen Sie -DT verwenden, oder der Vorgang schlägt fehl.

-f [ file_name ]

Erzeugt ein Transact-SQL-Skript, um die Tabelle auf dem Zielserver mit der Tabelle auf dem Quellserver in Konvergenz zu bringen. Sie können optional einen Namen und einen Pfad für die generierte Transact-SQL-Skriptdatei angeben. Wenn Sie file_name nicht angeben, generiert das Hilfsprogramm die Transact-SQL Skriptdatei im Verzeichnis, in dem es ausgeführt wird.

-o Ausgabedateiname

Gibt den vollständigen Namen und Pfad der Ausgabedatei an.

-q

Führt einen schnellen Vergleich aus, indem nur Zeilenanzahlen und Schema verglichen werden.

-rc Wiederholungsanzahl

Gibt an, wie oft das Hilfsprogramm einen fehlgeschlagenen Vorgang wiederholt.

-ri Wiederholungsintervall

Gibt das Intervall (in Sekunden) zwischen den Wiederholungen an.

-strict

Vergleicht das Quell- und Zielschema streng.

-t Verbindungstimeouts

Legt das Verbindungstimeout (in Sekunden) für Verbindungen zwischen dem Quellserver und dem Zielserver fest.

Rückgabewert

Wert Beschreibung
0 Erfolg
1 Schwerwiegender Fehler
2 Tabellenunterschiede

Bemerkungen

Sie können das Tablediff-Hilfsprogramm nicht für Nicht-SQL Server-Server verwenden.

Tabellen, die Spalten des Datentyps sql_variant enthalten, werden nicht unterstützt.

Standardmäßig unterstützt das Hilfsprogramm tablediff die folgenden Datentypzuordnungen zwischen Quell- und Zielspalten.

Quelldatentyp Zieldatentyp
tinyint smallint, int oder bigint
smallint int oder bigint
int bigint
timestamp varbinary
varchar(max) text
nvarchar(max) ntext
varbinary(max) image
text varchar(max)
ntext nvarchar(max)
image varbinary(max)

Verwenden Sie die Option -strict, wenn Sie diese Zuordnungen nicht zulassen und eine strenge Überprüfung durchführen möchten.

Die Quelltabelle im Vergleich muss mindestens einen Primärschlüssel, eine Identität oder ROWGUID Spalte enthalten. Wenn Sie die -strict Option verwenden, muss die Zieltabelle auch über einen Primärschlüssel, eine Identität oder ROWGUID Spalte verfügen.

Das Transact-SQL-Skript, das erstellt wurde, um die Zieltabelle in Konvergenz zu bringen, enthält die folgenden Datentypen nicht:

  • varchar(max)
  • nvarchar(max)
  • varbinary(max)
  • timestamp
  • xml
  • text
  • ntext
  • image

Berechtigungen

Zum Vergleichen von Tabellen benötigen SELECT ALL Sie Berechtigungen für die Tabellenobjekte, die Sie vergleichen.

Um die -et Option zu verwenden, müssen Sie Mitglied der db_owner festen Datenbankrolle sein oder mindestens CREATE TABLE über die Berechtigung in der Abonnementdatenbank und ALTER berechtigung für das Zielbesitzerschema auf dem Zielserver verfügen.

Um die -dt Option zu verwenden, müssen Sie Mitglied der db_owner festen Datenbankrolle sein oder mindestens ALTER über die Berechtigung für das Zielbesitzerschema auf dem Zielserver verfügen.

Damit Sie die Option -o oder -f verwenden können, müssen Sie über Schreibberechtigungen für das angegebene Dateiverzeichnis verfügen.