您目前已離線,請等候您的網際網路重新連線

加入至偵測未回報的 I/O 問題,因為過時讀取或遺失的寫入 SQL Server 診斷

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:826433
徵狀
如果遺失的作業系統、 驅動程式或硬體問題原因撰寫條件或過時讀取的條件,您可能會看到資料完整性相關的錯誤訊息,如錯誤 605、 823、 3448,3456。您可能會收到類似下列的範例的錯誤訊息:

2003-07-24 16:43:04.57 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 16:43:04.57 spid63...IAM 表示該頁面配置給這個物件

2003-07-24 16:52:37.67 spid63 錯誤: 605,高的嚴重性等級: 21,狀態: 1
2003-07-24 16:52:37.67 spid63 嘗試擷取的資料庫 'pubs' 屬於物件 '作者',不到物件 '標題' 中的邏輯頁 (1:7040966).

2003-07-24 16:52:40.99 spid63 錯誤: 3448,高的嚴重性等級: 21,狀態: 1
2003-07-24 16:52:40.99 spid63 無法復原的交易 ID (0:159696956),在頁面上 (1:7040977) 資料庫 'pubs' (資料庫識別碼 12) 的記錄檔資料錄 (63361:16876:181)。頁面資訊: LSN = (63192:958360:10)、 類型 = 2。記錄資訊: OpCode = 2,內容 1.

2003-07-09 14:31:35.92 spid66 錯誤: 823,高的嚴重性等級: 24,狀態: 2
2003-07-09 14:31:35.92 spid66 的 I/O 錯誤 (錯誤的頁面 ID) 的位移 0x00000016774000 'h:\sql\MSSQL\data\tempdb.mdf' 的檔案中讀取時偵測到.

2010-02-06 15:57:24.14 spid17s 錯誤: 並出現 3456,高的嚴重性等級: 21,狀態: 1。
2010-02-06 15:57:24.14 spid17s 無法在頁面上 (1:480946) 資料庫 'MyDatabase' (資料庫識別碼 17) 的交易識別碼 (0:109000187),取消復原記錄檔資料錄 (58997:5252:28)。頁面: LSN = (58997:5234:17)、 型別 = 3。記錄: OpCode = 2,內容 5 PrevPageLSN: (58997:5243:17)。從資料庫的備份還原或修復資料庫。
其他相關資訊
Microsoft 採用以 SQL Server 2000 Service Pack 4 開始的延伸的追蹤功能,這些診斷已經在 SQL Server 2005 和更新版本產品的一部份。這些功能被設計來幫助偵測 I/O 相關的外部的問題和 「 徵狀 〉 一節中所述要疑難排解錯誤訊息

如果您收到 「 徵狀 〉 一節所述的錯誤訊息,例如實體磁碟機失敗事件無法解釋,然後檢閱 SQL Server、 作業系統、 驅動程式及硬體有問題。診斷並試圖提供下列兩種情況的相關資訊:
  • 遺失寫入: 成功呼叫WriteFile API,但作業系統、 驅動程式或 cachingcontroller 不會不正確資料排清到實體媒體甚至 thoughSQL 伺服器會通知寫入成功。
  • 過時讀取: 成功呼叫ReadFile API,但作業系統、 驅動程式或 cachingcontroller 不正確傳回較舊版本的資料。
例如,Microsoft 已確認的案例位置WriteFile API 呼叫傳回成功,但是相同的資料區塊的即時、 成功讀取會傳回較舊的資料,包括可能儲存在硬體,讀取快取中的資料。有時候,會發生這個問題,因為讀取快取問題。在其他情況下,寫入資料不會實際寫入實體磁碟。

若要啟用這類問題的其他診斷,SQL Server 已新增追蹤旗標 818。您可以指定追蹤旗標 818 為啟動參數-T818,執行 SQL Server,或您的電腦可以執行下列陳述式:
DBCC TRACEON(818, -1)

追蹤旗標 818 會啟用用來追蹤 2048 個最後成功寫入由執行 SQL Server,不包含排序與工作檔案 I/o 的電腦執行的作業於記憶體中環狀緩衝區。如錯誤 605、 823 或 3448 的錯誤發生時,傳入緩衝區記錄序號 (LSN) 值是與最近的寫入清單做比較。如果讀取作業期間所擷取的 LSN 比寫入作業期間所指定,新的錯誤訊息會記錄在 SQL Server 錯誤記錄檔中。作為檢查點或延遲寫入,就會發生大部分的 SQL Server 寫入作業。延遲寫入是使用非同步 I/O 的背景工作。環狀緩衝區的實作是輕量級,使得效能的影響微不足道的系統。

