tablediff (Hilfsprogramm)

Gilt für:yes SQL Server (alle unterstützten Versionen) YesAzure SQL-Datenbank YesAzure SQL verwaltete Instanz yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

Mit dem Hilfsprogramm tablediff wird verglichen, ob die Daten in zwei Tabellen konvergent sind. Das Hilfsprogramm eignet sich besonders 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:

  • Ein Zeilenvergleich zwischen einer Quelltabelle in einer Instanz von Microsoft SQL Server, die als Replikations-Publisher verwendet wird, und der Zieltabelle in einer oder SQL Server, die als Replikationsabonnenten agieren.

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

  • Ausführen spaltenweiser Vergleiche.

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

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

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.

-sourceserversource_server_name[instance_name]
Der Name des Quellservers. Geben source_server_name für die Standardinstanz von SQL Server. Geben source_server_nameinstance_name für eine benannte Instanz von SQL Server.

-sourcedatabasesource_database
Der Name der Quelldatenbank.

-sourcetablesource_table_name
Der Name der zu überprüfenden Quelldatenbank.

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

-sourcepasswordsource_password
Das Kennwort für den Anmeldenamen, der zum Herstellen einer Verbindung mit dem Quellserver mithilfe der SQL Server wird.

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.

-sourceusersource_login
Der Anmeldename, der zum Herstellen einer Verbindung mit dem Quellserver mithilfe der SQL Server verwendet wird. Wenn Quellanmeldename nicht angegeben wird, 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.

-destinationserverdestination_server_name[instance_name]
Der Name des Zielservers. Geben destination_server_name für die Standardinstanz von SQL Server. Geben destination_server_nameinstance_name für eine benannte Instanz von SQL Server.

-destinationdatabasesubscription_database
Der Name der Zieldatenbank.

-destinationtabledestination_table
Entspricht dem Namen der Zieltabelle.

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

-destinationpassworddestination_password
Das Kennwort für den Anmeldenamen, der zum Herstellen einer Verbindung mit dem Zielserver mithilfe der SQL Server wird.

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.

-destinationuserdestination_login
Der Anmeldename, der zum Herstellen einer Verbindung mit dem Zielserver mithilfe der SQL Server verwendet wird. Wenn Zielanmeldename nicht angegeben wird, 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.

-blarge_object_bytes
Ist die Anzahl von Bytes, die für Spalten mit großen Objektdatentypen überprüft werden und folgendes beinhaltet: text, ntext, image, varchar(max) , nvarchar(max) and varbinary(max) . large_object_bytes wird standardmäßig auf die Größe der Spalte festgelegt. Alle Daten über large_object_bytes werden nicht überprüft.

-bfnumber_of_statements
Die Anzahl der Transact-SQL, die in die aktuelle Transact-SQL-Skriptdatei geschrieben werden, wenn die Option -f verwendet wird. Wenn die Anzahl der Transact-SQL-Anweisungen number_of_statements, wird eine neue Transact-SQL-Skriptdatei erstellt.

-c
Vergleicht Unterschiede auf Spaltenebene.

-dt
Löscht die in table_nameangegebene Ergebnistabelle, wenn die Tabelle bereits vorhanden ist.

-ettable_name
Gibt den Namen der zu erstellenden Ergebnistabelle an. Wenn diese Tabelle bereits vorhanden ist, muss -DT verwendet werden; andernfalls schlägt der Vorgang fehl.

-f [ file_name ]
Generiert ein Transact-SQL, um die Tabelle auf dem Zielserver mit der Tabelle auf dem Quellserver in Übereinstimmung zu bringen. Optional können Sie einen Namen und Pfad für die generierte Transact-SQL angeben. Wenn file_name angegeben ist, wird die Transact-SQL-Skriptdatei in dem Verzeichnis generiert, in dem das Hilfsprogramm ausgeführt wird.

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

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

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

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

-strict
Für Quell- und Zielschema wird ein strenger Vergleich durchgeführt.

-tconnection_timeouts
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 nicht mit Nicht-SQL Server 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 ebenfalls eine Primärschlüssel-, Identitäts- oder ROWGUID-Spalte enthalten.

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

  • 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 CREATE TABLE-Berechtigung für die Abonnementdatenbank und die ALTER-Berechtigung 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 ALTER-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.

Weitere Informationen

Überprüfen replizierter Tabellen auf Unterschiede (Replikationsprogrammierung)