Khôi phục SQL từ tệp .bak với NOINIT


7

Điều này hy vọng sẽ là một câu hỏi hay và nhanh chóng cho một ai đó ngoài kia. Nó tiếp tục từ câu hỏi trước của tôi .

Tôi có một tệp .BAK mà tôi đang cố khôi phục. .BAK đã được tạo với NOINITđối số, để thử và lưu phiên bản trước đó và do đó, dữ liệu mới hơn được nối thêm (theo tôi hiểu). Tôi đã tự hỏi nếu điều này có nghĩa là - khi khôi phục - khôi phục sẽ cố gắng sử dụng một phiên bản cũ của bản sao lưu?

Tức là tôi đã sao lưu DB, thêm các bảng mới vào nó, thực hiện sao lưu đầy đủ khác và bỏ các bảng đã thêm. Khi tôi cố gắng khôi phục, tôi không nhận được các bảng 'mới', có phải vì khôi phục đang tìm phiên bản của cơ sở dữ liệu trong .BAK được tạo trước 'bảng mới' không? Nếu vậy, làm thế nào tôi có thể chỉ định sử dụng dữ liệu mới nhất?

EDIT: Xin lỗi vì không nêu rõ sớm hơn, đây là sử dụng cơ sở dữ liệu SQL Server


Bạn có thể muốn đề cập đến cơ sở dữ liệu nào bạn đang sử dụng. Oracle? MySQL? Máy chủ SQL? PostgreSQL? Thứ gì khác?

Câu trả lời của tôi giả định SQL Server. Bạn có thể xác nhận?
Thomas Stringer

Câu trả lời:


10

Đó là bởi vì không chỉ định FILEtham số của RESTORE DATABASE, nó được mặc định là 1, đây sẽ là bản sao lưu đầu tiên được đặt trên phương tiện đó. Xem phần trên trang này của Chỉ định bộ sao lưu .

Thay vì:

restore database YourDb
from disk = 'C:\yourpath\backupfile.bak';
go

Bạn sẽ muốn làm:

restore database YourDb
from disk = 'C:\yourpath\backupfile.bak'
with file = <n>;
go

Số Nbộ sao lưu trong phương tiện truyền thông ở đâu. Ncó thể thu được từ việc chạy RESTORE HEADERONLYtrên phương tiện truyền thông. Cột bạn sẽ quan tâm là Positionsử dụng với FILEtùy chọn.


Cảm ơn nhiều! Làm việc hoàn hảo. Bạn đã đúng khi cho rằng tôi đang sử dụng SQL, xin lỗi vì đã bỏ qua câu hỏi đó. Chỉ một câu hỏi cuối cùng (ít nhất là bây giờ), tôi có thể truy vấn kết quả của chức năng tiêu đề khôi phục để có được vị trí tối đa tự động không?
cprlkleg

Có, bạn có thể làm điều đó nhưng nó sẽ yêu cầu một số SQL động và bảng tạm thời. Không quá khó, nếu bạn muốn một số mã cho tôi biết.
Thomas Stringer
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.