Câu trả lời:
Câu trả lời là không, đối với bất kỳ phần mềm sao lưu nào đang được sử dụng.
Một bản sao lưu là một hoạt động vật lý, không phải là một hoạt động hợp lý. Nó đọc tất cả các phạm vi có chứa các trang được phân bổ (nghĩa là mặc dù chỉ một trang duy nhất trong phạm vi 8 trang được phân bổ, nó sẽ sao lưu toàn bộ phạm vi 64K) và thực hiện theo thứ tự vật lý.
Khôi phục là một hoạt động vật lý, không phải là một hoạt động hợp lý. Nó đặt các phạm vi ở vị trí hợp pháp của chúng trong các tệp dữ liệu.
Xây dựng lại một chỉ mục (hoặc bất cứ thứ gì giống như vậy) là một hoạt động hợp lý, phải được ghi lại. Sao lưu và khôi phục thao tác trực tiếp các tệp dữ liệu mà không cần thông qua nhóm bộ đệm, đó là một lý do tại sao điều này không thể được thực hiện. Một lý do khác không thể thực hiện được là sao lưu và khôi phục không hiểu gì về những gì có trong dữ liệu được sao lưu.
Tuy nhiên, lý do chính điều này không thể được thực hiện là do các trang di chuyển xung quanh trong quá trình khôi phục sẽ phá vỡ các con trỏ của cây b. Nếu trang A trỏ đến trang B, nhưng trang A được di chuyển theo quy trình khôi phục, trang B được cập nhật như thế nào để trỏ đến trang A? Nếu nó được cập nhật ngay lập tức, thì nó có thể bị ghi đè bởi phần còn lại của quá trình khôi phục. Nếu nó bị hoãn cập nhật, điều gì xảy ra nếu quá trình khôi phục khôi phục một số nhật ký giao dịch đã xóa trang A hoặc trang B? Nó chỉ đơn giản là không thể được thực hiện.
Dòng dưới cùng - sao lưu và khôi phục là các hoạt động vật lý không bao giờ thay đổi dữ liệu.
Hi vọng điêu nay co ich!
PS Mặc dù nó không trực tiếp giải quyết câu hỏi này, hãy xem bài viết tôi đã viết cho Tạp chí TechNet tháng 7, giải thích cách thức các bản sao lưu khác nhau hoạt động trong nội bộ: Hiểu về Sao lưu SQL Server . Tạp chí tháng 9 sẽ có phần tiếp theo trong loạt bài về sự hiểu biết khôi phục.
Một bản sao lưu SQL gốc chỉ là một bãi chứa từng trang của các tệp sao lưu, vì vậy câu trả lời là "không". Một bản sao lưu Quest lightpeed có thể sử dụng một số loại thuật toán nén nén, nhưng nó vẫn không "xây dựng lại" các tệp dữ liệu hoặc chỉ mục, sẽ tốn một lượng thời gian lớn trên cơ sở dữ liệu lớn.
Sao lưu được thực hiện thường xuyên và rất thường xuyên (tôi hy vọng). Vì vậy, các nhà thiết kế đã đảm bảo sao lưu nhanh nhất có thể. I / O nhanh nhất là gì? Tuần tự. Bạn đọc các khối từ đĩa theo thứ tự vật lý chính xác, bạn có hiệu suất tốt nhất.
Tại sao trên cơ sở dữ liệu nên thực hiện thao tác I / O ngẫu nhiên cồng kềnh mỗi đêm , làm hỏng các đầu của đĩa ở khắp mọi nơi? Sự khác biệt sẽ là khoảng hai bậc độ lớn. Không có khả năng đạt được trong việc này.
Hừm. BradC, bạn đã từng làm việc với Firebird / Interbase trước đây - nơi tiện ích sao lưu / khôi phục / API chính giống với "Sao chép cơ sở dữ liệu ..." của SSMS / EM? Nếu vậy, hãy biết rằng MS SQL Server KHÔNG thích nó.
SQLServer Backup là một bãi chứa cơ sở dữ liệu được khôi phục "AS-IS" - vì vậy nó giống như một lối tắt trực tuyến dễ hiểu hơn cho hoạt động "tách bản sao-reattach ở nơi khác". Cơ sở dữ liệu được khôi phục gần như là một bản sao chính xác của tệp cơ sở dữ liệu gốc (gần như vì bạn có thể thay đổi vị trí của các tệp cơ sở dữ liệu của cơ sở dữ liệu được khôi phục) ...