Avatar billede thille Nybegynder
12. november 2003 - 09:23 Der er 4 kommentarer

Error: 644

jeg får følgende fejl når jeg udførere 'dbcc checkdb':

Server: Msg 2750, Level 16, State 4, Line 2
Warning: Page (1:300465), Slot 9 in object 2009058193 Index 0 Column Val value -1.#QNAN is out of range for data type "real". Update column to a legal value.

Der kører en service der kalder en stored procedure, og den resulterer i følgende fejl fra sqlserver i event loggen

Error 644, Severity: 21, State 5
Could not find the index entry for RID '16ca8880200' in index page (1:31928), index ID 7, database 'BPS'.

Jeg har prøvet at bruge 'dbcc checkdb' og 'dbcc checktable' med parametren REPAIR_REBUILD og jeg har prøvet 'dbcc reindex' men ingen af dem løste problemet.

Er der andre muligheder jeg kan prøve, eller kan man finde de pågældende rækker og rette dem?
Avatar billede trer Nybegynder
13. november 2003 - 11:37 #1
Sørg for at have en verificeret backup af basen

Omdøb den fejlramte tabel til old_{hvad den nu hedder} - prøv at kopiere data fra den med

SELECT * INTO {hvad den nu hedder} FROM old_{hvad den nu hedder}

Enten får du dine data ud - eller også finder du rækkerne med fejl.

Nemt og hurtigt check af data er således

SELECT COUNT(*) FROM {nytabel}
UNION ALL
SELECT COUNT(*) FROM old_{etc etc}
UNION ALL
SELECT COUNT(*) FROM (SELECT * FROM {nytabel} UNION SELECT * FROM old_{etc etc} ) X

Resultatet skal være 3 rækker med samme værdi i her - så er data ens (fungrer kun hvis der er primær / kandidatnøgle på den oprindelige tabel)

Du kan også prøve at droppe eventuelle index på den fejlramte tabel et efter et - men da du sikkert har et unikt clustered index tror jeg ikke nødvendigvis på den løsning.

Mvh
Troels
Avatar billede trer Nybegynder
13. november 2003 - 11:40 #2
Avatar billede trer Nybegynder
18. november 2003 - 10:33 #3
How goes?
Avatar billede thille Nybegynder
28. november 2003 - 21:48 #4
-1#QNAN betyder at værdien ikke er et tal (Not A Number) jeg fandt 25 rækker som havde denne værdi. Jeg fandt også ud af at fejlen kun eksisterer i Query Analyser, hvis man bruger Enterprise Manager, kan man godt se indholdet at feltet (-1#QNAN) Vi er nu ved at undersøge hvorfor vi overhovedet har fået "ulovlige" værdier ind i databasen, problemet ligger nok i en forkert konvertering til real.
Det viste sig også at at checkdb kun gav fejl hvis der var et index der inkludererede val feltet. fjernede man indexet gav checkdb ingen fejl, men man kunne stadig ikke læse rækken med de "ulovlige" værdier.
Mange tak for dine forslag trer, mvh. Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester