Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Các phương pháp miễn phí để sửa chữa lỗi chỉ mục máy chủ SQL

Bài viết này chia sẻ tầm quan trọng của các chỉ mục trong cơ sở dữ liệu SQL. Ngoài ra, nó cung cấp một cái nhìn tổng quan ngắn gọn về các chỉ mục được phân nhóm và không phân nhóm. Hơn nữa, bài viết thảo luận về các lý do khiến chỉ mục SQL Server bị hỏng, các yếu tố để xác định bất kỳ chỉ mục nào bị hỏng và các phương pháp để khắc phục.

Các chỉ mục trong SQL Server giúp tăng tốc quá trình truy xuất các hàng từ một bảng hoặc dạng xem. Tuy nhiên, việc lựa chọn chỉ mục chính xác là rất quan trọng để cải thiện hiệu suất truy vấn. SQL Server hỗ trợ các chỉ mục được phân nhóm và không hợp nhất. Lỗi trong bất kỳ chỉ mục nào trong số này có thể gây ra sự chậm trễ trong việc tìm nạp các hàng. Ngoài ra, bạn có thể nhận được các giá trị khác nhau hoặc bị xóa trong khi truy xuất một số hàng. Ngoài ra, các truy vấn chạy lâu nhất có thể bị lỗi do các chỉ mục trên bảng bị hỏng.

Dù là tình huống nào, bạn phải sửa chữa lỗi trong chỉ mục kịp thời để ngăn quy trình làm việc của cơ sở dữ liệu SQL Server bị ảnh hưởng.

Trước khi thảo luận về các phương pháp khắc phục sự cố hỏng chỉ mục, hãy cùng tìm hiểu tổng quan ngắn gọn về chỉ mục nhóm và không gộp.

Tổng quan về Chỉ mục được phân nhóm và không được phân cụm

Áp dụng ràng buộc khóa chính trên một cột trong bảng sẽ tạo một chỉ mục nhóm trên cột. Một chỉ mục được phân cụm sắp xếp dữ liệu một cách vật lý và lưu trữ dữ liệu trong một bảng dựa trên khóa chỉ mục đã xác định của nó. Vì chúng tôi chỉ có thể sắp xếp dữ liệu theo một thứ tự, nên không thể có nhiều hơn một chỉ mục được nhóm.

Tuy nhiên, một chỉ mục không hợp nhất sắp xếp và lưu trữ dữ liệu riêng biệt với các hàng trong bảng. Về cơ bản, nó là một bản sao của các cột dữ liệu bảng có liên kết đến bảng được liên kết. Không giống như các chỉ mục được phân nhóm, bạn có thể có một hoặc nhiều chỉ mục không được phân nhóm.

Nguyên nhân nào gây ra lỗi chỉ mục máy chủ SQL?

Các chỉ mục có thể bị phân mảnh nhiều theo thời gian (do các hoạt động chèn, cập nhật hoặc xóa hàng loạt) và yêu cầu bảo trì định kỳ. Các chỉ mục bị phân mảnh có thể gây ra hiệu suất truy vấn kém và có thể bị hỏng. Ngoài ra, các yếu tố như nâng cấp phiên bản SQL Server, lỗi trong chương trình SQL, hệ thống tắt đột ngột, v.v. có thể dẫn đến hỏng chỉ mục SQL Server. Đặc biệt, việc chạy một "câu lệnh CẬP NHẬT phức tạp với gợi ý NOLOCK" trên bảng có thể gây ra hỏng chỉ mục không phân cụm.

Trước khi thảo luận về các phương pháp sửa chữa lỗi trong chỉ mục SQL Server, hãy xem cách xác định các chỉ mục bị hỏng.

Cách xác định lỗi trong chỉ mục của SQL Server?

Bạn có thể xác định xem một chỉ mục có bị hỏng hay không bằng cách sử dụng các phương pháp sau:

  • Tìm nạp các hàng có các giá trị khác nhau hoặc đã bị xóa, sau đó chạy lệnh ‘ROWID’ để xác định bất kỳ mục nhập nào bị thiếu. Bạn cũng có thể theo dõi các mục bị thiếu bằng cách kiểm tra nhật ký lỗi SQL.
  • Đang chạy DBCC CHECKDB sẽ báo cáo thông báo lỗi sau nếu bạn có một chỉ mục không hợp nhất bị hỏng.

Bản tin thứ 2511, Mức 16, Trạng thái 1, Dòng 31

Lỗi bảng:ID đối tượng 613577224, ID chỉ mục 2, ID phân vùng 72057594041401344,

cấp phát ID đơn vị 72057594047037440 (nhập dữ liệu hàng IN).

