Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Chẩn đoán SQL Server vào phát hiện không được báo cáo vấn đề I/O do các đọc hoặc ghi mất

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 826433
Triệu chứng
Nếu hệ điều hành, trình điều khiển hoặc phần cứng gây ra vấn đề mất viết điều kiện hoặc các điều kiện đọc, bạn có thể thấy thông báo lỗi liên quan đến tính toàn vẹn dữ liệu chẳng hạn như lỗi 605, 823, 3448, 3456. Bạn có thể nhận được thông báo lỗi tương tự như ví dụ sau đây:

2003-07-24 16:43:04.57 spid63 Getpage: bstat = 0x9 sstat = 0x800, bộ nhớ cache
2003-07-24 16:43:04.57 spid63 pageno là/phải: objid là/phải:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424
2003-07-24 16:43:04.57 spid63... IAM cho biết rằng trang dành cho đối tượng này

2003-07-24 16:52:37.67 spid63 lỗi: 605, mức độ nghiêm trọng: 21, trạng thái: 1
2003-07-24 16:52:37.67 spid63 nỗ lực tìm nạp dữ liệu trang logic (1:7040966) trong bộ máy cơ sở dữ liệu 'quán' thuộc đối tượng 'tác giả', không đối tượng 'tên'.

2003-07-24 16:52:40.99 spid63 lỗi: 3448, mức độ nghiêm trọng: 21, trạng thái: 1
2003-07-24 16:52:40.99 spid63 không thể hoàn tác ghi (63361:16876:181), giao dịch ID (0:159696956), trang (1:7040977), bộ máy cơ sở dữ liệu 'quán' (cơ sở dữ liệu ID 12). Trang thông tin: LSN = (63192:958360:10), loại = 2. Thông tin đăng nhập: OpCode = 2, bối cảnh 1.

2003-07-09 14:31:35.92 spid66 lỗi: 823, mức độ nghiêm trọng: 24, trạng thái: 2
2003-07-09 14:31:35.92 spid66 lỗi vào/ra (trang bị ID) được phát hiện trong đo tại khoảng chênh 0x00000016774000 trong tệp 'h:\sql\MSSQL\data\tempdb.mdf'.

2010-02-06 15:57:24.14 spid17s lỗi: 3456, mức độ nghiêm trọng: 21, trạng thái: 1.
2010-02-06 15:57:24.14 spid17s có thể không thực hiện lại ghi (58997:5252:28), giao dịch ID (0:109000187), trang (1:480946), bộ máy cơ sở dữ liệu 'MyDatabase' (cơ sở dữ liệu ID 17). Trang: LSN = (58997:5234:17), loại = 3. Đăng nhập: OpCode = 2, bối cảnh 5, PrevPageLSN: (58997:5243:17). Khôi phục từ đồng gửi lưu bộ máy cơ sở dữ liệu hoặc sửa chữa bộ máy cơ sở dữ liệu.
Thông tin thêm
Microsoft đã giới thiệu khả năng mở rộng theo dõi Bắt đầu với SQL Server 2000 Service Pack 4 và chẩn đoán này đã là một phần của sản phẩm trong SQL Server 2005 và phiên bản mới hơn. Khả năng này được thiết kế nhằm giúp phát hiện I/O liên quan đến các vấn đề bên ngoài và khắc phục các thông báo lỗi được mô tả trong phần "Triệu chứng"

Nếu bạn nhận được bất kỳ thông báo lỗi được đề cập trong phần "Triệu chứng" và họ không thể được giải thích bởi một sự kiện như một ổ đĩa vật lý thất bại, sau đó xem xét bất kỳ sự cố đã biết với SQL Server, hệ điều hành, các trình điều khiển và phần cứng. Chẩn đoán sự cố gắng cung cấp thông tin về hai điều kiện sau:
  • Ghi mất: Cuộc gọi thành công WriteFile API, nhưng hệ điều hành, trình điều khiển hoặc cachingcontroller không đúng cách xoá dữ liệu để thoughSQL ngay cả phương tiện vật lý máy chủ thông báo viết đã thành công.
  • Các đọc: Cuộc gọi thành công ReadFile API, nhưng hệ điều hành, trình điều khiển hoặc cachingcontroller không chính xác trở lại phiên bản cũ hơn của dữ liệu.
