Cách khôi phục nhiều bản sao lưu


7

Tôi đang sử dụng Nhiệm vụ theo lịch trình của ExpressMaint và Windows để tạo bản sao lưu khác biệt đầy đủ và hàng ngày của một số cơ sở dữ liệu MS SQL Server 2008 R2 Express

Đầy đủ hàng tuần

expressmaint -S (local)\SQLExpress -D ALL -T DB -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU WEEKS -BV 4 -V -C

Khác biệt hàng ngày

expressmain -S (local)\SQLExpress -D ALL -T DIF -R D:\Backup\Reports -RU WEEKS -RV 1 -B D:\Backup\Data -BU days -BV 7 -V -C

Khi tôi đến để khôi phục những thứ này đến một điểm nhất định, tôi phải khôi phục từng bản sao lưu riêng lẻ. Có cách nào để tôi có thể xâu chuỗi một loạt các bản sao lưu vào một khôi phục duy nhất sẽ được phát lại theo đúng thứ tự không?

Khi tôi thử điều này, tôi nhận được lỗi

Một ngoại lệ đã xảy ra trong khi thực hiện một câu lệnh hoặc lô Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)


THÔNG TIN THÊM:

Phương tiện được tải trên "C: \ Foo \ Bar_FullBackup_20110130_2346.bak" được định dạng để hỗ trợ 1 họ phương tiện, nhưng dự kiến ​​sẽ có 2 họ phương tiện theo thông số kỹ thuật của thiết bị dự phòng. RESTORE HeaderONLY đang chấm dứt bất thường. (Máy chủ Microsoft SQL, Lỗi: 3231)

Để được trợ giúp, hãy nhấp: http://go.microsoft.com/fwlink?ProdName=Microsoft+Query+Server&ProdVer=10.50.1600&EvtSrc=MSQueryServer&EvtID=3231&LinkId=20476

Biên tập

Tôi đang sử dụng hộp thoại khôi phục từ menu tác vụ khi bạn nhấp chuột phải vào cơ sở dữ liệu. Từ đó, tôi chọn "Khôi phục từ thiết bị" và Thêm tệp .bak tôi muốn khôi phục từ đó.

Nếu tôi chỉ thêm một tệp .bak, tôi ổn, nếu tôi thêm nhiều tệp, tôi nhận được lỗi ở trên.


Bạn có thể đưa ra một ví dụ về câu lệnh khôi phục bạn đang sử dụng không?
Eric Humphrey - lotahelp 2/211

@Eric đã thêm một chút chi tiết
Greg B

Câu trả lời:


10

Sử dụng SSMS, bạn không thể xâu chuỗi khôi phục các bản sao lưu trong một thao tác. Bạn sẽ phải làm nhiều phục hồi. Bạn sẽ muốn sử dụng T-SQL để có hiệu quả hơn.

--Restore the most recent full backup
RESTORE DATABASE <mydb>
FROM DISK = 'Path to full backup'
WITH NORECOVERY, STATS=10 --If only restoring the full, change to RECOVERY

--Restore the most recent diff backup
RESTORE DATABASE <mydb>
FROM DISK = 'Path to diff backup'
WITH RECOVERY, STATS=10

Thông tin thêm về RESTORE: http://msdn.microsoft.com/en-us/l Library / ms186858.aspx


Bạn có thể xâu chuỗi các loại sao lưu với nhau thông qua GUI trong SSMS. Bạn thêm từng tệp sao lưu cho cơ sở dữ liệu đã cho và nó sẽ xác minh các tệp và sau đó thực hiện khôi phục cho bạn. Nếu bạn sử dụng tập lệnh cho tính năng cửa sổ truy vấn mới, bạn sẽ thấy mã tương tự được bao gồm trong câu trả lời này.

6

- Xem lại bản sao lưu đầy đủ gần đây nhất

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to full backup>
WITH NO RECOVERY

- Xem lại bản sao lưu vi sai gần đây nhất

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to differential backup>
WITH NORECOVERY

- Đánh giá lại tất cả các bản sao lưu nhật ký giao dịch được thực hiện sau lần sao lưu chênh lệch gần đây nhất

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to first transactional log backup>
WITH NORECOVERY

. . . . .

RESTORE DATABASE <DATABASE NAME>
FROM DISK = <Path to last transactional log backup>
WITH RECOVERY 

4

Bạn đang cố gắng khôi phục từ một thiết bị, nhưng điều bạn thực sự muốn làm là chỉ định tùy chọn 'Từ cơ sở dữ liệu' trong SSMS. GUI sẽ hiển thị các tệp sao lưu có sẵn và bạn có thể chọn các tệp đầy đủ và khác biệt.


Làm thế nào để nó hoạt động khi tôi khôi phục trên một máy chủ khác? Tôi có cần cho cơ sở dữ liệu biết tập tin nào được coi là bản sao lưu không?
Greg B

1
Bạn sẽ không thể sử dụng SSMS theo cách đó, tôi không tin. Bạn sẽ cần phải viết ra các lệnh khôi phục như Eric đã đề xuất ở trên.
SQLRockstar
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.