Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Antingen returnerar radräknings- eller kontrollsummeinformation i en tabell eller indexerad vy, eller jämför den tillhandahållna radräknings- eller kontrollsummeinformationen med den angivna tabellen eller indexerade vyn. Denna lagrade prozedur utförs hos Publisher i publikationsdatabasen och hos Subscriber i prenumerationsdatabasen.
Note
sp_table_validation stöds inte för Oracle Publishers.
Transact-SQL syntaxkonventioner
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'
Tabellens namn. @table är sysname, utan standard.
[ @expected_rowcount = ] expected_rowcount UTGÅNG
Specificerar om det förväntade antalet rader i tabellen ska returneras.
@expected_rowcount är int, med standardvärdet .NULL Om NULL, returneras det faktiska radantalet som en utgångsparameter. Om ett värde anges kontrolleras det värdet mot det faktiska radantalet för att identifiera eventuella skillnader.
[ @expected_checksum = ] expected_checksum UTGÅNG
Specificerar om den förväntade kontrollsumman för tabellen ska returneras.
@expected_checksum är numerisk, med standardvärdet .NULL Om NULL, returneras den faktiska kontrollsumman som en utdataparameter. Om ett värde anges kontrolleras det värdet mot den faktiska kontrollsumman för att identifiera eventuella skillnader.
[ @rowcount_only = ] rowcount_only
Specificerar vilken typ av kontrollsumma eller radräkning som ska utföras.
@rowcount_only är smallint, med en standard på 1.
Om 0, utför en radräkning och en SQL Server 7.0-kompatibel kontrollsumma.
Om 1, utför endast en radräkningskontroll.
Om 2, utför en radräkning och binär kontrollsumma.
[ @owner = ] N'owner'
Namnet på bordets ägare.
@owner är sysname, med standardvärdet .NULL
[ @full_or_fast = ] full_or_fast
Metoden som används för att beräkna radräkningen.
@full_or_fast är tinyint, med standardvärdet , 2och kan vara ett av dessa värden.
| Value | Beskrivning |
|---|---|
0 |
Gör full räkning med COUNT(*). |
1 |
Räknas snabbt från sysindexes.rows. Att räkna rader i sysindexes går mycket snabbare än att räkna rader i själva tabellen. Men eftersom sysindexes den uppdateras slarvigt kan radräkningen vara felaktig. |
2 (standardinställning) |
Gör villkorlig snabb räkning genom att först prova snabbmetoden. Om snabbmetoden visar skillnader, återgår den till full metod. Om @expected_rowcount är NULL och den lagrade proceduren används för att få fram värdet, används alltid en full.COUNT(*) |
[ @shutdown_agent = ] shutdown_agent
Om Distribution Agent kör sp_table_validation, specificeras om Distribution Agent ska stängas av omedelbart efter att valideringen är klar.
@shutdown_agent är bit, med standardvärdet .0 Om 0, stängs inte replikationsagenten av. Om 1, höjs felet 20578 och replikationsagenten signaleras att stängas av. Denna parameter ignoreras när sp_table_validation den körs direkt av en användare.
[ @table_name = ] N'table_name'
Tabellnamnet på vyn som används för utmatningsmeddelanden. @table_name är sysname, med standardvärdet @table.
[ @column_list = ] N'column_list'
Listan över kolumner som ska användas i kontrollsummefunktionen.
@column_list är nvarchar(4000), med en standard på NULL. Möjliggör validering av sammanslagna artiklar för att specificera en kolumnlista som exkluderar beräknade och tidsstämplade kolumner.
Returnera kodvärden
Om en validering av en kontrollsumma utförs och den förväntade kontrollsumman är lika med kontrollsumman i tabellen, sp_table_validation returnerar ett meddelande om att tabellen klarade valideringen av kontrollsumman. Annars returnerar den ett meddelande om att tabellen kan vara ur synk och rapporterar skillnaden mellan förväntat och faktiskt antal rader.
Om en radräkningsvalidering utförs och det förväntade antalet rader är lika med antalet i tabellen, sp_table_validation returneras ett meddelande om att tabellen klarade radräkningsvalideringen. Annars returnerar den ett meddelande om att tabellen kan vara ur synk och rapporterar skillnaden mellan förväntat och faktiskt antal rader.
Remarks
sp_table_validation används i alla typer av replikering.
sp_table_validation stöds inte för Oracle Publishers.
Kontrollsumman beräknar en 32-bitars cyklisk redundanskontroll (CRC) på hela radbilden på sidan. Den kontrollerar inte selektivt kolumner och kan inte arbeta på en vy eller vertikal partition av tabellen. Dessutom hoppar kontrollsumman över innehållet i text - och bildkolumner (avsiktligt).
När man gör en kontrollsumma måste bordets struktur vara identisk mellan de två servrarna; det vill säga, tabellerna måste ha samma kolumner i samma ordning, samma datatyper och längder samt samma NULL/NOT NULL villkor. Till exempel, om Publisher gjorde en CREATE TABLE, sedan en ALTER TABLE för att lägga till kolumner, men skriptet som tillämpas på Subscriber är en enkel CREATE tabell, är strukturen inte densamma. Om du inte är säker på att strukturen i de två tabellerna är identisk, titta på sys.syscolumns och bekräfta att offset i varje tabell är densamma.
Flyttalsvärden genererar sannolikt kontrollsummedifferenser om teckenläges-bcp användes, vilket är fallet om publikationen har icke-SQL Server-prenumeranter. Dessa beror på mindre och oundvikliga skillnader i precision vid konvertering till och från karaktärsläge.
Permissions
För att köra sp_table_validationmåste du ha SELECT-behörigheter på tabellen som valideras.