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. Mit NULL wird die 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. Mit NULL wird die tatsächliche Prüfsumme als Ausgabeparameter zurückgegeben. 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 NULL ist 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 0, wird der Replikations-Agent nicht heruntergefahren. 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, die besagt, dass die Tabelle möglicherweise nicht mehr synchronisiert ist, und der Unterschied zwischen der erwarteten und der tatsächlichen Zeilenanzahl wird angezeigt.

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, die besagt, dass die Tabelle möglicherweise nicht mehr synchronisiert ist, und der Unterschied zwischen der erwarteten und der tatsächlichen Zeilenanzahl wird angezeigt.

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. Er überprüft Spalten nicht selektiv und kann nicht für eine Sicht oder eine vertikale Partition der Tabelle ausgeführt werden. Außerdem überspringt die Prüfsumme den Inhalt von Text - und Bildspalten (nach Entwurf).

Beim Ausführen einer Prüfsummenberechnung muss die Struktur der Tabelle auf den beiden Servern identisch sein. Das heißt, für die Tabellen müssen dieselben Spalten in derselben Reihenfolge vorhanden sein, dieselben Datentypen und Längen, und sie müssen dieselben NULL- bzw. NOT NULL-Bedingungen aufweisen. Wenn auf dem Verleger beispielsweise CREATE TABLE und dann ALTER TABLE zum Hinzufügen von Spalten ausgeführt wurden, aber das auf dem Abonnenten angewendete Skript ein einfaches CREATE für eine Tabelle darstellt, dann ist die Struktur nicht dieselbe. Wenn Sie nicht sicher sind, dass die Struktur der beiden Tabellen identisch ist, sehen Sie sich 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.