Freigeben über


sp_table_validation (Transact-SQL)

Gilt für: SQL Server

Gibt Zeilenanzahl- oder Prüfsummeninformationen für eine Tabelle oder indizierte Sicht zurück oder vergleicht die angegebenen Zeilenanzahl- oder Prüfsummeninformationen mit der angegebenen Tabelle oder indizierten Sicht. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank und auf dem Abonnenten für die Abonnementdatenbank ausgeführt.

Hinweis

sp_table_validation wird für Oracle-Herausgeber nicht unterstützt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_table_validation [ @table = ] 'table'
    [ , [ @expected_rowcount = ] type_of_check_requested OUTPUT ]
    [ , [ @expected_checksum = ] expected_checksum OUTPUT ]
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @owner = ] 'owner' ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @column_list = ] 'column_list' ]
[ ; ]

Argumente

[ @table = ] 'Tabelle'

Der Name der Tabelle. Die Tabelle ist "sysname" ohne Standard.

[ @expected_rowcount = ] expected_rowcount OUTPUT

Gibt an, ob die erwartete Anzahl von Zeilen in der Tabelle zurückgegeben werden soll. @expected_rowcount ist int, mit einem Standardwert von NULL. Wenn NULL, wird das tatsächliche Zeilenanzahl als Ausgabeparameter zurückgegeben. Wenn ein Wert angegeben wird, wird dieser mit der tatsächlichen Zeilenanzahl verglichen, um etwaige Unterschiede festzustellen.

[ @expected_checksum = ] expected_checksum OUTPUT

Gibt an, ob die erwartete Prüfsumme für die Tabelle zurückgegeben werden soll. @expected_checksum ist numerisch, mit einem Standardwert von NULL. Wenn NULLdie tatsächliche Prüfsumme als Ausgabeparameter zurückgegeben wird. Wenn ein Wert angegeben wird, wird dieser mit der tatsächlichen Prüfsumme verglichen, um etwaige Unterschiede festzustellen.

[ @rowcount_only = ] type_of_check_requested

Gibt an, welcher Typ von Prüfsumme oder Zeilenanzahl berechnet werden soll. @rowcount_only ist klein, mit einem Standardwert von 1.

Wenn 0, führen Sie einen Zeilenzähler und eine SQL Server 7.0-kompatible Prüfsumme aus.

Wenn 1, führen Sie nur eine Zeilenanzahlüberprüfung durch.

Wenn 2, führen Sie eine Zeilenanzahl und binäre Prüfsumme aus.

[ @owner = ] 'Owner'

Der Name des Besitzers der Tabelle. @owner ist "sysname" mit einem Standardwert von NULL.

[ @full_or_fast = ] full_or_fast

Die Methode, die zum Berechnen des Zeilenanzahls verwendet wird. @full_or_fast ist winzig, mit einem Standardwert 2von , und kann einer dieser Werte sein.

Wert Beschreibung
0 Führt eine vollständige Zählung mit COUNT(*) durch.
1 Schnelle Anzahl von sysindexes.rows. Das Zählen von Zeilen in sysindexes der tatsächlichen Tabelle ist viel schneller als das Zählen von Zeilen. Da sysindexes jedoch lazily aktualisiert wird, ist das Zeilenanzahl möglicherweise nicht korrekt.
2 (Standard) Führt eine bedingte schnelle Zählung durch, indem zunächst versucht wird, die schnelle Methode anzuwenden. Ergeben sich mit der schnellen Methode Unterschiede, wird die Methode für die vollständige Zählung verwendet. Wenn expected_rowcount ist NULL und die gespeicherte Prozedur zum Abrufen des Werts verwendet wird, wird immer ein vollständiger COUNT(*) Wert verwendet.

[ @shutdown_agent = ] shutdown_agent

