2009-06-08 38 views
7

Tôi thường sử dụng các giao dịch hoàn toàn rõ ràng trong các chương trình lưu trữ của tôi (BEGIN TRANSACTION .... COMMIT). Tôi chỉ chạy qua một cái cũ mà thay vào đó sử dụng "CHECKPOINT" tại một số nơi trong mã.CHECKPOINT có hoạt động giống như COMMIT trong TSQL không?

Điều này sẽ không làm điều tương tự, đúng không ?? Ngay cả khi cơ sở dữ liệu ở chế độ đơn giản, toàn bộ điều sẽ vẫn chạy như một giao dịch lớn, ngay cả với một loạt các CHECKPOINTS bị mắc kẹt ở giữa?

Trả lời

7

số

CHECKPOINT là khác nhau và độc lập để cam/rollback.

Bài viết này thể hiện "SQL Server 2000 I/O Basics" (vẫn Ok cho SQL Server 2005 v.v.).

  • Bạn có thể trạm kiểm soát và ghi vào đĩa nhưng sau đó rollback

  • Các BEGIN/COMMIT là không có gì để làm với mô hình phục hồi (đầy đủ, đơn giản, số lượng lớn đăng nhập). TXN phải hoàn thành hoặc không thành công.

  • Trong trường hợp mất điện, dữ liệu có thể trên đĩa vì CHECKPOINT nhưng không được cam kết sẽ được khôi phục như một phần của khởi động cơ sở dữ liệu.

Trong những ngày cũ, nó được sử dụng để try and "empty" the log of committed entries cho mô hình khôi phục đơn giản. CHECKPOINT đã loại bỏ chúng. Đối với mô hình khôi phục FULL, bạn cần LOG BACKUP.

Các vấn đề liên quan