วิเคราะห์ SQL Server เพิ่มเติมที่เพิ่มเข้าไปในการตรวจหาปัญหา I/O ถูกรายงาน

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 826433 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

ถ้ามีการสูญเสียสาเหตุของปัญหาของระบบปฏิบัติการ ไดรเวอร์ หรือฮาร์ดแวร์ เขียนเงื่อนไขหรือเงื่อนไขที่มีการอ่านเก่า คุณอาจมองเห็นข้อความแสดงข้อผิดพลาดที่มีรักษาความสมบูรณ์ของข้อมูลเช่นข้อผิดพลาด 605, 823, 3448 คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับตัวอย่างต่อไปนี้:
2003-07-24 16:43:04.57 Getpage spid63: bstat = 0x9, sstat = 0x800 แคช
2003-07-24 16:43:04.57 spid63 pageno คือ/ควร: objid คือ/ควรเป็น:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424
2003-07-24 spid63 16:43:04.57... IAM บ่งชี้ว่า เพจนั้นถูกปันส่วนไปยังวัตถุนี้
ข้อผิดพลาดการ spid63 16:52:37.67 2003-07-24: ความรุนแรง 605 : 21 สถานะ: 1
2003-07-24 16:52:37.67 spid63 พยายามที่จะนำมาใช้หน้าแบบลอจิคัล (1:7040966) ในฐานข้อมูล 'pubs' เป็นของวัตถุผู้ 'สร้าง' ไม่ถึงวัตถุ 'เกม'
ข้อผิดพลาดการ spid63 16:52:40.99 2003-07-24: ความรุนแรง 3448 : 21 สถานะ: 1
เลิก spid63 16:52:40.99 2003-07-24 ไม่ไม่ทำการบันทึกล็อก (63361:16876:181), สำหรับรหัสธุรกรรม (0:159696956), บนหน้า (1:7040977) ฐานข้อมูล 'pubs' (ฐานข้อมูล ID 12) ได้ หน้าข้อมูล: LSN = (63192:958360:10), ชนิด = 2 ข้อมูลการเข้าสู่ระบบ: OpCode = 2 บริบท 1
ข้อผิดพลาดการ spid66 14:31:35.92 2003-07-09: ความรุนแรง 823 : 24 สถานะ: 2
ผิด 2003-07-09 14:31:35.92 spid66 พลาด I/O (หมายเลขหน้าไม่ถูกต้อง) ตรวจพบระหว่างการอ่านที่ออฟเซต 0x00000016774000 ในแฟ้ม 'h:\sql\MSSQL\data\tempdb.mdf'

การแก้ไข

ข้อมูล Service Pack

เมื่อต้องการแก้ไขปัญหานี้ ขอรับ service pack ล่าสุดสำหรับ Microsoft SQL Server 2000 สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
290211วิธีการขอรับ service pack ล่าสุดของ SQL Server 2000

สร้างข้อมูล

Microsoft ได้ออกแบบโครงสร้างของ SQL Server ที่แนะนำความสามารถในการติดตามแบบขยาย ความสามารถในการทำงานเหล่านี้จะได้รับการออกแบบเพื่อช่วยคุณแก้ไขข้อความแสดงข้อผิดพลาดที่อธิบายไว้ในส่วน "อาการ" หากคุณสงสัยไม่ว่าระบบปฏิบัติการหรือปัญหาฮาร์ดแวร์ releated คุณอาจไม่มีการใช้โครงสร้างนี้

โครงสร้างนี้รุ่นภาษาอังกฤษมีแอตทริบิวต์ของแฟ้ม (หรืออื่น ๆ) ซึ่งแสดงอยู่ในตารางต่อไปนี้ วันที่และเวลาของแฟ้มเหล่านี้จะปรากฏในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ข้อมูลจะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้โซนเวลาแท็บในเครื่องมือ'วันและเวลา'ใน'แผงควบคุม'
   Date         Time   Version         Size             File name
   -------------------------------------------------------------------------
   31-May-2003  18:45  2000.80.818.0      78,400 bytes  Console.exe      
   25-Jun-2003  01:01  2000.80.818.0      33,340 bytes  Dbmslpcn.dll     
   25-Apr-2003  02:12                    786,432 bytes  Distmdl.ldf
   25-Apr-2003  02:12                  2,359,296 bytes  Distmdl.mdf
   30-Jan-2003  01:55                        180 bytes  Drop_repl_hotfix.sql
   23-Jun-2003  22:40  2000.80.837.0   1,557,052 bytes  Dtsui.dll        
   23-Jun-2003  22:40  2000.80.837.0     639,552 bytes  Dtswiz.dll       
   24-Apr-2003  02:51                    747,927 bytes  Instdist.sql
   03-May-2003  01:56                      1,581 bytes  Inst_repl_hotfix.sql
   08-Feb-2003  06:40  2000.80.765.0      90,692 bytes  Msgprox.dll      
   01-Apr-2003  02:07                      1,873 bytes  Odsole.sql
   05-Apr-2003  01:46  2000.80.800.0      62,024 bytes  Odsole70.dll     
   07-May-2003  20:41  2000.80.819.0      25,144 bytes  Opends60.dll     
   02-Apr-2003  21:48  2000.80.796.0      57,904 bytes  Osql.exe         
   02-Apr-2003  23:15  2000.80.797.0     279,104 bytes  Pfutil80.dll     
   22-May-2003  22:57                     19,195 bytes  Qfe469571.sql
   11-Jul-2003  17:04                  1,084,147 bytes  Replmerg.sql
   04-Apr-2003  21:53  2000.80.798.0     221,768 bytes  Replprov.dll     
   08-Feb-2003  06:40  2000.80.765.0     307,784 bytes  Replrec.dll      
   11-Jul-2003  16:56                  1,085,925 bytes  Replsys.sql
   01-Jun-2003  01:01  2000.80.818.0     492,096 bytes  Semobj.dll       
   31-May-2003  18:27  2000.80.818.0     172,032 bytes  Semobj.rll
   29-May-2003  00:29                    115,944 bytes  Sp3_serv_uni.sql
   01-Jun-2003  01:01  2000.80.818.0   4,215,360 bytes  Sqldmo.dll       
   07-Apr-2003  17:44                     25,172 bytes  Sqldumper.exe    
   19-Mar-2003  18:20  2000.80.789.0      28,672 bytes  Sqlevn70.rll
   02-Jul-2003  00:18  2000.80.834.0     180,736 bytes  Sqlmap70.dll     
   08-Feb-2003  06:40  2000.80.765.0      57,920 bytes  Sqlrepss.dll     
   01-Aug-2003  00:50  2000.80.847.0   7,594,065 bytes  Sqlservr.exe     
   25-Jul-2003  21:44  2000.80.845.0     590,396 bytes  Sqlsort.dll      
   08-Feb-2003  06:40  2000.80.765.0      45,644 bytes  Sqlvdi.dll       
   25-Jun-2003  01:01  2000.80.818.0      33,340 bytes  Ssmslpcn.dll     
   01-Jun-2003  01:01  2000.80.818.0      82,492 bytes  Ssnetlib.dll     
   01-Jun-2003  01:01  2000.80.818.0      25,148 bytes  Ssnmpn70.dll     
   01-Jun-2003  01:01  2000.80.818.0     158,240 bytes  Svrnetcn.dll     
   31-May-2003  18:59  2000.80.818.0      76,416 bytes  Svrnetcn.exe     
   30-Apr-2003  23:52  2000.80.816.0      45,132 bytes  Ums.dll          
   02-Jul-2003  00:19  2000.80.834.0      98,816 bytes  Xpweb70.dll
หมายเหตุ:เนื่องจากการอ้างอิงแฟ้ม โปรแกรมแก้ไขด่วนหรือคุณลักษณะที่ประกอบด้วยแฟ้มเหล่านี้ครั้งล่าสุดอาจประกอบด้วยแฟ้มเพิ่มเติม

Microsoft ได้ยืนยันว่า ภายใต้ไม่ค่อยพบ และหนา I/O ระบุ แพลตฟอร์มฮาร์ดแวร์บางตัวสามารถกลับ stale การอ่าน ถ้าการวินิจฉัยขยาย stale ที่เป็นไปได้ที่บ่งชี้ แพ้อ่าน/เขียนเงื่อนไข ติดต่อผู้จำหน่ายฮาร์ดแวร์ของคุณเพื่อตามงานทันทีอัพ และทดสอบกับโปรแกรมอรรถประโยชน์ SQLIOStress

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "การใช้งาน"

ก่อนมีแก้ไขปัญหานี้ใน Microsoft SQL Server 2000 Service Pack 4

ข้อมูลเพิ่มเติม

ถ้าคุณได้รับข้อความแสดงข้อผิดพลาดที่กล่าวถึงในส่วน "อาการ" ใด ๆ และพวกเขาไม่ได้อธิบายตามเหตุการณ์เช่นความล้มเหลวของไดรฟ์ที่มีอยู่จริง แล้วทบทวนปัญหารู้จักกับ SQL Server ระบบปฏิบัติการ ไดรเวอร์ และฮาร์ดแวร์ เพิ่มเติมใน SQL Server การวินิจฉัยถูกเพิ่มลงในโครงสร้างนี้จะช่วยตรวจจับ I/O ปัญหาภายนอกที่เกี่ยวข้อง การวิเคราะห์เพิ่มเติมพยายามที่จะแสดงข้อมูลเกี่ยวกับเงื่อนไขต่อไปนี้ที่สอง:
  • เขียนที่สูญหายไป: A สำเร็จโทรไปWriteFileAPI แต่ระบบปฏิบัติการ ไดรเวอร์ หรือตัวควบคุมแคไม่ถูกต้องล้างข้อมูลไปยังสื่อที่มีอยู่จริงแม้ว่า SQL Server จะทราบว่า การเขียนที่ประสบความสำเร็จ
  • อ่านเก่า: A สำเร็จโทรไปreadfileAPI แต่ระบบปฏิบัติการ ไดรเวอร์ หรือตัวควบคุมแคกลับรุ่นเก่ากว่าของข้อมูลไม่ถูกต้อง
ตัวอย่างเช่น Microsoft ได้ยืนยันสถานการณ์ที่มีWriteFileการเรียก API ที่ส่งกลับค่าเป็นข้อความเสร็จเรียบร้อยแล้ว แต่ข้อมูลเก่า การรวมถึงข้อมูลที่เป็นไปได้เก็บอยู่ในฮาร์ดแวร์ที่อ่านแคที่ส่งกลับค่าการอ่านแล้วทันที สำเร็จของบล็อกข้อมูลเดียวกัน ในบางครั้ง ปัญหานี้เกิดขึ้นเนื่องจากปัญหาในการแคชอ่าน ในบางกรณี ข้อมูลการเขียนถูกจริงไม่เขียนลงดิสก์ทางกายภาพ

การเปิดใช้งานการวิเคราะห์เพิ่มเติมสำหรับชนิดของปัญหาเหล่านี้ SQL Server ได้เพิ่มค่าสถานะการสืบค้นกลับ 818 คุณสามารถระบุค่าสถานะการสืบค้นกลับ 818 เป็นพารามิเตอร์เริ่มต้น, -T818 สำหรับคอมพิวเตอร์ที่ใช้ SQL Server หรือคุณสามารถเรียกใช้คำสั่งต่อไปนี้:
DBCC TRACEON(818, -1)

ค่าสถานะการสืบค้นกลับ 818 ทำให้มีบัฟเฟอร์เสียงโทรศัพท์ในหน่วยความจำที่ใช้สำหรับการติดตามการดำเนินงานที่ดำเนินการ โดยคอมพิวเตอร์ที่รัน SQL Server ไม่รวมถึงการเรียงลำดับและ workfile I/Os เขียน 2,048 ล่าสุดสำเร็จ เมื่อเกิดข้อผิดพลาดเช่นข้อผิดพลาด 605, 823 หรือ 3448 ของบัฟเฟอร์ขาเข้าบันทึกลำดับหมายเลข (LSN) ค่าถูกเปรียบเทียบกับเขียนรายการล่าสุด If the LSN that is retrieved during the read operation is older than the one specified during the write operation, a new error message is logged in the SQL Server error log. Most SQL Server write operations occur as checkpoints or as lazy writes. A lazy write is a background task that uses asynchronous I/O. The implementation of the ring buffer is lightweight, thereby making the performance affect on the system negligible.

