Riešenie problémov s chyba DBCC ľudských zdrojov 2570 v SQL Server 2005 a novšie verzie

Preklady článku Preklady článku
ID článku: 923247 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

ÚVOD

Tento článok popisuje chyba servera SQL Server ľudských zdrojov 2570, čo spôsobuje chyba, a ako riešiť problém.

Ďalšie informácie

DATA_PURITY kontroly

V SQL Server 2005, bola pridaná nová možnosť, DATA_PURITY, na DBCC CHECKDB a DBCC CHECKTABLE príkazy. Keď spustíte DBCC CHECKDB alebo príkaz DBCC CHECKTABLE Táto možnosť povolená, vykoná príkaz "údaje čistoty" validácie na každý stĺpec hodnoty všetky riadky tabuľky alebo tabuľky v databáze. Tieto nové kontroly sú vykonávané na zabezpečenie hodnoty uložené v stĺpcoch sú platné (to znamená, že hodnoty nie sú mimo rozsahu pre doménu spojené s typom údajov v danom stĺpci). Na charakter overenia vykonané závisí od typu údajov v stĺpci. Na základe non-vyčerpávajúci zoznam dáva niekoľko príkladov:
Zbaliť túto tabuľkuRozbaliť túto tabuľku
Typ údajov stĺpcaTyp overenia údajov vykonať
Znak UnicodeDĺžka údajov by mali byť násobkom 2.
Dátum a časPoľa dní by mala byť medzi Jan 1 1753 a Dec 31 9999. Poľa čas musí byť skorší ako "11:59:59:999 PM".
Skutočné a plavákSkontrolujte, či existencia je neplatný plávajúce bod hodnoty ako/SNAN, QNAN, NINF, ND, PD, PINF.
Nie všetky datové typy sú kontrolované na platnosť stĺpec údajov. Len tie, kde je to možné mať uloženú hodnotu, ktorá je mimo rozsah sú kontrolované. Napríklad typ údajov je tinyint má platný rozsah 0 až 255 a je uložený v jeden bajt (ktoré môžu uchovávať iba hodnoty od 0 do 255), takže kontrola hodnoty nie je potrebné.

Overovanie platnosti údajov čistoty nie sú povolené automaticky pre všetky databázy. Kontroly sú povolené v závislosti na niekoľkých faktory:
  • Pre databázy vytvorené v SQL Server 2005 a novšie verzie, tieto kontroly sú predvolene povolené a nemožno ho vypnúť, takže použitie DATA_PURITY možnosť pri vykonávaní príkazu DBCC CHECKDB alebo DBCC CHECKTABLE je irelevantné.
  • Pre databázy, ktoré boli vytvorené v starších verziách programu SQL Server, SQL Server 2000, SQL Server 7.0 a verzie upgrade na SQL Server 2005, tieto kontroly nie sú predvolene povolené. Aby sa tieto kontroly uskutočniť, musíte zadať možnosti DATA_PURITY v DBCC CHECKDB alebo Príkaz DBCC CHECKTABLE. To môže mať za následok dve veci:
    • Príkaz DBCC končí a hlási, že databáza je čistý, vrátane všetkých údajov kontroly čistoty. Táto skutočnosť sa zaznamená v záhlavie databázy. Všetky následné príkaz DBCC CHECKDB alebo DBCC CHECKTABLE popravy všimnete tieto informácie a bude automaticky vykonávať údaje kontroly čistoty, ako by sa stalo pre databázy vytvorené na SQL Server 2005. V inými slovami, keď databáza je známa ako "čistý," kontroly čistoty údajov sú vždy vykonať.
    • Príkaz DBCC končí ale hlási problémy o nesúlad údajov. Ak ide o takýto prípad, budete musieť vyčistiť databázu odstránenie nezrovnalostí a potom sa pokúste znova spustiť príkaz DBCC. Budete musieť zadať DATA_PURITY možnosť pre príkaz DBCC až Databáza je hlásená byť čisté.
  • Ak je zadaná možnosť PHYSICAL_ONLY pri DBCC CHECKDB alebo DBCC CHECKTABLE príkaz je vykonaný, kontroly čistoty údaje nie sú vykonáva.

PRÍZNAKY

