Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Khôi phục nhật ký giao dịch đầy đủ trong cơ sơ dữ liệu SQL Server

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

GIỚI THIỆU
Bài viết này mô tả các bước mà bạn phải thực hiện khi nhật ký giao dịch quá lớn. Nhật ký giao dịch đầy đủ có thể khiến cơ sở dữ liệu Microsoft SQL Server không sử dụng được. Bài viết này mô tả cách cắt bớt và thu hẹp nhật ký giao dịch cũng như cách ngăn nhật ký giao dịch tăng một cách đột ngột.

THÔNG TIN THÊM

Giảm kích thước nhật ký giao dịch

Để khôi phục từ trường hợp nhật ký giao dịch đầy, bạn phải giảm kích thước của nhật ký giao dịch. Để thực hiện việc này, bạn phải cắt bớt các giao dịch không hoạt động trong nhật ký giao dịch và thu hẹp tệp nhật ký giao dịch.

Chú ý Nhật ký giao dịch rất quan trọng để duy trì tính toàn vẹn giao dịch của cơ sở dữ liệu. Do đó, bạn không được xoá tệp nhật ký giao dịch kể cả sau khi đã sao lưu cơ sở dữ liệu của mình và nhật ký giao dịch.


Để biết thêm thông tin về việc giảm kích thước nhật ký giao dịch, hãy ghé thăm Website sau của Microsoft:

Cắt bớt các giao dịch không hoạt động trong nhật ký giao dịch

Khi nhật ký giao dịch đầy, bạn phải sao lưu ngay tệp nhật ký giao dịch. Khi bản sao tệp nhật ký giao dịch của bạn đã được tạo, SQL Server tự động cắt bớt phần nhật ký giao dịch không hoạt động. Phần tệp nhật ký giao dịch không hoạt động chứa các giao dịch đã hoàn thành và do đó, tệp nhật ký giao dịch không còn được SQL Server sử dụng trong quá trình khôi phục. SQL Server tái sử dụng không gian được cắt bớt không còn hoạt động trong nhật ký giao dịch thay vì cho phép nhật ký giao dịch tiếp tục tăng và sử dụng nhiều không gian hơn.

Để biết thêm thông tin về các sự cố mà bạn phải xem xét khi sao lưu nhật ký giao dịch và khi khôi phục bản sao nhật ký giao dịch, hãy truy nhập các chủ đề sau trong Sách dành cho SQL Server Trực tuyến:
  • Sao lưu nhật ký giao dịch
  • Sao lưu và khôi phục nhật ký giao dịch
Bạn cũng có thể xoá các giao dịch không hoạt động khỏi tệp nhật ký giao dịch bằng cách sử dụng phương pháp Cắt bớt. Để biết thêm thông tin về cách cắt bớt nhật ký giao dịch, xem chủ đề "Cắt bớt nhật ký giao dịch" trong Sách dành cho SQL Server Trực tuyến.

Quan trọng Sau khi cắt bớt thủ công các tệp nhật ký giao dịch, bạn phải tạo một bản sao cơ sở dữ liệu đầy đủ trước khi tạo bản sao nhật ký giao dịch.

Để biết thêm thông tin về các sự cố có thể xảy ra khi bạn cắt bớt tệp nhật ký giao dịch, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
62866 Lý do nhật ký giao dịch SQL không được cắt bớt

Thu hẹp tệp nhật ký giao dịch

Thao tác sao lưu hay phương pháp Cắt bớt không làm giảm kích thước tệp nhật ký. Để giảm kích thước tệp nhật ký giao dịch, bạn phải thu hẹp tệp nhật ký giao dịch. Để thu hẹp tệp nhật ký giao dịch về kích thước được yêu cầu và để xoá các trang không sử dụng, bạn phải sử dụng thao tác DBCC SHRINKFILE. Câu lệnh DBCC SHRINKFILE Transact-SQL chỉ có thể thu hẹp phần không hoạt động bên trong tệp nhật ký.

Chú ý Câu lệnh DBCC SHRINKFILE Transact-SQL không thể tự cắt bớt nhật ký và thu hẹp không gian đã sử dụng bên trong tệp nhật ký trên.

Để biết thêm thông tin về thu hẹp tệp nhật ký giao dịch, hãy xem các chủ đề sau trong Sách dành cho SQL Server Trực tuyến:
  • Thu hẹp tệp giao dịch
  • DBCC SHRINKFILE
