tablediff (Hilfsprogramm)

Mithilfe des Hilfsprogramms tablediff werden Daten in zwei Tabellen im Hinblick auf Nichtkonvergenz verglichen. Es ist besonders nützlich, um in einer Replikationstopologie Probleme im Zusammenhang mit Nichtkonvergenz zu behandeln. Dieses Hilfsprogramm kann an der Eingabeaufforderung oder in einer Batchdatei verwendet werden, um die folgenden Aufgaben auszuführen:

  • Zeilenweiser Vergleich einer Quelltabelle in einer Microsoft SQL Server-Instanz, die als Replikationsverleger agiert, mit der Zieltabelle in einer oder mehreren SQL Server-Instanzen, die als Replikationsabonnenten agieren.

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

  • Ausführen spaltenweiser Vergleiche.

  • Generieren eines Transact-SQL-Skripts, um Abweichungen auf dem Zielserver zu beheben und auf diese Weise die Konvergenz von Quell- und Zieltabelle herzustellen.

  • 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.

  • -sourceserver source_server_name[**\instance_name]
    Der Name des Quellservers. Geben Sie source_server_name für die Standardinstanz von SQL Server an. Geben Sie source_server_name
    \**instance_name für eine benannte Instanz von SQL Server an.

  • -sourcedatabase source_database
    Der Name der Quelldatenbank.

  • -sourcetable source_table_name
    Der Name der zu überprüfenden Quelldatenbank.

  • -sourceschema source_schema_name
    Der Schemabesitzer der Quelltabelle. Standardmäßig wird dbo als Tabellenbesitzer angenommen.

  • -sourcepassword source_password
    Das Kennwort für den Anmeldenamen, der verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Quellserver herzustellen. 

    SicherheitshinweisSicherheitshinweis

    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 source_login
    Der Anmeldename, der verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Quellserver herzustellen. Wenn source_login 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.

  • -destinationserver destination_server_name[**\instance_name]
    Der Name des Zielservers. Geben Sie destination_server_name für die Standardinstanz von SQL Server an. Geben Sie destination_server_name
    \**instance_name für eine benannte Instanz von SQL Server an.

  • -destinationdatabase subscription_database
    Der Name der Zieldatenbank.

  • -destinationtable destination_table
    Der Name der Zieltabelle.

  • -destinationschema destination_schema_name
    Der Schemabesitzer der Zieltabelle. Standardmäßig wird dbo als Tabellenbesitzer angenommen.

  • -destinationpassword destination_password
    Das Kennwort für den Anmeldenamen, der verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Zielserver herzustellen. 

    SicherheitshinweisSicherheitshinweis

    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 destination_login
    Der Anmeldename, der verwendet wird, um mithilfe der SQL Server-Authentifizierung eine Verbindung mit dem Zielserver herzustellen. Wenn destination_login 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.

  • -b large_object_bytes
    Ist die Anzahl von Bytes, die für LOB-Datentyp-Spalten verglichen werden sollen, darunter: text, ntext, image, varchar(max), nvarchar(max) und varbinary(max). large_object_bytes wird standardmäßig auf die Größe der Spalte festgelegt. Alle Daten, die den Wert von large_object_bytes überschreiten, werden nicht verglichen.

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

  • -c
    Vergleicht Unterschiede auf Spaltenebene.

  • -dt
    Löscht die in table_name angegebene Ergebnistabelle, wenn die Tabelle bereits vorhanden ist.

  • -et table_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-Skript, um die Konvergenz zwischen der Tabelle auf dem Zielserver und der Tabelle auf dem Quellserver herzustellen. Optional können Sie einen Namen und einen Pfad für die generierte Transact-SQL-Skriptdatei angeben. Wurde file_name nicht angegeben, wird die Transact-SQL-Skriptdatei in dem Verzeichnis erstellt, in dem das Hilfsprogramm ausgeführt wird.

  • -o output_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.

  • -rc number_of_retries
    Gibt an, wie oft das Hilfsprogramm einen fehlgeschlagenen Vorgang wiederholt.

  • -ri retry_interval
    Gibt das Intervall (in Sekunden) zwischen den Wiederholungen an.

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

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

Rückgabewert

Wert

Beschreibung

0

Success

1

Schwerwiegender Fehler

2

Tabellenunterschiede

Hinweise

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 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 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 Konvergenz der Zieltabelle herzustellen, 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 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.

Siehe auch

Aufgaben

Überprüfen replizierter Tabellen auf Unterschiede (Replikationsprogrammierung)