Neplatná alebo mimo povoleného rozsahu údajov môžu byť uložené v SQL Server databázy staršej verzie z nasledujúcich dôvodov:
  • Neplatné údaje bol prítomný v zdroji pri používaní hromadných Vložiť metódy, ako napríklad pomôcku bcp.
  • Neplatné údaje prechádza RPC udalosti hovory SQL Server.
  • Iných možných príčin korupcii fyzických údajov vľavo hodnota stĺpca v neplatnom stave.
Ak máte neplatné údaje v stĺpci tabuľky, sa môže vyskytnúť problémy v závislosti od typu operácie, ktorá sa vykonáva proti neplatné údaje. Avšak, je tiež možné, že žiadny problém sa objaví, a neplatných údajov sa nemôže byť objavený až vykonanie príkazu DBCC CHECKDB alebo DBCC CHECKTABLE na SQL Server 2005 a novšie verzie.

Niektoré z príznakov, môžete všimnúť prítomnosti neplatných údajov zahŕňajú (ale nie sú obmedzené Ak chcete):
  • Porušenie prístupu alebo iné typy výnimiek pri spustenie dotazov na postihnuté stĺpik.
  • Nesprávne výsledky vrátené dotazy proti postihnutej stĺpcový.
  • Chyby alebo problémy pri štatistiky sú postavené proti ovplyvnených stĺpcov.
  • Chybové správy ako je nasledujúci:
    MSG 9100, Úroveň 23, štát 2, riadok 1 možné poškodenie indexu zistil. Spúšťať DBCC CHECKDB.

Správa DATA_PURITY problém

Kedy ste príkazu DBCC CHECKDB alebo DBCC CHECKTABLE s DATA_PURITY možnosť povolená (alebo kontroly čistoty dát sú prevádzkované automaticky), a neplatných údajov existuje v tabuľkách kontrolovaná DBCC príkazy, DBCC výstup zahŕňa ďalšie správy, ktoré naznačujú problémy s údajmi. Niektoré vzorky chybové hlásenia, ktoré ukazujú údaje čistoty problémy sú uvedené nižšie:
DBCC výsledky pre "account_history".
MSG ľudských zdrojov 2570, úroveň 16, štát 2, riadok 1
Stránke (1:1073), slot 33 objekt ID 1977058079, identifikácia indexu 0, oddiel identifikácia 129568478265344, pridelenie do dátumu jednotka ID 129568478265344 (typ "v riadku údaje"). Stĺpec "account_name_japan" hodnota je mimo rozsahu pre údaje typu "nvarchar". Aktualizovať stĺpec právnu hodnotu.
MSG ľudských zdrojov 2570, úroveň 16, štát 2, riadok 1
Stránke (1:1156), slot 120 v objekte ID 1977058079, ID registra 0, oddiel 129568478265344 ID, ID jednotky pridelenie do dátumu 129568478265344 (typ "Údaje v riadku"). Hodnota stĺpca "account_name_japan" je vonku rozsahu pre údaje typu "nvarchar". Aktualizovať stĺpec právnu hodnotu.
Tam sú 153137 riadkov v 1080 stránky pre objekt "account_history".
CHECKDB našiel 0 prideľovania chyby a 338 konzistentnosť chyby v tabuľke "account_history" (objekt ID 1977058079).
CHECKDB nájdených 0 prideľovania chyby a 338 chyby konzistencie databázy "BadUnicodeData".
DBCC dotaz bol dokončený. Ak DBCC potlačené chybové hlásenia, obráťte sa na správcu systému.
DBCC výsledky "Tabuľka1".
MSG ľudských zdrojov 2570, úroveň 16, Štát 3, riadok 1
Stránke (1:154), slot 0 objekt ID 2073058421, identifikácia indexu 0, oddiel identifikácia 72057594038321152, pridelenie do dátumu jednotka ID 72057594042318848 (typ "V riadku údaje"). Stĺpec "col2" hodnota je mimo rozsahu pre údaje typu "skutočné". Aktualizovať stĺpec právnu hodnotu.
Existujú 4 riadky v 2 stránky objektu "Tabuľka1".
CHECKDB nájdených 0 prideľovania chyby a chyby 1 súlad Tabuľka "Tabuľka1" (objekt ID 2073058421).
CHECKDB nájdených 0 prideľovania chýb a 1 konzistentnosť chyby v databáze "realdata". DBCC dotaz bol dokončený. Ak DBCC vytlačí chybové správy, kontaktujte správcu systému.
DBCC výsledky "Tabuľka2".
MSG ľudských zdrojov 2570, úroveň 16, Štát 3, riadok 1
Stránke (1:155), slot 0 objekt ID 2105058535, identifikácia indexu 0, oddiel identifikácia 72057594038452224, pridelenie do dátumu jednotka ID 72057594042449920 (typ "V riadku údaje"). Stĺpec "col2" hodnota je mimo rozsahu pre údaje typu "desatinné". Aktualizovať stĺpec právnu hodnotu.
Existujú 4 riadky v 1 stránky objektu "Tabuľka2".
CHECKDB nájdených 0 prideľovania chyby a chyby 1 súlad Tabuľka "Tabuľka2" (objekt ID 2105058535).
CHECKDB nájdených 0 prideľovania chýb a 1 konzistentnosť chyby v databáze "realdata". DBCC dotaz bol dokončený. Ak DBCC vytlačí chybové správy, kontaktujte správcu systému.
DBCC výsledky "Tabuľka3".
MSG ľudských zdrojov 2570, úroveň 16, Štát 3, riadok 1
Stránke (1:157), slot 0 objekt ID 2121058592, identifikácia indexu 0, oddiel identifikácia 72057594038517760, pridelenie do dátumu jednotka ID 72057594042515456 (typ "V riadku údaje"). Stĺpec "col2" hodnota je mimo rozsahu pre údaje typu "datetime". Aktualizovať stĺpec právnu hodnotu.
Existujú 3 riadkov v 1 stránky objektu "Tabuľka3".
CHECKDB nájdených 0 prideľovania chyby a chyby 1 súlad Tabuľka "Tabuľka3" (objekt ID 2121058592).
CHECKDB nájdených 0 prideľovania chýb a 1 konzistentnosť chyby v databáze "realdata". DBCC dotaz bol dokončený. Ak DBCC vytlačí chybové správy, kontaktujte správcu systému.
Pre každý riadok, ktorý obsahuje neplatný stĺpec hodnotu, ľudských zdrojov 2570 chyba je generovaný.

