sys.sp_table_validation (Transact-SQL)

platí pro:SQL Server

Buď vrací informace o počtu řádků nebo kontrolním součtu v tabulce nebo indexovaném pohledu, nebo porovnává poskytnutý počet řádků nebo kontrolní součet s danou tabulkou nebo indexovaným zobrazením. Tato uložená procedura se provádí u Publisher v databázi publikací a u Subscriber v databázi předplatného.

Note

sp_table_validation není podporován u Oracle Publishers.

Transact-SQL konvence syntaxe

Syntax

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

Arguments

[ @table = ] N'table'

Název tabulky. @table je sysname, bez výchozího nastavení.

[ @expected_rowcount = ] expected_rowcount VÝSTUP

Specifikuje, zda má vrátit očekávaný počet řádků v tabulce. @expected_rowcount je int, s výchozím nastavením NULL. Pokud NULL, skutečný počet řádků se vrací jako výstupní parametr. Pokud je hodnota uvedena, tato hodnota se porovná s skutečným počtem řádků, aby se zjistily případné rozdíly.

[ @expected_checksum = ] expected_checksum VÝSTUP

Specifikuje, zda má vrátit očekávaný kontrolní součet pro tabulku. @expected_checksumje číselná, s výchozím hodnotou NULL. Pokud NULL, skutečný kontrolní součet se vrací jako výstupní parametr. Pokud je zadána hodnota, tato hodnota se oproti skutečnému kontrolnímu součtu, aby se identifikovaly případné rozdíly.

[ @rowcount_only = ] rowcount_only

Specifikuje, jaký typ kontrolního součtu nebo řádku má být proveden. @rowcount_only je smallint, s výchozím nastavením 1.

Pokud 0, proveďte počet řádků a kontrolní součet kompatibilní se SQL Server 7.0.

Pokud 1, proveďte pouze kontrolu počtu řádků.

Pokud 2, provedete počet řádků a binární kontrolní součet.

[ @owner = ] N'majitel'

Jméno majitele stolu. @owner je sysname s výchozím nastavením NULL.

[ @full_or_fast = ] full_or_fast

Metoda použitá k výpočtu počtu řádků. @full_or_fast je tinyint, s výchozím hodnotou 2, a může být jednou z těchto hodnot.

Value Description
0 Počítá se celý s použitím COUNT(*).
1 Počítá rychle z sysindexes.rows. Počítání řádků v sysindexes tabulce je mnohem rychlejší než počítání řádků v samotné tabulce. Nicméně, protože sysindexes je pořádně aktualizován, nemusí být počet řádků přesný.
2 (výchozí) Provádí podmíněné rychlé počítání tím, že nejprve vyzkouší rychlou metodu. Pokud rychlá metoda ukáže rozdíly, vrací se k plné metodě. Pokud je @expected_rowcount a NULL uložená procedura je použita k získání hodnoty, vždy se použije plná COUNT(*) hodnota.

[ @shutdown_agent = ] shutdown_agent

Pokud Distribution Agent vykonává sp_table_validation, specifikuje, zda by se měl Distribution Agent ihned po dokončení validace vypnout. @shutdown_agent je bit, s výchozím hodnotou 0. Pokud 0, replikační agent se nevypne. Pokud 1je vyvolána chyba 20578 a replikační agent je signalizován k vypnutí. Tento parametr je ignorován, pokud sp_table_validation jej uživatel vykoná přímo.

[ @table_name = ] 'Ntable_name'

Tabulka názvu pohledu používaného pro výstupní zprávy. @table_name je sysname s výchozím @table.

[ @column_list = ] N'column_list'

Seznam sloupců, které by měly být použity ve funkci kontrolního součtu. @column_list je nvarchar(4000), s výchozím hodnotou NULL. Umožňuje ověřování článků při sloučení specifikovat seznam sloupců, který vylučuje vypočítáné a časové sloupce.

Hodnoty návratového kódu

Pokud provedete validaci kontrolního součtu a očekávaný součet se rovná kontrolnímu součtu v tabulce, vrátí zprávu, sp_table_validation že tabulka prošla validací kontrolního součtu. Jinak vrací zprávu, že tabulka může být mimo synchronizaci, a hlásí rozdíl mezi očekávaným a skutečným počtem řádků.

Pokud validace počtu řádků a očekávaný počet řádků se rovná počtu v tabulce, vrátí zprávu, sp_table_validation že tabulka prošla validací počtu řádků. Jinak vrací zprávu, že tabulka může být mimo synchronizaci, a hlásí rozdíl mezi očekávaným a skutečným počtem řádků.

Remarks

sp_table_validation se používá ve všech typech replikace. sp_table_validation není podporován u Oracle Publishers.

Checksum počítá 32bitovou cyklickou redundanci (CRC) na celém řádkovém obrázku na stránce. Nekontroluje sloupce selektivně a nemůže pracovat s pohledem nebo vertikálním rozdělením tabulky. Kontrolní součet také přeskakuje obsah textových a obrazových sloupců (záměrně).

Při provádění kontrolního součtu musí být struktura tabulky identická mezi oběma servery; to znamená, že tabulky musí mít stejné sloupce ve stejném pořadí, stejné datové typy a délky a stejné NULL/NOT NULL podmínky. Například pokud Publisher použil , CREATE TABLEpak ALTER TABLE a pro přidání sloupců, ale skript aplikovaný na Subscriber je jednoduchá CREATE tabulka, struktura není stejná. Pokud si nejste jistí, že struktura obou tabulek je identická, podívejte se na sys.syscolumns a ověřte, že offset v každé tabulce je stejný.

Hodnoty s plovoucí desetinnou čárkou pravděpodobně generují rozdíly v kontrolních součtech, pokud byl použit bcp v režimu znaků, což je případ, pokud publikace nemá předplatitele mimo SQL Server. Jsou to drobné a nevyhnutelné rozdíly v přesnosti při převodu do a z režimu postavy.

Permissions

Pro spuštění sp_table_validationmusíte mít v ověřované tabulce oprávnění SELECT.