Gần đây khi tôi gặp kịch bản để khôi phục cơ sở dữ liệu, tôi đã nghi ngờ tại sao chúng ta phải sử dụng " FILE = 1 "? Chúng ta không thể khôi phục cơ sở dữ liệu mà không có tuyên bố đó sao!? Về cơ bản, nó được sử dụng để làm gì?
Gần đây khi tôi gặp kịch bản để khôi phục cơ sở dữ liệu, tôi đã nghi ngờ tại sao chúng ta phải sử dụng " FILE = 1 "? Chúng ta không thể khôi phục cơ sở dữ liệu mà không có tuyên bố đó sao!? Về cơ bản, nó được sử dụng để làm gì?
Câu trả lời:
Bạn được phép lưu nhiều hơn một bản sao lưu trong một tệp sao lưu (tức là thiết bị). Các FILE
khoản cho phép bạn truy cập vào một hoạt động sao lưu đặc biệt khi có nhiều để lựa chọn trong các .bak
tập tin.
Để biết thêm thông tin về các tùy chọn khác nhau của lệnh RESTORE , vui lòng xem tài liệu MSDN sau đây cho các đối số RESTORE .
Nếu bạn xem phần Tùy chọn bộ sao lưu , bạn sẽ tìm thấy:
TẬP_TIN = { backup_set_file_number | @ backup_set_file_number }
Xác định bộ sao lưu sẽ được khôi phục. Ví dụ: backup_set_file_number của 1 chỉ ra bộ sao lưu đầu tiên trên phương tiện sao lưu và backup_set_file_number của 2 chỉ ra bộ sao lưu thứ hai. Bạn có thể có được backup_set_file_number của một bản sao lưu bằng cách sử dụng câu lệnh RESTORE HEADERONLY.
Khi không được chỉ định, mặc định là 1, ngoại trừ RESTORE CHÍNH HÃNG trong trường hợp tất cả các bộ sao lưu trong bộ phương tiện được xử lý. Để biết thêm thông tin, hãy xem "Chỉ định bộ sao lưu", sau trong chủ đề này.
Quan trọng
Tùy chọn FILE này không liên quan đến tùy chọn FILE để chỉ định tệp cơ sở dữ liệu, FILE = { logic_file_name_in_backup | @ logic_file_name_in_backup_var }.
Vâng, bạn sẽ có thể để khôi phục lại mà không có FILE = 1
như 1
là anyway mặc định. Và nếu bạn chỉ có một bản sao lưu duy nhất được thiết lập trong một tệp sao lưu, thì nó không gây ra vấn đề gì.
Một ví dụ để giúp minh họa khi bạn sẽ sử dụng FILE
tùy chọn như sau, đó là ví dụ B từ trang MSDN của lệnh RESTORE (được liên kết ở trên). Nó cho thấy thực hiện hai khôi phục từ một tệp sao lưu duy nhất: đầu tiên RESTORE
là sao lưu FULL và thứ hai RESTORE
là sao lưu DIFFerential.
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;