The following message indicates that SQL Server did not receive an error from theWriteFileAPI call or theReadFileการเรียก API However, when the LSN was reviewed, the value was not correct:
SQL Server has detected an unreported OS/hardware level read or write problem on Page (1:75007) of database 12
LSN returned (63361:16876:181), LSN expected (63361:16876:500)
Contact the hardware vendor and consider disabling caching mechanisms to correct the problem
At this point, either the read cache contains an older version of the page, or the data was not correctly written to the physical disk. In either case (a Lost Write or a Stale Read), SQL Server reports an external problem with the operating system, the driver, or the hardware layers.

If Error 3448 occurs when you try to rollback a transaction that has Error 605 or Error 823, the computer running SQL Server automatically closes the database and tries to open and recover the database. The first page that experiences Error 605 or Error 823 is considered a bad page, and the page id is kept by the computer running SQL Server. During recovery (before the redo phase) when the bad page id is read, the primary details about the page header are logged in the SQL Server error log. This action is important because it helps to distinguish between Lost Write and Stale Read scenarios.

You may see the following two common behaviors in Stale Read scenarios:
  • If the database files are closed and then opened, the correct and most recently written data is returned during recovery.
  • When you issue a checkpoint and run theDBCC DROPCLEANBUFFERSstatement (to remove all database pages from the memory), and then run theDBCC CHECKDBstatement on the database, the most recently written data is returned.
The behaviors mentioned in the previous paragraph indicate a read caching problem and they are frequently solved by disabling the read cache. The actions that are outlined in the previous paragraph typically force a cache invalidation and the successful reads that occur show that the physical media is correctly updated. The Lost Write behavior occurs when the page that is read back is still the older version of the data, even after a forced flush of the caching mechanisms.

Sometimes, the problem may not be specific to a hardware cache. It may be a problem with a filter driver. In such cases, review your software, including backup utilities and antivirus software, and then see if there are problems with the filter driver.

Microsoft has also noted conditions that do not meet the criteria for Error 605 or Error 823 but are caused by the same Stale Read or Lost Write activity. In some instances, a page appears to be updated two times but with the same LSN value. ลักษณะการทำงานนี้อาจเกิดขึ้นหากการObject IDและPage IDถูกต้อง (หน้าได้ปันส่วนไปยังวัตถุ), และทำให้หน้า และ flushed ไปยังดิสก์การเปลี่ยนแปลง รูปที่เก่ากว่าที่ส่งกลับค่าเรียกหน้าถัดไป และจากนั้น ทำการเปลี่ยนแปลงที่สอง ล็อกธุรกรรมของ SQL Server แสดงว่า เพจนี้ถูกปรับปรุงสองครั้ง ด้วยค่า LSN เดียว การกระทำนี้มี ปัญหาเมื่อคุณพยายามคืนค่าลำดับการล็อกธุรกรรมหรือ กับข้อมูลความสอดคล้อง ปัญหา เช่นความล้มเหลวที่สำคัญภายนอกหรือรายการข้อมูลที่ขาดหายไป ข้อความแสดงข้อผิดพลาดต่อไปนี้แสดงตัวอย่างหนึ่งของเงื่อนไขนี้:
ข้อผิดพลาด: 3456 ความรุนแรง: 21 สถานะ: ทำ 1 ไม่ไม่ซ้ำระเบียนแฟ้มบันทึก (276666:1664:19), สำหรับรหัสธุรกรรม (0:825853240), บนหน้า (1:1787100) ฐานข้อมูล 'ผู้สร้าง' (7) ได้ หน้า: LSN = (276658:4501:9), ชนิด = 1 แฟ้มบันทึก: OpCode = 4 บริบท 2, PrevPageLSN: (275565:3959:31)