Údaje problému čistoty

Ľudských zdrojov 2570 chyby nemožno opraviť pomocou ľubovoľného DBCC opravy možnosti. To je, pretože to je nemožné pre DBCC zistiť, akú hodnotu mali sa nahradiť hodnotu neplatný stĺpec. Teda hodnota stĺpca musí byť manuálne aktualizovať.

Vykonávať ručné aktualizácie, budete musieť nájsť riadok že má problém. Existujú dva spôsoby na dosiahnutie tohto cieľa.
  • Spustiť dotaz proti tabuľka, ktorá obsahuje neplatné hodnoty Ak chcete nájsť riadky, ktoré obsahujú neplatné hodnoty.
  • Použite informácie z ľudských zdrojov 2570 chyba na identifikáciu riadky, ktoré majú neplatnú hodnotu.
Budeme diskutovať o obe tieto metódy detailne, pomocou Príklady Ak chcete nájsť riadky, ktoré majú neplatné údaje.

Akonáhle nájdete správny riadok, rozhodnutie treba na novú hodnotu, ktorá sa použije na nahradiť existujúce neplatné údaje. Toto rozhodnutie musí byť vykonaná veľmi starostlivo na základe rozsahu hodnôt, ktoré pracujú pre aplikácie ako aj to, čo logický zmysel pre tento konkrétny riadok údajov. Vaše možnosti sú:
  • Ak viete, akú hodnotu by malo byť, nastavte ju na to konkrétna hodnota.
  • Nastavte ju na hodnotu prijateľné predvolené.
  • Nastavený na hodnotu stĺpca na hodnotu NULL.
  • Nastavenie stĺpca hodnotu maximálnej alebo minimálnej hodnoty pre typ údajov stĺpca.
  • Ak máte pocit, že konkrétny riadok nie je k ničomu bez platnú hodnotu pre stĺpec, môžete odstrániť tento riadok celkom.

Hľadanie riadky s neplatnými hodnotami pomocou T-SQL dotazov