Để biết thêm thông tin về cách thu hẹp tệp giao dịch trong SQL Server 2000, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
272318 Thu hẹp tệp giao dịch trong SQL Server 2000 bằng DBCC SHRINKFILE
Để biết thêm thông tin về các sự cố có thể xảy ra khi bạn thu hẹp tệp nhật ký giao dịch, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
814574 PRB: Thông báo lỗi: "Không thể thu hẹp tệp nhật ký ..." xuất hiện khi bạn thu hẹp tệp nhật ký giao dịch (Trang này có thể có bằng tiếng Anh)
324432 PRB: Lệnh DBCC SHRINKFILE và SHRINKDATABASE có thể không hoạt động do văn bản, ntext hoặc các cột hình ảnh được điền rải rác

Ngăn tệp nhật ký giao dịch tăng một cách đột ngột

Để ngăn tệp nhật ký giao dịch tăng một cách đột ngột, hãy xem xét một trong những phương pháp sau:
  • Đặt kích thước tệp nhật ký giao dịch về giá trị lớn để tránh tự động mở rộng tệp nhật ký giao dịch.
  • Đặt cấu hình tự động mở rộng tệp nhật ký giao dịch bằng cách sử dụng các đơn vị bộ nhớ thay vì phần trăm sau khi bạn đánh giá kỹ kích thước bộ nhớ tối ưu.

    Để biết thêm thông tin về các sự cố cần xem xét khi đặt cấu hình tuỳ chọn tự động tăng, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
    315512 Xem xét cấu hình tự động tăng và tự động thu hẹp
  • Thay đổi mô hình khôi phục. Nếu xảy ra thảm hoạ hoặc hỏng dữ liệu, bạn phải khôi phục cơ sở dữ liệu của mình để duy trì sự nhất quán và tính toàn vẹn giao dịch của cơ sở dữ liệu. Tuỳ thuộc vào mức nghiêm trọng của dữ liệu trong cơ sở dữ liệu của bạn, bạn có thể sử dụng một trong những mô hình khôi phục sau để xác định việc sao lưu dữ liệu của bạn như thế nào và những điều khiến bạn bị mất dữ liệu:
    • Mô hình khôi phục đơn giản
    • Mô hình khôi phục đầy đủ
    • Mô hình khôi phục được ghi hàng loạt
    Bằng cách sử dụng mô hình khôi phục đơn giản, bạn có thể khôi phục cơ sở dữ liệu của mình về bản sao cơ sỡ dữ liệu gần đây nhất. Bằng cách sử dụng mô hình khôi phục đầy đủ hay mô hình khôi phục được ghi hàng loạt, bạn có thể khôi phục cơ sở dữ liệu của mình về điểm xảy ra lỗi bằng cách khôi phục cơ sở dữ liệu của bạn bằng các bản sao tệp nhật ký giao dịch.

    Theo mặc định, trong SQL Server 2000 và SQL Server 2005, mô hình khôi phục cho cơ sở dữ liệu SQL Server được đặt thành Chế độ khôi phục đầy đủ. Với chế độ khôi phục đầy đủ, việc sao lưu thường xuyên nhật ký giao dịch được sử dụng để ngăn kích thước tệp nhật ký giao dịch tăng quá lớn so với kích thước cơ sở dữ liệu. Tuy nhiên, nếu việc sao lưu thường xuyên nhật ký giao dịch không được thực hiện, tệp nhật ký giao dịch tăng lên để lấp đầy đĩa và bạn không thể thực hiện bất kỳ thao tác sửa đổi dữ liệu nào trên cơ sở dữ liệu SQL Server.

    Bạn có thể thay đổi chế độ khôi phục từ đầy đủ về đơn giản nếu bạn không muốn sử dụng tệp nhật ký giao dịch trong thao tác khắc phục thảm hoạ.
  • Sao lưu tệp nhật ký giao dịch thường xuyên để xoá các giao dịch không hoạt động trong nhật ký giao dịch của bạn.
  • Thiết kế giao dịch nhỏ.
  • Đảm bảo rằng không có giao dịch không được cam kết nào tiếp tục chạy trong thời gian vô hạn.
  • Lên lịch tuỳ chọn Cập nhật Thống kê để thực hiện hàng ngày.
  • Để dồn liền các chỉ mục để tăng hiệu suất mức tải, sử dụng câu lệnh DBCC INDEXDEFRAG Transact-SQL thay vì câu lệnh DBCC DBREINDEX Transact-SQL. Nếu bạn chạy câu lệnh DBCC DBREINDEX, nhật ký giao dịch có thể mở rộng đáng kể khi cơ sở dữ liệu SQL Server của bạn đang ở Chế độ khôi phục đầy đủ. Ngoài ra, câu lệnh DBCC INDEXDEGRAG không giữ khoá trong một thời gian dài, không giống như câu lệnh DBCC DBREINDEX.

    Để biết thêm thông tin về dồn liền các chỉ mục trong SQL Server 2000, hãy xem website sau của Microsoft: Nếu bạn phải chạy tuyên bố DBCC DBREINDEX như một việc mà là một phần của kế hoạch bảo trì cơ sở dữ liệu, bạn phải chia công việc đó thành nhiều việc. Ngoài ra, bạn phải thực hiện sao lưu thường xuyên đối với nhật ký giao dịch trong quá trình thực hiện các công việc.

