Tôi có một quy trình chạy dài giữ mở giao dịch trong toàn bộ thời gian.Nhật ký giao dịch cho cơ sở dữ liệu đầy đủ
Tôi không kiểm soát cách thực hiện điều này.
Vì giao dịch được mở trong toàn bộ thời gian, khi nhật ký giao dịch đầy, SQL Server không thể tăng kích cỡ tệp nhật ký.
Vì vậy, quá trình không thành công với lỗi "The transaction log for database 'xxx' is full"
.
Tôi đã cố ngăn chặn điều này bằng cách tăng kích thước tệp nhật ký giao dịch trong thuộc tính cơ sở dữ liệu, nhưng tôi gặp lỗi tương tự.
Không chắc mình nên thử gì tiếp theo. Quá trình này diễn ra trong vài giờ nên không dễ chơi thử và lỗi.
Bất kỳ ý tưởng nào?
Nếu có ai quan tâm, quá trình này là một nhập tổ chức trong Microsoft Dynamics CRM 4.0.
Có rất nhiều không gian đĩa, chúng tôi có các bản ghi trong chế độ khai thác gỗ đơn giản và đã sao lưu các bản ghi trước khi đá ra khỏi quá trình này.
- = - = - = - = - CẬP NHẬT - = - = - = - = -
Cảm ơn tất cả các ý kiến cho đến nay. Sau đây là những gì khiến tôi tin rằng các bản ghi sẽ không phát triển do các giao dịch mở:
Tôi nhận được lỗi sau ...
Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception:
System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Vì vậy, theo lời khuyên mà tôi đã đi đến "log_reuse_wait_desc column in sys.databases
" và nó giữ giá trị "ACTIVE_TRANSACTION
".
Theo Microsoft: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx
Điều đó có nghĩa như sau:
Một giao dịch đang hoạt động (tất cả các mô hình phục hồi). • Giao dịch dài hạn có thể tồn tại khi bắt đầu sao lưu nhật ký. Trong trường hợp này, giải phóng không gian có thể yêu cầu một bản sao lưu nhật ký khác. Để biết thêm thông tin, hãy xem "Giao dịch hoạt động trong thời gian dài", sau này trong chủ đề này.
• Giao dịch được hoãn lại (SQL Server 2005 Enterprise Edition và các phiên bản mới hơn). Giao dịch hoãn lại là một giao dịch hoạt động hiệu quả mà tính năng rollback bị chặn do một số tài nguyên không có sẵn. Để biết thông tin về nguyên nhân của giao dịch hoãn lại và cách chuyển chúng ra khỏi trạng thái hoãn lại, hãy xem Giao dịch hoãn lại.
Tôi đã hiểu nhầm điều gì đó chưa?
- = - = - = - CẬP NHẬT 2 - = - = - = -
Chỉ cần khởi quá trình với kích thước tập tin đăng nhập ban đầu thiết lập để 30GB. Quá trình này sẽ mất vài giờ để hoàn thành.
- = - = - = - Chung kết CẬP NHẬT - = - = - = -
Vấn đề này đã thực sự gây ra bởi các tập tin log tiêu thụ tất cả các không gian đĩa có sẵn.Trong nỗ lực cuối cùng tôi giải phóng 120GB và nó vẫn sử dụng tất cả và cuối cùng thất bại.
Tôi đã không nhận ra điều này đã xảy ra trước đây bởi vì khi quá trình chạy qua đêm, nó đã quay trở lại thất bại. Lần này tôi đã có thể kiểm tra kích thước tệp nhật ký trước khi khôi phục.
Cảm ơn tất cả những gì bạn đã nhập.
lại "... và đã sao lưu nhật ký" .... nếu cơ sở dữ liệu ở chế độ Đơn giản, bạn sẽ không thể sao lưu nhật ký, sao lưu nhật ký không áp dụng cho chế độ đơn giản. Có đăng nhập hàng loạt không? – SqlACID
Tôi đã sao lưu toàn bộ DB và thu nhỏ nó khiến cho Nhật ký thu hẹp lại thành 1MB. Sau đó tôi tăng kích thước của tệp nhật ký lên 20GB ban đầu và bây giờ là 30 GB. – Jimbo