Ví dụ, Microsoft đã xác nhận tình huống mà cuộc gọi WriteFile API trả lại là thành công, nhưng một đọc ngay lập tức thành công, khối dữ liệu cùng trả lại dữ liệu cũ hơn, bao gồm dữ liệu có thể được lưu trữ trong một phần cứng đọc bộ đệm ẩn. Đôi khi, sự cố này xảy ra do một vấn đề bộ nhớ cache đọc. Trong trường hợp khác, dữ liệu ghi bao giờ được ghi vào đĩa vật lý.

Để kích hoạt các chẩn đoán các loại sự cố, SQL Server có thêm cờ theo dõi 818. Bạn có thể chỉ định cờ theo dõi 818 là tham số khởi động-T818, máy tính đang chạy SQL Server, hoặc bạn có thể chạy lệnh sau:
DBCC TRACEON(818, -1)

Cờ theo dõi 818 cho phép một vòng trong bộ nhớ đệm được sử dụng để theo dõi 2.048 người cuối cùng thành công ghi hoạt động được thực hiện bởi máy tính đang chạy SQL Server, không bao gồm sắp xếp và workfile I/Os. Khi xảy ra lỗi như lỗi 605, 823 hoặc 3448, giá trị số (LSN) bộ đệm các Nhật kí tự đại diện được so với danh sách viết gần đây. Nếu LSN lấy trong đọc cũ hơn được chỉ định trong ghi, một thông báo lỗi mới được ghi trong Nhật ký lỗi SQL Server. Hầu hết SQL Server ghi hoạt động xảy ra như kiểm hoặc viết vội. Viết vội là một nhiệm vụ cơ bản sử dụng I/O không đồng bộ. Thực hiện vòng đệm là nhẹ, do đó làm cho hiệu năng ảnh hưởng đến hệ thống không đáng kể.

Thông báo sau đây chỉ ra rằng máy chủ SQL không nhận được lỗi gọi API WriteFile hoặc gọi ReadFile API. Tuy nhiên, khi LSN được xem xét, giá trị này không đúng:

SQL Server đã phát hiện ra độ OS/phần cứng không được báo cáo đọc hoặc ghi cố trang (1:75007) bộ máy cơ sở dữ liệu 12
LSN trở lại (63361:16876:181), LSN mong muốn (63361:16876:500)
Liên hệ với nhà cung cấp phần cứng và xem xét việc vô hiệu hóa bộ nhớ đệm cơ chế để khắc phục sự cố

Bắt đầu với SQL Server 2005, thông báo lỗi sẽ được báo cáo là:

SQL Server phát hiện một logic dựa trên tính thống nhất lỗi vào/ra: cu đọc. Lỗi này xảy ra trong một <Read rite="">> trang <PAGEID>> trong bộ máy cơ sở dữ liệu ID <DBID>> tại khoảng chênh <PHYSICAL offset="">> trong tệp <FILE name="">>. Các thông báo bổ sung trong SQL Server nhật kí lỗi hoặc hệ thống Nhật ký sự kiện có thể cung cấp thêm chi tiết. Đây là một điều kiện lỗi nghiêm trọng đe dọa tính toàn vẹn của bộ máy cơ sở dữ liệu và phải được sửa chữa ngay lập tức. Hoàn thành kiểm tra tính thống nhất toàn bộ bộ máy cơ sở dữ liệu (DBCC CHECKDB). Lỗi này có thể do nhiều yếu tố; để biết thêm thông tin, hãy xem SQL Server sách trực tuyến.</FILE> </PHYSICAL> </DBID> </PAGEID> </Read>

Tại thời điểm này, bộ nhớ cache đọc có một phiên bản cũ của trang hoặc dữ liệu không chính xác được ghi vào đĩa vật lý. Trong trường hợp (bản ghi mất hoặc đọc các), SQL Server báo cáo một vấn đề bên ngoài hệ điều hành, trình điều khiển hoặc lớp phần cứng.