Các phím không theo thứ tự trên trang (1:264), vị trí 2 và 3.

  • Nếu bạn có một chỉ mục theo nhóm, bạn có thể nhận được thông báo sau hiển thị lỗi:

Máy chủ:Msg 1902, Mức 16, Trạng thái 3, Dòng 1

Không thể tạo nhiều hơn một chỉ mục được nhóm trên bảng ‘Tên bảng’. Thả chỉ mục được phân nhóm hiện có 'Tên chỉ mục được phân cụm' trước khi tạo chỉ mục khác.

Cách sửa chữa lỗi chỉ mục máy chủ SQL?

Làm theo các phương pháp miễn phí sau mà bạn có thể sử dụng để sửa lỗi chỉ mục SQL Server:

Phương pháp 1 - Khôi phục từ bản sao lưu

Cho dù bạn nghi ngờ có tham nhũng trong chỉ mục nhóm hay không phân nhóm, hãy sử dụng bản sao lưu để khôi phục dữ liệu bị ảnh hưởng trước khi xảy ra hỏng.

Tuy nhiên, khôi phục từ bản sao lưu sẽ không hoạt động nếu bản sao lưu thiếu các bản cập nhật mới nhất. Nó thậm chí có thể dẫn đến mất dữ liệu. Trong trường hợp đó, hãy thử phương pháp tiếp theo.

Phương pháp 2 - Thả và tạo lại chỉ mục bị hỏng

Lưu ý: Điều này chỉ hoạt động đối với các chỉ mục không được phân cụm.

Bỏ tất cả hoặc chỉ mục cụ thể hiển thị tham nhũng bằng cách làm theo các bước sau:

  • Kết nối với một phiên bản máy chủ trong SQL Server Management Studio (SSMS) .
  • Trên ‘Object Explorer’ , mở rộng cơ sở dữ liệu chứa bảng có chỉ mục bị hỏng.
  • Nhấp chuột phải vào bảng, chọn ‘Script Table as’ , di chuột qua ‘DROP And CREATE To’ và nhấp vào Trình chỉnh sửa truy vấn mới

Nếu bạn không thể tạo lại các chỉ mục bị hỏng, bạn có thể thử sửa chữa các chỉ mục.

Phương pháp 3 - Sửa chữa cơ sở dữ liệu SQL

Phương án cuối cùng, hãy chạy lệnh DBCC CHECKDB với ‘REPAIR_ALLOW_DATA_LOSS’ cho cơ sở dữ liệu đã bị hỏng chỉ mục (nhóm hoặc không hợp nhất) trên bảng. Nhưng điều này có thể dẫn đến mất dữ liệu. Là một giải pháp thay thế, hãy thử sử dụng một công cụ sửa chữa SQL như Stellar Repair cho MS SQL. Công cụ này giúp sửa chữa các tệp cơ sở dữ liệu (.mdf và .ndf) và khôi phục các chỉ mục, chế độ xem, thủ tục được lưu trữ và tất cả các thành phần khác. Bạn có thể nhập trực tiếp các chỉ mục đã khôi phục và các đối tượng cơ sở dữ liệu khác vào cơ sở dữ liệu trực tiếp hoặc cơ sở dữ liệu mới.

Tải xuống phiên bản demo của phần mềm sửa chữa cơ sở dữ liệu SQL để xem trước các chỉ mục có thể khôi phục trước khi lưu tệp đã sửa chữa.

Kết luận

Nếu bạn nghi ngờ tham nhũng trong một chỉ mục, hãy sử dụng các yếu tố được nêu trong bài viết để xác định xem chỉ mục đó có bị hỏng hay không. Ngoài ra, hãy kiểm tra các lý do có thể có đằng sau lỗi chỉ mục SQL Server và các phương pháp sửa chữa lỗi. Các phương pháp bao gồm khôi phục cơ sở dữ liệu từ sao lưu, xóa và tạo lại các chỉ mục, sửa chữa cơ sở dữ liệu và khôi phục tất cả các thành phần của nó. Bạn cũng có thể cân nhắc sử dụng công cụ sửa chữa SQL để sửa các chỉ mục SQL phân cụm và không phân cụm bị hỏng và khôi phục các đối tượng cơ sở dữ liệu không thể truy cập được.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giá trị ngẫu nhiên cho cột DATETIME

  2. Truy vấn SQL để chọn ngày giữa hai ngày

  3. Sao chép bảng vào cơ sở dữ liệu khác trên SQL Server khác

  4. Lấy hình ảnh từ cơ sở dữ liệu trong asp.net

  5. Sử dụng Excel VBA để chạy truy vấn SQL