ورود

View Full Version : خطای SQL Server detected a logical consistency-based I/O error پایگاه داده



hasti.lm
چهارشنبه 03 شهریور 1389, 16:32 عصر
با سلام
طاعات و عباداتتون قبول
من تو پایگاه داده یه store procdure دارم که داخل آن 10 تا جدول موقت ایجاد می کنم که هر کدوم از این جدولها حدود 200 سطر مقدار می گیرند. نهایتا این جداول با هم ترکیب شده و اطلاعات کلی را نشان می دهند. در شرایطی که تعداد سطرهای جداول موقت پایین هست sp به صورت کامل اجرا شده و نتایج را نشان می دهد. اما با حدود 200 سطر خطای زیر را دارد



Msg 824, Level 24, State 2, Procedure sp_Select_rptSystemUnitPropertis, Line 76
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0x60b8f1aa; actual: 0xb4270bca). It occurred during a read of page (1:327) in database ID 6 at offset 0x0000000028e000 in file 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\IT.mdf'. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.


با تشکر

FastCode
چهارشنبه 03 شهریور 1389, 17:33 عصر
سییتم عامل سرور چیه؟

احتمال داره مشکل سخت افزاری باشه یا مربوط به سیستم عامل باشه.
یا اینکه شما یه باگ در sqlserver پیدا کردید.
این خطا جزء خطاهای severe و fatal هست.

hasti.lm
چهارشنبه 03 شهریور 1389, 17:57 عصر
این پایگاه روی local اجرا میشه و سیستم عاملم ویندوزه. در ضمن درحالتیکه داده ها کمه مشکلی ندارم.

FastCode
چهارشنبه 03 شهریور 1389, 18:14 عصر
این پایگاه روی local اجرا میشه و سیستم عاملم ویندوزه. در ضمن درحالتیکه داده ها کمه مشکلی ندارم.

خودم میدونم ویندوزه.چون نمیشه MSSQL رو با Wine اجرا کرد.
سوالم اینه که کدوم ورژن و نسخه چند بیت.
اگر 64 بیت باشه 99% مشکل میتونه از سیستم عامل باشه.

این دستور رو اجرا کن:


DBCC CheckDB

hasti.lm
چهارشنبه 03 شهریور 1389, 19:02 عصر
ویندوزم XP پک 2
من فکر می کردم مشکل از جداول موقت یا تعداد داده هاست. بعد از کلی آزمون و خطا به یه جدول در پایگاه داده رسیدم این جدول 3 تا ستون دارد. که یکی از ستونها Identity ویکی دیگه کلید خارجیه. حالا یه select ساده رو این جدول میزنم این خطا رو دارم یعنی مشکل اصلی از این جدوله.

FastCode
چهارشنبه 03 شهریور 1389, 19:14 عصر
DBCC CheckDB رو اجرا کردی؟
جوابش چی شد؟

hasti.lm
چهارشنبه 03 شهریور 1389, 19:26 عصر
رو جدول مورد نظرم این خطا رو دارم


DBCC results for 'tbl_Unit'.
Msg 8928, Level 16, State 1, Line 1
Object ID 677577452, index ID 1, partition ID 72057594039304192, alloc unit ID 72057594044284928 (type In-row data): Page (1:327) could not be processed. See other errors for details.
Msg 8939, Level 16, State 98, Line 1
Table error: Object ID 677577452, index ID 1, partition ID 72057594039304192, alloc unit ID 72057594044284928 (type In-row data), page (1:327). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 29493513 and -4.
There are 118 rows in 2 pages for object "tbl_Unit".
CHECKDB found 0 allocation errors and 2 consistency errors in table 'tbl_Unit' (object ID 677577452).

FastCode
چهارشنبه 03 شهریور 1389, 19:56 عصر
قبل از اجرا حتماً backup بگیر.

USE [master]
GO
ALTER DATABASE [***] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [***] SET SINGLE_USER
GO
DBCC CHECKDB (***, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE [***] SET MULTI_USER

اگر مشکل خیلی جدی نبود restore نکن.
اگر دیدی اطلاعات خیلی به هم ریخته از یه DBA واقعی کمک بگیر.یا اینکه از backup های قبلیت کمک بگیر.
به جای REPAIR_ALLOW_DATA_LOSS میتونی بنویسی REPAIR_REBUILD.
دومی اطلاعات اون تکه از جدول رو صفر میکنه که باعث میشه زودتر پیداش کنی.

hasti.lm
پنج شنبه 04 شهریور 1389, 16:23 عصر
ممنون از راهنماییتون دستوراتو اجرا کردم مشکلم رفع شد حالا سوالم اینه که با اجرای این دستورات امکان از دست رفتن داده ها وجود داره؟
ممنون میشم اگه در مورد کد بالا یه کم بیشتر توضیح بدین

FastCode
پنج شنبه 04 شهریور 1389, 17:35 عصر
ممنون از راهنماییتون دستوراتو اجرا کردم مشکلم رفع شد حالا سوالم اینه که با اجرای این دستورات امکان از دست رفتن داده ها وجود داره؟
ممنون میشم اگه در مورد کد بالا یه کم بیشتر توضیح بدین

بله.
امکانش خیلی هم زیاده و معمولاً حداقل یک بیت داده از بین رفته.