Dưới đây là một vài con đường tôi sẽ điều tra. Đừng làm tất cả những điều này (một số trong số chúng là các kỹ thuật khác nhau để thực hiện cùng một mục đích), nhưng đáng để xem xét:
1. Kiểm tra nhật ký lỗi SQL trực tiếp
Duyệt trực tiếp vào thư mục chứa các bản ghi lỗi SQL và tải gần đây nhất ERRORLOG
vào notepad để biết thêm chi tiết về lý do tại sao phiên bản SQL sẽ không bắt đầu. Có lẽ bạn sẽ thấy vấn đề không phải là cơ sở dữ liệu chủ.
2. Thử khởi động phiên bản ở chế độ một người dùng
Dưới đây là danh sách đầy đủ các tùy chọn khởi động cho máy chủ SQL , bao gồm -m
(chế độ người dùng đơn) và -f
(chế độ cấu hình tối thiểu). Các tùy chọn khác cho phép bạn chỉ định đường dẫn cho cơ sở dữ liệu chủ, nếu đó là vấn đề.
Nếu bạn có thể bắt đầu cá thể, hãy làm theo các bước trong bài viết MSDN mà bạn đã liên kết để khôi phục cơ sở dữ liệu chính hoặc hướng dẫn chi tiết này của Thomas LaRock .
Nếu một ứng dụng khác luôn lấy kết nối người dùng trước khi bạn có thể, trước tiên hãy vô hiệu hóa Tác nhân SQL để nó không bắt đầu. Thứ hai, xem các ý tưởng về câu hỏi này để sử dụng -m"Application Name"
tham số để chỉ định tên ứng dụng.
3. Khôi phục master
sang phiên bản khác và sao chép tệp của nó
Tôi chỉ tìm thấy một đề cập khác về kỹ thuật không có giấy tờ này, nhưng tôi đã sử dụng nó thành công vào cuối tuần vừa qua, vì vậy nó có thể đáng để thử.
Nếu bạn không thể khởi động phiên bản ở chế độ người dùng đơn, nhưng bạn có một phiên bản SQL khác đang chạy cùng bản phát hành và bản dựng chính xác , hãy thử khôi phục bản sao lưu cơ sở dữ liệu chính tốt được biết đến cuối cùng từ máy chủ đã chết của bạn sang phiên bản khác:
- Tất nhiên, khôi phục lại dưới tên khác (
master_please_god_let_this_work
), WITH MOVE
vì vậy bạn không ghi đè lên master
máy chủ tốt của mình
- Khôi phục
WITH NORECOVERY
. Không chắc chắn điều này là cần thiết, nhưng làm tôi cảm thấy tốt hơn khi tôi biết rằng máy chủ khác sẽ không thay đổi bất cứ điều gì trong bản gốc được khôi phục
- Đặt thành ngoại tuyến:
ALTER DATABASE [master_please_god_let_this_work] SET OFFLINE
- Sao chép các tập tin MDF và LDF được khôi phục từ máy chủ tốt vào máy chủ đã chết
- Đổi tên
master.mdf
và mastlog.ldf
các tệp khi cần thiết để thay thế các tệp chính xấu bằng các phiên bản được khôi phục của bạn
- Bắt chéo ngón tay của bạn và bắt đầu ví dụ
- Tùy chọn: thực hiện khôi phục mới chủ trên máy chủ được khôi phục. Không chắc chắn điều này là cần thiết, vì chúng tôi đã khá cẩn thận để không thay đổi
master
.
4. Xây dựng lại cơ sở dữ liệu hệ thống
Nếu bạn không có phiên bản khác chạy cùng phiên bản hoặc nếu bạn không thoải mái khi sử dụng quy trình không có giấy tờ được liệt kê trong # 3 hoặc nếu bạn không có bản sao lưu của master
( tại sao bạn không có bản sao lưu ?? ), bạn có thể xây dựng lại cơ sở dữ liệu hệ thống SQL từ đĩa cài đặt gốc :
Setup.exe /ACTION=REBUILDDATABASE /...
Khi hoàn thành, bạn có thể làm theo các bước được liên kết trước đó để khôi phục master
từ bản sao lưu tốt cuối cùng của mình. Bạn cũng sẽ cần khôi phục bản sao lưu gần đây msdb
để giữ tất cả các công việc, lịch trình công việc và lịch sử công việc.
5. Khôi phục tất cả các cơ sở dữ liệu USER về một phiên bản SQL mới (hoặc hiện có)
Nếu bạn đã có một phiên bản hiện có khác đang chạy (phiên bản SQL phù hợp, đủ dung lượng đĩa), tôi có thể sẽ bắt đầu khôi phục cơ sở dữ liệu từ các bản sao lưu gần đây nhất trong khi tôi đang làm việc với các bước khắc phục sự cố khác ở trên, chỉ trong trường hợp tôi cần chúng.
Nếu phiên bản mới (hoặc được cài đặt lại) của bạn có quyền truy cập vào cùng một đĩa, thì việc gắn chúng dưới dạng cơ sở dữ liệu mới sẽ nhanh hơn nhiều.
CREATE DATABASE foo
ON (FILENAME = 'D:\data\foo.mdf'),
(FILENAME = 'D:\data\foo_log.ldf')
FOR ATTACH;
6. Làm lại bất kỳ thay đổi nào đối với master
Khi bạn khôi phục thành công master
(thông qua bất kỳ kỹ thuật nào ở trên), bạn cần điều tra mọi thay đổi có thể đã bị mất, nếu chúng được thực hiện sau khi sao lưu bạn vừa khôi phục:
- Thay đổi bảo mật
- Cơ sở dữ liệu mới (các tệp sẽ vẫn còn trên đĩa, chỉ cần đính kèm chúng)
- Cài đặt toàn máy chủ
Không có cách kỳ diệu nào để tìm thấy những điều này, bạn sẽ phải quay lại đường dẫn tài liệu của công ty bạn để biết những thay đổi này, nếu bạn có.