Typ dotazu, ktorý musíte vykonať nájsť riadky, ktoré majú neplatné hodnoty závisí od typu údajov v stĺpci, že hlásené problém. Ak sa pozriete na chybe ľudských zdrojov 2570, všimnete si dve dôležité informácie, ktoré vám pomôžu s týmto. V nasledujúcom príklade stĺpec "account_name_japan" hodnota je mimo rozsahu pre údaje typu "nvarchar." Môžeme ľahko identifikovať stĺpec, ktorý má problém, ako aj typ údajov stĺpec zapojené. Teda raz viete, typ údajov a stĺpec zapojený, ste možno formulovať dotazu Ak chcete nájsť riadky, ktoré obsahujú neplatné hodnoty pre túto stĺpcov, vyberte stĺpce potrebné na identifikáciu daného riadka (ako predikáty v klauzulu WHERE) pre akékoľvek ďalšie aktualizovať alebo odstrániť.

Typ údajov Unicode:
SELECT col1 ,DATALENGTH(account_name_japan) as Length ,account_name_japan 
FROM account_history
WHERE DATALENGTH(account_name_japan) % 2 != 0

Typ údajov float:
-- Change col1 to your actual primary key column(s), col2 to the column from the 2570 error, table1 to the table from the CHECKDB output

SELECT col1, col2 FROM table1
WHERE col2<>0.0 AND (col2 < 2.23E-308 OR col2 > 1.79E+308) AND (col2 < -1.79E+308 OR col2 > -2.23E-308)

Skutočný údajový typ:
-- Change col1 to your actual primary key column(s), col2 to the column from the 2570 error, table1 to the table from -- the CHECKDB output

SELECT col1, col2 FROM testReal 
WHERE col2<>0.0 AND (col2 < CONVERT(real,1.18E-38) OR col2 > CONVERT(real,3.40E+38)) AND (col2 < CONVERT(real,-3.40E+38) OR col2 > CONVERT(real,-1.18E-38)) 
ORDER BY col1; -- checks for real out of range
Desatinné a číselný typ údajov:
SELECT col1 FROM table2
WHERE col2 > 9999999999.99999 
OR col1 < -9999999999.99999
Majte na pamäti, že budete musieť upraviť hodnoty na základe presnosť a rozsahu, ktoré ste definovali stĺpci desatinné alebo číselná. V uvedenom príklade stĺpec bol definovaný ako col2 decimal(15,5).

Dátum čas údajov typu:
Budete musieť spustiť dva rôzne dotazy na identifikáciu riadky, ktoré obsahujú neplatné hodnoty stĺpca dátum čas.
SELECT col1 FROM table3
WHERE col2 < '1/1/1753 12:00:00 AM' OR col2 > '12/31/9999 11:59:59 PM'

SELECT col1 FROM table3 WHERE
((DATEPART(ms,col2)+ (1000*DATEPART(s,col2)) + (1000*60*DATEPART(mi,col2)) + (1000*60*60*DATEPART(hh,col2)))/(1000*0.00333)) 
> 25919999

Hľadanie riadky s neplatnú hodnotu pomocou fyzické umiestnenie:

Túto metódu môžete použiť, ak ste schopní nájsť riadky T-SQL metódou diskutovali vyššie úroky. V chybovom hlásení ľudských zdrojov 2570, je vytlačené fyzické umiestnenie riadok, ktorý obsahuje neplatnú hodnotu. Pre napríklad, pozrite sa na nasledujúce hlásenie:
Stránke (1:157), Slot 0 objekt ID 2121058592, identifikácia indexu 0, oddiel identifikácia 72057594038517760, pridelenie do dátumu jednotka ID 72057594042515456 (typ "v riadku údaje"). Hodnota stĺpca "col2" je mimo rozsahu pre údaje typu "datetime". Aktualizácia stĺpcov na právne hodnota.
V tejto správe, si všimnete informácie: Page (1:157), slotu 0. To je potrebné informácie identifikovať riadok. Identifikátor FileID vlastnosti je 1, PageInFile 157, a Identifikácia_zásuvky je 0. Akonáhle budete mať tieto informácie, môžete bude potrebné spustiť príkaz, takto:
DBCC TRACEON ( 3604 )
DBCC PAGE ( realdata , 1 , 157 , 3 )
Tento príkaz vytlačí celý obsah stránky. Parametre Príkaz DBCC stránku sú:
  • Názov databázy
  • Identifikátor FileID vlastnosti
  • PageInFile
  • možnosť tlače
