Cách sửa lỗi thống nhất cơ sở dữ liệu


7

Tôi có cơ sở dữ liệu Microsoft Dynamics AX SQL Server. Tôi chỉ chạy DBCC CHECKDBđể kiểm tra tính toàn vẹn. Sau một vài phút, tôi nhận được kết thúc như sau:

CHECKDB đã tìm thấy 0 lỗi phân bổ và 4 lỗi nhất quán trong cơ sở dữ liệu 'AXPROD'. Repair_Vbuild là mức sửa chữa tối thiểu đối với các lỗi được tìm thấy bởi DBCC CHECKDB (AXPROD). Thực hiện DBCC hoàn thành. Nếu DBCC in thông báo lỗi, liên hệ với quản trị viên hệ thống của bạn.

Vì tôi có 4 lỗi nhất quán, tôi muốn biết liệu có cách nào để khắc phục điều này hay cách để có được thông tin chi tiết hơn về các lỗi này.

Câu trả lời:


10

Tôi muốn biết nếu có một cách để khắc phục điều này

Những lỗi nhất quán này có thể được sửa chữa với REPAIR_REBUILDtùy chọnDBCC CHECKDB :

Thực hiện sửa chữa mà không có khả năng mất dữ liệu. Điều này có thể bao gồm sửa chữa nhanh, chẳng hạn như sửa chữa các hàng bị thiếu trong các chỉ mục không được nhóm và sửa chữa tốn nhiều thời gian hơn, chẳng hạn như xây dựng lại một chỉ mục.

Như câu trả lời của Shanky đề cập, bất kỳ DBCCsửa chữa nào cũng nên được thực hiện trong một giao dịch, vì vậy bạn có thể kiểm tra các thay đổi trước khi thực hiện chúng.

Như mọi khi, vui lòng đảm bảo bạn có một bộ sao lưu hoàn toàn có thể phục hồi (bao gồm cả đuôi đăng nhập nếu có) trước khi chạy xây dựng lại. Nếu bạn có một bộ sao lưu hợp lệ đầy đủ (bao gồm cả đuôi đăng nhập nếu có) và bạn có thể đủ khả năng ngừng hoạt động, khôi phục có thể là tùy chọn ưa thích. Hãy chắc chắn không ghi đè lên cơ sở dữ liệu hiện tại nếu bạn làm điều này, chỉ trong trường hợp khôi phục thất bại hoặc nó không hoàn thành như bạn mong đợi. Tất nhiên, rất có thể cơ sở dữ liệu được khôi phục sẽ chứa lại tham nhũng, tùy thuộc vào cách thức và thời điểm xảy ra :)

hoặc cách để có được thông tin chi tiết hơn về lỗi này

Chi tiết về bốn lỗi nhất quán nằm ở DBCC CHECKDBđầu ra, trước phần tóm tắt ở cuối. Bạn nên xem lại những điều này để đảm bảo bạn hiểu được vấn đề và những gì có thể đã gây ra nó trước khi thử sửa chữa.

Bạn có thể giảm lượng DBCC CHECKDBđầu ra bằng cách sử dụng WITH NO_INFOMSGStùy chọn.

Thêm DBCCchi tiết thông báo lỗi vào câu hỏi của bạn nếu bạn cần trợ giúp phân tích lỗi. Điều quan trọng là xác định và khắc phục bất kỳ vấn đề phần cứng tiềm ẩn nào có thể gây ra tham nhũng.

Tùy thuộc vào các chi tiết của tham nhũng, có thể có các cách khác để khắc phục các sự cố (chẳng hạn như xây dựng lại một chỉ mục không bao gồm thủ công).

Nếu việc sửa chữa hoặc xây dựng lại thành công, bạn sẽ cần kiểm tra lại cơ sở dữ liệu với DBCC CHECKDBbộ kiểm tra đầy đủ nhất được hỗ trợ bởi phiên bản SQL Server của bạn.


4

Đối với câu hỏi của bạn, tôi đoán rằng điểm quan trọng của việc khôi phục từ sao lưu hợp lệ đã biết đã bị bỏ qua vì vậy tôi cũng sẽ thêm điểm đó.

Mặc dù REPAIR_REBUILD được đề xuất là mức sửa chữa tối thiểu và có thể hoạt động trong trường hợp của bạn, bạn phải biết rằng khi bạn chạy sửa chữa, nó không được bảo đảm để giải quyết vấn đề của bạn và loại bỏ tham nhũng. Nếu điều đó xảy ra khôi phục từ bản sao lưu sẽ là lựa chọn tốt. Bạn có thể sử dụng Repair_Vbuild trong một giao dịch và xem các thay đổi nếu bạn đồng ý với cam kết đó. Dưới đây là những gì BOL Article nói

Do DBCC CHECKDB với bất kỳ tùy chọn REPAIR nào được ghi lại hoàn toàn và có thể phục hồi, Microsoft luôn khuyến nghị người dùng sử dụng CHECKDB với bất kỳ tùy chọn REPAIR nào trong một giao dịch (thực hiện BEGIN TRANSACTION trước khi chạy lệnh) để người dùng có thể xác nhận anh ta muốn chấp nhận kết quả của hoạt động. Sau đó, người dùng có thể thực hiện GIAO DỊCH CAM KẾT để cam kết tất cả các công việc được thực hiện bởi thao tác sửa chữa. Nếu người dùng không muốn chấp nhận kết quả của hoạt động, anh ấy / cô ấy có thể thực hiện GIAO DỊCH ROLLBACK để hoàn tác các tác động của các hoạt động sửa chữa.

Để sửa lỗi, chúng tôi khuyên bạn nên khôi phục từ bản sao lưu. Hoạt động sửa chữa không xem xét bất kỳ ràng buộc nào có thể tồn tại trên hoặc giữa các bảng. Nếu bảng được chỉ định có liên quan đến một hoặc nhiều ràng buộc, chúng tôi khuyên bạn nên chạy DBCC CHECKCONSTRAINTS sau khi thao tác sửa chữa. Nếu bạn phải sử dụng REPAIR, hãy chạy DBCC CHECKDB mà không có tùy chọn sửa chữa để tìm mức độ sửa chữa để sử dụng. Nếu bạn sử dụng cấp REPAIR_ALLOW_DATA_LOSS, chúng tôi khuyên bạn nên sao lưu cơ sở dữ liệu trước khi chạy DBCC CHECKDB với tùy chọn này.

Vì vậy, nếu có bất kỳ ràng buộc nào như vậy, bạn cũng có thể xem xét ý tưởng khôi phục từ bản sao lưu hợp lệ. Trước đó, bạn phải chạy khôi phục xác minh để sao lưu, bạn đang cố gắng khôi phục để kiểm tra xem sao lưu có phù hợp hay không. Bạn cũng phải lưu ý rằng chỉ có khôi phục thành công mới có thể đảm bảo sao lưu phù hợp ở TẤT CẢ các định dạng

Cuối cùng, bạn phải kiểm tra các lỗi máy chủ SQL và trình xem sự kiện windows để tìm hiểu lý do tại sao sự không nhất quán xuất hiện ở vị trí đầu tiên. Rất nhiều thời gian phần cứng xấu là nguyên nhân.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.