บางสถานการณ์ outlined รายละเอียดเพิ่มเติมในรายการต่อไปนี้:
  • LSN Sequence		Action
    1			Checkpoint
    2			Begin Transaction
    3			Table created or truncated
    4			Inserts (Pages allocated)
    5			Newly allocated page written to disk by Lazy Writer
    6			Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID
    7			Rollback of transaction initiated
    
  • LSN Sequence		Action
    1			Checkpoint
    2			Begin Transaction
    3			Page Modification
    4			Page written to disk by Lazy Writer
    5			Page read in for another modification (stale image returned)
    6			Page Modified for a second time but because of stale image does not see first modification 
    7			Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page
    
ตัวดำเนินการของ sql server 'เรียงลำดับ' ดำเนินการ I/O กิจกรรม หลักไปยัง และจากนั้นtempdbdatabase. ดำเนินการ I/O เหล่านี้จะเหมือนกับการดำเนินการบัฟเฟอร์ I/O การออกแบบอย่างไรก็ตาม เหล่านั้นมีอยู่แล้วถูกมาเพื่อใช้ตรรกะการลองส่งใหม่ที่อ่านเพื่อพยายามแก้ไขปัญหาที่คล้ายกัน The additional diagnostics explained in this article do not apply to these I/O operations.

Microsoft has noted that the root cause for the following sort read failures is generally a Stale Read or a Lost Write:
2003-04-01 20:13:31.38 spid122 SQL Server Assertion: File: <p:\sql\ntdbms\storeng\drs\include\record.inl>, line=1447 Failed Assertion = 'm_SizeRec > 0 && m_SizeRec <= maxdatarow'.=""></=></p:\sql\ntdbms\storeng\drs\include\record.inl>

2003-03-29 09:51:41.12 spid57 Sort read failure (bad page ID). pageid = (0x1:0x13e9), dbid = 2, file = e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf. Retrying.

2003-03-29 09:51:41.13 spid57 Error: 823, Severity: 24, State: 7
2003-03-29 09:51:41.13 spid57 I/O error (bad page ID) detected during read at offset 0x000000027d2000 in file 'e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf'..

* 00931097 Module(sqlservr+00531097) (utassert_fail+000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize+00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn+00000012)
* 00852520 Module(sqlservr+00452520) (mergerow+000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext+00000285)
* 0085207D Module(sqlservr+0045207D) (mergenext+0000000D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted+00000021)

Customers who have experienced these sort errors have frequently resolved the problems by movingtempdbto a non-caching local drive, or by disabling the read caching mechanisms.

Because a stale read or a lost write results in data storage that is not expected, a wide variety of behaviors may occur. It may appear as missing data, but some of the more common effects of missing data appear as index corruptions, such as Error 644 or Error 625:
Error 644 Severity Level 21 Message Text Could not find the index entry for RID '%.*hs' in index page %S_PGID, index ID %d, database '%.*ls'.
Error 625 Severity Level 21 Message Text Cannot retrieve row from page %S_PGID by RID because the slotid (%d) is not valid.
Some customers have reported missing rows after they perform row count activities. This problem occurs because of a lost write. Perhaps the page was supposed to be linked to the clustered index page chain. If the write was physically lost, the data is also lost.

สิ่งสำคัญIf you experience any of the behaviors, or if you are suspicious of similar problems together with disabling caching mechanisms, Microsoft strongly recommends that you obtain the latest update for SQL Server and the latest SQL Server I/O Stress Simulator. Microsoft also strongly encourages that you perform a strict review of your operating system and its associated configurations.

สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
231619HOW TO: Use the SQLIOStress Utility to Stress a Disk Subsystem Such as SQL Server
SQL Server requires systems to support ‘ guaranteed delivery to stable media ’ as outlined under the Microsoft SQL Server Always-On Storage Solution Review program. FoFor more information about the input and output requirements for the SQL Server database engine, click the following article number to view the article in the Microsoft Knowledge Base:
967576Microsoft SQL Server Database Engine Input/Output Requirements

คุณสมบัติ

หมายเลขบทความ (Article ID): 826433 - รีวิวครั้งสุดท้าย: 14 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2000 Service Pack 3
Keywords: 
kbhotfixserver kbqfe kbbug kbhardware kbfilter kbdriver kbdatabase kbsysadmin kbinfo kbmt KB826433 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:826433

ให้ข้อเสนอแนะ

 

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