Thông tin thêm về tệp nhật ký giao dịch

Trong SQL Server 2000 và SQL Server 2005, mỗi cơ sở dữ liệu chứa ít nhất một tệp dữ liệu và một tệp nhật ký giao dịch. SQL Server lưu trữ dữ liệu thực trong tệp dữ liệu. Tệp nhật ký giao dịch lưu trữ dữ liệu của tất cả các sửa đổi mà bạn thực hiện trên cơ sở dữ liệu SQL Server và chi tiết của các giao dịch thực hiện từng sửa đổi. Vì tính toàn vẹn giao dịch được xem là đặc điểm nền tảng và cố hữu của SQL Server nên không được tắt tính năng ghi lại chi tiết giao dịch trong SQL Server.

Tệp nhật ký giao dịch được chia hợp lý thành các phân đoạn nhỏ hơn, được gọi là tệp nhật ký ảo. Trong SQL Server 2000, bạn có thể đặt cấu hình tệp nhật ký giao dịch để mở rộng nếu cần. Tính năng mở rộng tệp nhật ký giao dịch có thể được điều chỉnh bởi người dùng hoặc có thể được đặt cấu hình để sử dụng tất cả dung lượng đĩa trống. Bất cứ sửa đổi nào mà SQL Server thực hiện đối với kích thước của tệp nhật ký giao dịch như cắt bớt tệp nhật ký giao dịch hoặc tăng tệp nhật ký giao dịch đều được thực hiện trong các đơn vị của tệp nhật ký ảo.

Nếu tệp nhật ký giao dịch tương ứng với cơ sở dữ liệu SQL Server đã đầy và nếu bạn đã đặt tuỳ chọn cho tệp nhật ký giao dịch để tăng tự động thì tệp nhật ký giao dịch tăng trong các đơn vị của tệp nhật ký ảo. Đôi khi, tệp nhật ký giao dịch có thể quá lớn và bạn có thể chạy hết dung lượng đĩa. Khi tệp nhật ký giao dịch tăng cho tới khi sử dụng tất cả dung lượng đĩa trống và không thể mở rộng thêm, bạn không thể thực hiện bất kỳ thao tác sửa đổi dữ liệu nào trên cơ sở dữ liệu của mình. Ngoài ra, SQL Server có thể đánh dấu cơ sở dữ liệu của bạn là khả nghi vì thiếu dung lượng để mở rộng nhật ký giao dịch.

Để biết thêm thông tin về các tình huống có thể khiến tệp nhật ký giao dịch tăng đột ngột, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
317375 Tệp nhật ký giao dịch tăng đột ngột hoặc đầy trên SQL Server

THAM KHẢO
Để biết thêm thông tin về cách khắc phục sự cố yêu cầu dung lượng đĩa bổ sung trong quá trình khôi phục, hãy xem chủ đề "Dung lượng đĩa không đủ" trong Sách dành cho SQL Server Trực tuyến. Để biết thêm thông tin về cấu trúc tệp nhật ký giao dịch, hãy xem các chủ đề sau trong Sách dành cho SQL Server Trực tuyến:
  • Cấu trúc tệp nhật ký
  • Cấu trúc logic của tệp nhật ký
  • Cấu trúc vật lý của tệp nhật ký
Để biết thêm thông tin về mô hình khôi phục trong SQL Server 2000, hãy xem các chủ đề sau trong Sách dành cho SQL Server Trực tuyến:
  • Chọn mô hình khôi phục
  • Khôi phục đơn giản
  • Khôi phục đầy đủ
  • Khôi phục được ghi hàng loạt
  • Chuyển mô hình khôi phục

TLOG T-log filesize becomes full run out of space fills
Thuộc tính

ID Bài viết: 873235 - Xem lại Lần cuối: 02/29/2012 14:50:00 - Bản sửa đổi: 3.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbsqlsetup kbdiskmemory kbdisasterrec kbhowto kbconfig kbinfo kbcip KB873235
Phản hồi