Nếu lỗi 3448 xảy ra khi bạn cố gắng rollback giao dịch có lỗi 605 hoặc lỗi 823, máy tính đang chạy SQL Server tự động đóng lại bộ máy cơ sở dữ liệu và cố gắng mở và Khôi phục bộ máy cơ sở dữ liệu. Trang đầu tiên gặp phải lỗi 605 hoặc lỗi 823 là một trang không hợp lệ và id của trang được lưu bởi máy tính đang chạy SQL Server. Trong quá trình khôi phục (trước khi giai đoạn làm lại) khi đọc trang bị id, các chi tiết chính về tiêu đề trang được ghi lại trong Nhật ký lỗi SQL Server. Thao tác này rất quan trọng vì nó giúp phân biệt giữa mất viết và đọc các kịch bản.

Bạn có thể thấy hai sau hành vi phổ biến trong đọc các trường hợp:
  • Nếu các tệp bộ máy cơ sở dữ liệu đóng và sau đó mở, thecorrect và gần đây nhất ghi dữ liệu được trả lại trong quá trình khôi phục.
  • Khi bạn phát hành một trạm kiểm soát bật lên và chạy câu lệnh DBCC DROPCLEANBUFFERS (để loại bỏ tất cả bộ máy cơ sở dữ liệu trang bộ nhớ), andthen chạy câu lệnh DBCC CHECKDB trên bộ máy cơ sở dữ liệu, dữ liệu isreturned viết gần đây nhất.
Hành vi được đề cập trong đoạn trước đó cho biết sự cố lưu trữ đọc và thường được giải quyết bằng cách vô hiệu hoá bộ đệm ẩn đọc. Hành động được nêu trong đoạn trước đó thường buộc invalidation bộ nhớ cache và đọc thành công xảy ra Hiển thị phương tiện vật lý đã được cập nhật một cách chính xác. Mất viết cố xảy ra khi trang được đọc lại vẫn là phiên bản cũ của dữ liệu, ngay cả sau khi bắt buộc flush cơ chế lưu trữ.

Đôi khi, sự cố có thể không dành riêng cho bộ đệm ẩn phần cứng. Có sự cố với trình điều khiển bộ lọc. Trong trường hợp này, xem lại phần mềm của bạn, bao gồm các tiện ích sao lưu và phần mềm chống vi-rút, và sau đó xem nếu có sự cố với trình điều khiển bộ lọc.

Microsoft cũng lưu ý điều kiện mà không đáp ứng các tiêu chuẩn cho lỗi 605 hoặc lỗi 823 nhưng do các hoạt động cùng các đọc hoặc ghi mất. Trong một số trường hợp, một trang xuất hiện để được Cập Nhật hai lần nhưng với LSN cùng một giá trị. Hành vi này có thể xảy ra nếu các Đối tượng IDTrang ID đúng (trang đã cấp đối tượng) và thay đổi được thực hiện đối với các trang và xóa đĩa. Truy xuất trang tiếp theo trở lại một hình ảnh cũ, và sau đó thay đổi thứ hai được thực hiện. Nhật ký giao dịch SQL Server Hiển thị web site được Cập Nhật hai lần với cùng giá trị LSN. Thao tác này sẽ trở thành một vấn đề khi bạn cố gắng khôi phục một chuỗi Nhật ký giao dịch hoặc vấn đề thống nhất dữ liệu, chẳng hạn như ngoại khoá lỗi hoặc thiếu dữ liệu mới. Thông báo lỗi sau đây minh hoạ một ví dụ về tình huống này:

Lỗi: 3456, mức độ nghiêm trọng: 21, trạng thái: 1 có thể không thực hiện lại ghi (276666:1664:19) cho giao dịch ID (0:825853240), trang (1:1787100), bộ máy cơ sở dữ liệu 'tác giả' (7). Trang: LSN = (276658:4501:9), loại = 1. Đăng nhập: OpCode = 4, bối cảnh 2, PrevPageLSN: (275565:3959:31).

Một số trường hợp được nêu chi tiết hơn trong danh sách sau đây:
  • 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
Sử dụng SQL Server 'loại' thực hiện I/O hoạt động chủ yếu và bộ máy cơ sở dữ liệu tempdb . Các thao tác I/O là tương tự như bộ đệm I/O hoạt; Tuy nhiên, họ đã có được thiết kế để sử dụng thử đọc logic để giải quyết vấn đề tương tự. Chẩn đoán các giải thích trong bài viết này không áp dụng cho các thao tác I/O.

Microsoft đã lưu ý rằng nguyên nhân chính cho các loại sau đọc thất bại là thường đọc các bản ghi mất:

2003-04-01 20:13:31.38 spid122 SQL Server xác nhận: tập tin: <p:\sql\ntdbms\storeng\drs\include\record.inl>, dòng = 1447 không thể xác nhận = ' m_SizeRec > 0 && m_SizeRec<= maxdatarow'.=""></=>

2003-03-29 09:51:41.12 spid57 loại đọc thất bại (trang bị ID). pageid = (0x1:0x13e9), dbid = 2, tệp = e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf. Thử lại.

2003-03-29 09:51:41.13 spid57 lỗi: 823, mức độ nghiêm trọng: 24, trạng thái: 7
2003-03-29 09:51:41.13 spid57 lỗi vào/ra (trang bị ID) được phát hiện trong đo tại khoảng chênh 0x000000027d2000 trong tệp '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)

</p:\sql\ntdbms\storeng\drs\include\record.inl>
Khách hàng có các loại lỗi thường có giải quyết sự cố bằng cách di chuyển tempdb không bộ nhớ đệm ổ đĩa cục bộ, hoặc vô hiệu hoá các cơ chế lưu trữ đọc.

Vì các đọc hoặc ghi mất kết quả lưu trữ dữ liệu không mong muốn, nhiều chế độ có thể xảy ra. Có vẻ như dữ liệu bị thiếu, nhưng số hiệu phổ biến mất dữ liệu xuất hiện như nhiễm mục chỉ dẫn, chẳng hạn như lỗi 644 hoặc lỗi 625:

Lỗi 644 nghiêm trọng mức 21 tin nhắn văn bản có thể không biết mục chỉ dẫn RID ' %. * hs' trong mục chỉ dẫn trang % S_PGID, ID mục chỉ dẫn %d, bộ máy cơ sở dữ liệu ' %. * ls'.
Văn bản thông báo lỗi 625 nghiêm trọng mức 21 không thể truy xuất hàng từ trang % S_PGID bởi RID do slotid (%d) không hợp lệ.

Một số khách hàng đã báo cáo thiếu hàng sau khi thực hiện hàng tính hoạt động. Sự cố này xảy ra do bản ghi bị mất. Có lẽ trang phải được liên kết với nhóm mục chỉ dẫn trang chuỗi. Nếu viết là vật lý mất dữ liệu cũng bị mất.

Quan trọng Nếu bạn gặp bất kỳ hành vi, hoặc nếu bạn nghi ngờ sự cố tương tự với vô hiệu hóa bộ nhớ đệm cơ chế, Microsoft thực sự khuyên bạn tải xuống bản cập nhật mới nhất cho SQL Server và đặt SQL Server vào/ra áp lực Simulator. Microsoft cũng đặc biệt khuyến khích bạn thực hiện kiểm tra nghiêm ngặt của hệ điều hành và các cấu hình liên quan.

Lưu ý Microsoft đã xác nhận trong một số ít và nặng I/O tải, một số nền tảng phần cứng có thể trở lại đọc cũ. Nếu chẩn đoán mở rộng cho biết cu có thể đọc/mất ghi điều kiện, liên hệ với nhà cung cấp phần cứng để ngay lập tức theo lên và kiểm tra với các SQLIOSim Tiện ích.

SQL Server yêu cầu hệ thống hỗ trợ bảo đảm cung cấp ổn định phương tiện như được nêu trong cácYêu cầu chương trình SQL Server vào/ra độ tin cậy. Để biết thêm thông tin về các yêu cầu đầu vào và đầu ra cho bộ máy cơ sở dữ liệu SQL Server, hãy xem Yêu cầu đầu vào/đầu ra công cụ bộ máy cơ sở dữ liệu Microsoft SQL Server.

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 826433 - Xem lại Lần cuối: 06/04/2015 19:55:00 - Bản sửa đổi: 4.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 KbMtvi
Phản hồi