June 25, 2009 at 10:46 am
Hi all, I have an interesting problem
where one of the tables returns the message below when I run DBCC CHECKDB (MYDB) WITH DATA_PURITY:
Msg 2570, Level 16, State 3, Line 1
Page (1:848518), slot 18 in object ID 951674438, index ID 0, partition ID 72057594054508544, alloc unit ID 72057594068140032 (type "In-row data"). Column "Amount" value is out of range for data type "decimal". Update column to a legal value.
There are 61857 inconsistency errors for the same column.
I did checked several records on the page level and it seems that the Amount column has values -0.00 instead of 0.00.
Also when I issue this command:
SELECT DISTINCT amount, COUNT(*)
FROM dbo.LinkShareTransactions_Temp
GROUP BY amount
ORDER BY amount
These are the records returned in SSMS and the count = 61857 is exactly the same as when I run DBCC CHECKDB (MYDB).
amountcount
0.0061857
0.0028
The problem is when I copy and paste this value (0.00) from a row where count = 61857 in SSMS like:
SELECT amount
FROM dbo.LinkShareTransactions_Temp
WHERE amount = 0.00
there are no records returned.
If I could get these detail records then I could issue an update statement and update them to 0.00.
Is there a way to find what the actual value is is in that column?
I found this article but it did not help.
http://support.microsoft.com/kb/923247
Thanks
June 25, 2009 at 10:52 am
What is the definition of the column?
June 25, 2009 at 10:59 am
The column definition:
Column_nameType LengthPrecScaleNullable
Amount decimal910 2 yes
June 25, 2009 at 11:05 am
trans54 (6/25/2009)
The column definition:Column_nameType LengthPrecScaleNullable
Amount decimal910 2 yes
Okay, I must already be on vacation as my brain isn't getting it. Show me in T-SQL, ie decimal(10,9).
June 25, 2009 at 11:29 am
Lynn, isn't this Amount decimal(10,2)? And what do you mean to show you in sql?
June 25, 2009 at 11:38 am
You did just what I wanted. Like I said, my brain is already on vacation.
Not sure where to go from here. Have you tried copying the data to a temporary table to see what happens with the data?
June 25, 2009 at 11:55 am
Yes, i tried to copy to the temp table and it's the same thing.
Btw, i just fixed this using
SELECT * FROM dbo.LinkShareTransactions_Temp
WHERE ABS(Amount) = 0.00
In this case it did returned 61885 detail records and since i know that there are 28 good records with (0.00) and 61857 records with bad data(0.00) the total is 61885 and i just updated all these records to 0.00 including 28 good ones.
Rerun dbcc checkdb again there is no problem reported.
Thanks for your time.
June 25, 2009 at 12:21 pm
Well, i didn't really do that much, looks like you did all the work.
Glad you got it fixed.
Viewing 8 posts - 1 through 7 (of 7 total)
You must be logged in to reply to this topic. Login to reply