tablediff (Hilfsprogramm)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics 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:
Durchführen eines zeilenweisen Vergleichs einer Quelltabelle in einer SQL Server-Instanz, die als Replikationsherausgeber fungiert, mit der Zieltabelle in einer oder mehreren SQL Server-Instanzen, die als Replikationsabonnenten 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 Übereinstimmung zu bringen.
Protokollieren von Ergebnissen in einer Ausgabedatei oder einer Tabelle in der Zieldatenbank.
Hinweis
Das Hilfsprogramm tablediff ist Teil der SQL Server-Replikationstools. In SQL Server 2022 (16.x) finden Sie tablediff.exe
nach der Installation des Replikationsfeatures am Standardspeicherort C:\Program Files\Microsoft SQL Server\160\COM
.
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 Quellservername[ \Instanzname ]
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 Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, sollten Sie die Datei an einem sicheren Ort speichern, um den unbefugten Zugriff zu vermeiden.
-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
Die Quelltabelle wird während des Vergleichs mit den Tabellenhinweisen TABLOCK und HOLDLOCK gesperrt.
-destinationserver Zielservername[\Instanzname]
Gibt den Namen des Zielservers an. Angeben von Zielservername für die Standardinstanz von SQL Server. Geben Sie Zielservername\Instanzname für eine benannte Instanz von SQL Serveran.
-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 Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, sollten Sie die Datei an einem sicheren Ort speichern, um den unbefugten Zugriff zu vermeiden.
-destinationuser Zielanmeldung
Gibt die Anmeldung an, die verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Zielserver herzustellen. Wenn Zielanmeldung nicht angegeben ist, wird die Windows-Authentifizierung zum Herstellen der Verbindung mit dem Server verwendet. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.
-destinationlocked
Die Zieltabelle wird während des Vergleichs mit den Tabellenhinweisen TABLOCK und HOLDLOCK gesperrt.
-b LOB-Bytes
Gibt die Anzahl von Bytes an, die für Spalten mit großen Objektdatentypen (Large Object Type, LOB) überprüft werden und Folgendes beinhaltet: text, ntext, image, varchar(max), nvarchar(max) und varbinary(max). large_object_bytes wird standardmäßig auf die Größe der Spalte festgelegt. 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
Löscht die in table_nameangegebene Ergebnistabelle, wenn die Tabelle bereits vorhanden ist.
-et Tabellenname
Gibt den Namen der zu erstellenden Ergebnistabelle an. Wenn diese Tabelle bereits vorhanden ist, muss -DT
verwendet werden, da der Vorgang andernfalls Fehler auslöst.
-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. Wurde Dateiname nicht angegeben, wird die Transact-SQL-Skriptdatei in dem Verzeichnis erstellt, in dem das Hilfsprogramm ausgeführt wird.
-o Ausgabedateiname
Gibt den vollständigen Namen und Pfad der Ausgabedatei an.
-q
Ausführen eines schnellen Vergleichs, indem nur Zeilenanzahl 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
Für Quell- und Zielschema wird ein strenger Vergleich durchgeführt.
-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
Das Hilfsprogramm tablediff kann für Server, auf denen SQL Server nicht installiert ist, nicht verwendet werden.
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, or bigint |
smallint | int or 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 bei dem Vergleich muss mindestens eine Primärschlüssel-, Identitäts- oder ROWGUID-Spalte enthalten. Wenn Sie die Option -strict
verwenden, muss die Zieltabelle außerdem eine Primärschlüssel-, Identitäts- oder ROWGUID-Spalte enthalten.
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
Für den Vergleich von Tabellen benötigen Sie SELECT ALL-Berechtigungen für die zu vergleichenden Tabellenobjekte.
Damit Sie die Option -et
verwenden können, müssen Sie ein Mitglied der festen Datenbankrolle „db_owner“ sein oder zumindest über die Berechtigung CREATE TABLE für die Abonnementdatenbank und die Berechtigung ALTER für das Zielbesitzerschema auf dem Zielserver verfügen.
Damit Sie die Option -dt
verwenden können, müssen Sie ein Mitglied der festen Datenbankrolle „db_owner“ sein oder zumindest über die Berechtigung ALTER 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.