Wenn die Verteilungs-Agent ausgeführt sp_table_validationwird, gibt sie an, ob die Verteilungs-Agent nach Abschluss der Überprüfung sofort heruntergefahren werden soll. @shutdown_agent ist bit, mit einem Standardwert von 0. Wenn 0der Replikations-Agent nicht heruntergefahren wird. Wenn 1fehler 20578 ausgelöst wird und der Replikations-Agent zum Herunterfahren signalisiert wird. Dieser Parameter wird ignoriert, wenn sp_table_validation er direkt von einem Benutzer ausgeführt wird.

[ @table_name = ] 'table_name'

Der Tabellenname der Ansicht, die für Ausgabemeldungen verwendet wird. table_name ist "sysname" mit dem Standardwert "@table".

[ @column_list = ] 'column_list'

Die Liste der Spalten, die in der Prüfsummenfunktion verwendet werden sollen. column_list ist nvarchar(4000), mit einem Standardwert von NULL. Aktiviert die Überprüfung von Mergeartikeln, um eine Spaltenliste anzugeben, die berechnete Spalten und Timestampspalten ausschließt.

Rückgabecodewerte

Wenn eine Prüfsummenüberprüfung ausgeführt wird und die erwartete Prüfsumme der Prüfsumme in der Tabelle entspricht, wird eine Meldung zurückgegeben, sp_table_validation dass die Tabelle die Überprüfung der Prüfsumme bestanden hat. Andernfalls wird eine Meldung zurückgegeben, dass die Tabelle möglicherweise nicht mehr synchronisiert ist, und meldet den Unterschied zwischen der erwarteten und der tatsächlichen Anzahl von Zeilen.

Wenn Sie eine Überprüfung des Zeilenanzahls ausführen und die erwartete Anzahl von Zeilen der Zahl in der Tabelle entspricht, wird eine Meldung zurückgegeben, sp_table_validation dass die Tabelle die Überprüfung des Zeilenanzahls bestanden hat. Andernfalls wird eine Meldung zurückgegeben, dass die Tabelle möglicherweise nicht mehr synchronisiert ist, und meldet den Unterschied zwischen der erwarteten und der tatsächlichen Anzahl von Zeilen.

Hinweise

sp_table_validation wird in allen Replikationstypen verwendet. sp_table_validation wird für Oracle-Herausgeber nicht unterstützt.

Der Prüfsummenalgorithmus berechnet eine zyklische 32-Bit-Redundanzprüfung (CRC, Redundancy Check) des gesamten Zeilenbilds auf der Seite. Spalten werden nicht selektiv überprüft und können nicht auf einer Ansicht oder vertikalen Partition der Tabelle ausgeführt werden. Außerdem überspringt die Prüfsumme den Inhalt von Text - und Bildspalten (nach Entwurf).

Bei einer Prüfsumme muss die Struktur der Tabelle zwischen den beiden Servern identisch sein. d. h. die Tabellen müssen dieselben Spalten in derselben Reihenfolge, dieselben Datentypen und Längen und dieselben NULL/NOT NULL Bedingungen aufweisen. Wenn z. B. der Publisher ein CREATE TABLE, dann ein Zum Hinzufügen von ALTER TABLE Spalten, aber das skript, das beim Abonnenten angewendet wurde, eine einfache CREATE Tabelle ist, ist die Struktur nicht identisch. Wenn Sie nicht sicher sind, dass die Struktur der beiden Tabellen identisch ist, sehen Sie sich sys.syscolumns an, und vergewissern Sie sich, dass der Offset in jeder Tabelle identisch ist.

Gleitkommawerte generieren wahrscheinlich Prüfsummenunterschiede, wenn Bcp im Zeichenmodus verwendet wurde. Dies ist der Fall, wenn die Publikation Nicht-SQL Server-Abonnenten hat. Diese Unterschiede sind durch geringfügige und unvermeidbare Genauigkeitsunterschiede bedingt, die auftreten, wenn Konvertierungen in den und aus dem Zeichenmodus durchgeführt werden.

Berechtigungen

Zum Ausführen sp_table_validationbenötigen Sie SELECT-Berechtigungen für die zu überprüfende Tabelle.