下列的訊息會指出 SQL Server 沒有收到錯誤WriteFile API 呼叫或ReadFile API 呼叫。不過,當 LSN 已經過檢閱,值不正確:

SQL Server 偵測到未回報的 OS/硬體層級讀取或寫入資料庫 12 頁 (1:75007) 上的問題
LSN 傳回 (63361:16876:181)、 LSN 預期 (63361:16876:500)
請連絡硬體廠商,並考慮停用快取機制來修正這個問題

從 SQL Server 2005 開始,將會做為報告錯誤訊息:

SQL Server 偵測到邏輯一致性基礎 I/O 錯誤: 過時讀取。發生在<Read rite="">> 頁面<PAGEID>的 > 資料庫識別碼<DBID>> 位移<PHYSICAL offset="">> 檔案<FILE name="">中 >。在 SQL Server 錯誤記錄檔或系統事件日誌中的其他訊息可能會提供更多詳細資料。這是嚴重的錯誤狀況,還威脅著資料庫的完整性,必須立即更正。完成完整的資料庫一致性檢查 (DBCC CHECKDB)。這項錯誤可能被因許多因素。如需詳細資訊,請參閱 SQL Server 線上叢書 》。</FILE> </PHYSICAL> </DBID> </PAGEID> </Read>

此時,讀取快取會包含較舊版本的頁面,或是資料並未正確寫入至實體磁碟。在任一情況 (遺失寫入或過時讀取),SQL Server 會報告作業系統、 驅動程式或硬體層發生外部問題。

如果您嘗試復原錯誤 605 或錯誤 823 的交易時發生錯誤 3448,自動執行 SQL Server 的電腦會關閉資料庫,並嘗試開啟並復原資料庫。發生錯誤 605 或錯誤 823 的第一頁會被視為錯誤的頁面,並將頁面識別碼保留執行 SQL Server 的電腦。(在復原階段前) 的復原期間讀取錯誤的分頁編號時,在 SQL Server 錯誤記錄檔中記錄主要的詳細資訊,有關頁首。這個動作非常重要,因為它可以協助區別遺失寫入] 及 [過時讀取案例。

您可能會看到過時讀取案例在下列兩種常見的行為:
  • 如果關閉並再開啟 thecorrect,最新的資料寫入資料庫檔案會在復原期間傳回。
  • 當您發出檢查點,並執行DBCC DROPCLEANBUFFERS陳述式 (若要從記憶體中移除所有的資料庫頁面) 時,然後會在資料庫中,最近撰寫的資料 isreturned 上執行DBCC CHECKDB陳述式。
在先前段落中所提及的行為表示讀取快取的問題,而且經常解決了停用讀取快取。通常概述在先前段落中的動作會強制快取失效及讀取成功就顯示實體媒體已正確更新。當讀回頁面仍是舊版本的資料,即使在強制排清快取機制,就會發生遺失寫入行為。

有時候,問題可能不是特定硬體快取。它可能是篩選器驅動程式的問題。在這種情況下,檢閱您的軟體,包括備份公用程式和防毒軟體,然後再查看是否有篩選器驅動程式的問題。

Microsoft 也已經注意錯誤 605 或錯誤 823,不符合準則,但會因相同的過時讀取 」 或 「 遺失寫入活動的條件。在某些情況下,頁面會出現更新兩次,但都使用相同的 LSN 值。如果物件識別碼頁 ID都是正確的 (分頁已配置給物件),並且變更是為網頁建立且排清到磁碟,可能會發生這個問題。下一個擷取的分頁會傳回較舊的影像,然後在第二個變更。SQL Server 交易記錄檔會顯示網頁具有相同的 LSN 值更新兩次。此巨集指令在當您嘗試還原交易記錄檔順序時,就會變成問題或發生資料一致性問題,例如外部索引鍵失敗或遺失資料項目。下列的錯誤訊息說明這種狀況的其中一個範例:

錯誤: 3456,高的嚴重性等級: 21,狀態: 1 無法取消復原記錄檔資料錄 (276666:1664:19) 的交易 ID (0:825853240),在頁面上 (1:1787100) 資料庫 '作者' (7)。頁面: LSN = (276658:4501:9)、 型別 = 1。記錄: OpCode = PrevPageLSN,內容 2、 4: (275565:3959:31).

某些案例中所述下列清單中的更多詳細資料:
  • LSN Sequence		Action1			Checkpoint2			Begin Transaction3			Table created or truncated4			Inserts (Pages allocated)5			Newly allocated page written to disk by Lazy Writer6			Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID7			Rollback of transaction initiated
  • LSN Sequence		Action1			Checkpoint2			Begin Transaction3			Page Modification4			Page written to disk by Lazy Writer5			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 活動,主要是為了與tempdb資料庫。這些 I/O 作業都與緩衝區 I/O 作業中 ;不過,它們已經設計使用讀取重試邏輯來嘗試解決類似的問題。在本文中說明的其他診斷並不適用於這些 I/O 作業。

Microsoft 已經注意下列排序的根本原因讀取失敗通常是過時的讀取或遺失寫入:

2003-04-01 20:13:31.38 spid122 SQL Server 判斷提示: 檔案: <p:\sql\ntdbms\storeng\drs\include\record.inl>,列 = 1447年無法判斷提示 = ' m_SizeRec > 0 && m_SizeRec<= maxdatarow'.=""></=>

2003-03-29 09:51:41.12 spid57 排序讀取失敗 (錯誤的頁面 ID)。分頁識別碼 = (0x1:0x13e9)、 dbid = 2,檔案 = e:\program 必要 SQL Server\mssql\data\tempdb.mdf。正在重試。

2003-03-29 09:51:41.13 spid57 錯誤: 823,高的嚴重性等級: 24,狀態: 7
在位移在檔案 'e:\program 必要 SQL Server\mssql\data\tempdb.mdf' 0x000000027d2000 的讀取時偵測到 2003年-03-29 09:51:41.13 spid57 I/O 錯誤 (錯誤的頁面 ID).

* 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)
* 0085207 D Module(sqlservr+0045207D) (mergenext + 0000000 D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted + 00000021)

