Tôi có thể khôi phục cơ sở dữ liệu SQL từ Chế độ chờ / Chỉ đọc mà không có tệp dự phòng không?


8

Có cách nào để khôi phục cơ sở dữ liệu SQL từ chế độ Chờ / Chỉ đọc nếu thiếu "tệp dự phòng" không?

(Tôi thấy một số tài liệu tham khảo gọi đây là tệp TUF trong kịch bản vận chuyển nhật ký, nhưng trong trường hợp của tôi, đó chỉ là khôi phục thủ công và tệp dự phòng có phần mở rộng BAK.)

Thực hiện một "RESTORE DATABASE foo VỚI RECOVERY" dẫn đến một lỗi nghiêm trọng:

During startup of warm standby database 'foo', its standby file
('path\filename.bak') was inaccessible to the RESTORE statement.
The operating system error was '5(Access is denied.)'. Diagnose the
operating system error, correct the problem, and retry startup.

Việc khôi phục đã được thực hiện cách đây một thời gian và không may là tệp dự phòng nằm trong thư mục sao lưu và đã bị xóa bởi thói quen dọn dẹp thư mục của chúng tôi. Không có bản sao của tập tin tồn tại trên bất kỳ phương tiện truyền thông khác. Các bản sao lưu ban đầu được sử dụng để khôi phục đến thời điểm này cũng đã mất từ ​​lâu.

May mắn thay, đây không phải là vấn đề lớn đối với chúng tôi (đó là khôi phục tạm thời), nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo hữu ích nào khác về câu hỏi này, ngoài "không xóa tệp đó".

Nếu nó xuất hiện, tôi cho rằng tôi có thể kịch bản ra toàn bộ cơ sở dữ liệu hoặc sử dụng SSIS để sao chép tất cả các đối tượng sang bộ chứa cơ sở dữ liệu mới, vì tôi có một bản sao db chỉ đọc trước mặt tôi.

Bất kỳ cách nào để khắc phục vấn đề này? Tôi chắc chắn không hy vọng rằng tôi có thể lật nó trở lại để "khôi phục" và tiếp tục thực hiện các lần khôi phục tiếp theo hoặc bất cứ điều gì, tôi chỉ muốn buộc nó vào chế độ trực tuyến bình thường ở trạng thái hiện tại để tôi có thể làm những thứ như thay đổi quyền, hoặc thay đổi chế độ khôi phục hoặc sao lưu toàn bộ mới hoặc một cái gì đó.

Câu trả lời:


7

Hóa ra nó có thể được thực hiện nếu bạn sử dụng CONTINUE_AFTER_ERROR

RESTORE DATABASE foo WITH RECOVERY, CONTINUE_AFTER_ERROR

Tôi vẫn nhận được một cảnh báo khi tôi thử nó nhưng sau đó đã làm CHECKDB và không nhận được lỗi nào.

RESTORE WITH CONTINUE_AFTER_ERROR was successful but some damage was encountered. Inconsistencies in the database are possible.
RESTORE DATABASE successfully processed 0 pages in 4.180 seconds (0.000 MB/sec).
Msg 3441, Level 17, State 1, Line 13
During startup of warm standby database 'foo' (database ID 46), its standby file ('C:\MSSQL\Backup\foo_standby') was inaccessible to the RESTORE statement. The operating system error was '2(The system cannot find the file specified.)'. Diagnose the operating system error, correct the problem, and retry startup.

Đưa ra cảnh báo Tôi không chắc chắn 100% nếu tôi sẽ thử nó trên cơ sở dữ liệu sản xuất nơi tôi không có bản sao lưu tốt. Cho rằng đó là một khôi phục tạm thời, nó có thể đáng để cho nó một shot.

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.