Akonáhle sa spustiť tento príkaz, si všimnete, že výstup obsahuje informácie podobné tým v nasledujúcom formáte:
Slot 0 Offset 0x60 Length 19 Record Type = PRIMARY_RECORD Record
		  Attributes = NULL_BITMAP Memory Dump @0x44D1C060 00000000: 10001000 01000000
		  ffffffff ffffffff †................ 00000010:
		  0200fc†††††††††††††††††††††††††††††††... Slot 0 Column 0 Offset 0x4 Length 4 col1 = 1Slot 0 Column 1 Offset 0x8 Length 8 col2 = Dec 31 1899 19:04PM Slot 1 Offset 0x73 Length 19 Record Type = PRIMARY_RECORD Record
		  Attributes = NULL_BITMAP Memory Dump @0x44D1C073 00000000: 10001000 02000000
		  0ba96301 f8970000 †..........c..... 00000010:
		  0200fc†††††††††††††††††††††††††††††††... Slot 1 Column 0 Offset 0x4 Length 4
		  col1 = 2 Slot 1 Column 1 Offset 0x8 Length 8 col2 = Jul 8 2006 9:34PM Slot 2
		  Offset 0x86 Length 19 Record Type = PRIMARY_RECORD Record Attributes =
		  NULL_BITMAP Memory Dump @0x44D1C086 00000000: 10001000 03000000 0ba96301
		  f8970000 †..........c..... 00000010: 0200fc†††††††††††††††††††††††††††††††...
		  Slot 2 Column 0 Offset 0x4 Length 4 col1 = 3 Slot 2 Column 1 Offset 0x8 Length
		  8 col2 = Jul 8 2006 9:34PM 
Tento výstup mô ete jasne vidieť hodnoty stĺpca pre riadok o ktoré máte záujem. V tomto prípade vám potrebovať riadok uložený vo slotu 0 stránky. Z chybové hlásenie, viete že col2 je ten problém. Takže si môžete vziať hodnota v stĺpci 1 pre Slot 0 a použiť ju ako predikát v klauzule WHERE vaše aktualizácia vyhlásenie alebo odstrániť vyhlásenie.

Upozornenie Odporúčame používať prvý metódu (t. j. použitie T-SQL dotazy na vyhľadanie požadovaných informácií). Použitie príkazu DBCC stránku len ako poslednej inštancie. Najstarostlivejšie, keď používate tento príkaz vo výrobnom prostredia. Odporúča sa obnoviť databázu výroby na test server, potom dostať všetky požadované informácie pomocou DBCC stránku, a potom robiť aktualizácie na serveri výroby. Ako vždy, uistite sa, že udržať zálohovania pripravený v prípade, že sa niečo pokazí a musíte sa vrátiť na predchádzajúcu kópiu systému databáza.

Odkazy

Ďalšie informácie o DBCC CHECKDB vyhlásenie, pozri "DBCC CHECKDB (Transact-SQL)" tému na nasledujúce Microsoft Developer Network (MSDN) webovej stránky:
http://msdn2.Microsoft.com/en-us/library/ms176064.aspx
Ďalšie informácie o známych problémy v SQL Server 2000, kliknite na nasledovné číslo článku zobrazíte článok v databáze Microsoft Knowledge Base:
900335FIX: SQL Server 2000 Automatické databázy zhodnocovania môže nebude úspešné, ak register obsahuje typ údajov FLOAT alebo typu reálne dáta, a tento typ údajov obsahuje hodnotu NaN
Ďalšie informácie o RPC udalosti, pozri "Calling uložená procedúra (OLE DB)" tému na nasledovnej webovej lokalite MSDN:
http://msdn2.Microsoft.com/en-us/library/aa198358 (SQL.80) .aspx
Ďalšie informácie o rôznych typov údajov nájdete v téme "Calling uložená procedúra (OLE DB)" tému na nasledovnej webovej lokalite MSDN:
http://msdn2.Microsoft.com/en-us/library/ms187752.aspx
Ďalšie informácie o plávajúce bod hodnotu dohovorov, navštívte nasledujúcu Intel webovú lokalitu:
http://www.Intel.com/design/pentiumii/manuals/243191.htm
Microsoft tretej-party kontaktné informácie vám pomôže nájsť technickú podporu poskytuje. Tieto kontaktné informácie sa môžu zmeniť bez predchádzajúceho upozornenia. Spoločnosť Microsoft nemá zaručiť presnosť tejto tretej-party kontaktné informácie.

Vlastnosti

ID článku: 923247 - Posledná kontrola: 21. apríla 2013 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Standard Edition for Small Business
Kľúčové slová: 
kbtshoot kbexpertiseadvanced kbsql2005engine kbinfo kbmt KB923247 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 923247

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com