</p:\sql\ntdbms\storeng\drs\include\record.inl>
tempdb移到非快取的本機磁碟機,或是藉由停用讀取快取機制,遇到這類錯誤的客戶已經經常會解決問題。

因為過時讀取或遺失的寫入會導致未預期的資料儲存區,可能會發生各種不同的行為。它可能會顯示為資料遺失,但有些比較常見的資料遺失的影響會出現索引損毀,例如錯誤 644 或錯誤 625:

錯誤 644 嚴重性層級 21 訊息文字找不到 RID 的索引項目 '%* 3! 中的索引分頁 %1!,索引識別碼 %1!,資料庫' %* ls'。
錯誤 625 嚴重性層級 21 訊息文字無法從分頁 %1 的 RID 擷取資料列,因為 rid (%d) 不正確。

有些客戶報告它們執行的資料列計數的活動後,遺失資料列。之所以發生這個問題,是因為遺失寫入。也許分頁應該連結至叢集的索引頁鏈結。如果寫入實際上已遺失,資料也會遺失。

重要如果您遭遇任何行為,或如果您是可疑的類似的問題,以及停用快取機制,Microsoft 強烈建議您取得最新的更新,SQL Server 和最新的 SQL Server I/O 壓力模擬器。Microsoft 也強烈鼓勵您執行嚴格的檢閱您的作業系統和其關聯的組態。

附註Microsoft 已確認在極少數的粗 I/O 的負載,某些硬體平台可以傳回過時讀取。如果延伸的診斷指出可能的過時讀取/遺失撰寫條件、 向上洽詢硬體廠商立即待和與測試 SQLIOSim 公用程式。

SQL Server 需要支援保證的遞送到穩定媒體之下所述的系統SQL Server I/O 可靠性程式需求.如需有關 SQL Server 資料庫引擎的輸入與輸出需求的詳細資訊,請參閱 Microsoft SQL Server 資料庫引擎輸入/輸出需求.

警告:本文為自動翻譯

內容

文章識別碼:826433 - 最後檢閱時間:06/04/2015 19:56:00 - 修訂: 2.0

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2005 Compact Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Analysis Services, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Express with Advanced Services, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Standard Edition for Small Business, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, SQL Server 2012 Enterprise Core, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, SQL Server 2014 Reporting Services

  • kbhotfixserver kbqfe kbbug kbhardware kbfilter kbdriver kbdatabase kbsysadmin kbinfo kbmt KB826433 KbMtzh
意見反應
ent.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">