2012-01-04 37 views
5

Trong SQL Server 2008 có cách nào để tắt nhật ký giao dịch hoặc tệp nhật ký rõ ràng không?Cách tắt Nhật ký giao dịch trong SQL Server 2008

Khi tôi thực hiện một truy vấn trong dự án của tôi (rất lớn về mặt giao dịch) vào thời điểm đó kích thước của tệp nhật ký này sẽ tăng lên (2 đến 3 GB).

Vui lòng đề xuất cho tôi một số tùy chọn tốt.

+1

Câu hỏi của bạn đã được hỏi và trả lời trên SO. đây là liên kết http://stackoverflow.com/questions/996403/disable-transaction-log – GuZzie

+0

@GuZzie yeah nhưng liên kết chỉ dành cho mô hình khôi phục - và OP cũng đã yêu cầu xóa nó .....do đó, không chỉ cần đặt các liên kết chưa thực hiện đầy đủ. –

+1

@RoyiNamir Câu hỏi đã được hỏi 2 năm trước và vẫn chưa được giải tỏa? vẫn có cùng độ phân giải trong tình huống đó nên trả lời câu hỏi của Arun. Xin lỗi vì đã giúp đỡ lol – GuZzie

Trả lời

3

Bạn có thể thu nhỏ nó

DECLARE @sql NVARCHAR(MAX) = '' 
SELECT @sql = @sql + N'DBCC SHRINKFILE('+CAST(file_id AS NVARCHAR)+N', 0);' 
FROM sys.database_files 
WHERE type = 1 

EXEC(@sql) 

NHƯNG nó chỉ hoạt động với mô hình phục hồi đơn giản, thay vào đó bạn phải sao lưu các bản ghi lên và thu nhỏ nó sau đó

Bạn không thể thả tệp nhật ký ở tất cả ngay cả khi cơ sở dữ liệu của bạn ở chế độ chỉ đọc.

cố gắng thiết kế lại và xem xét cách tiếp cận của bạn khi xử lý DB của máy chủ sql. Nó không phải là lựa chọn đúng hoặc thực hành tốt nhất để thu nhỏ các tập tin - đặc biệt là trên cơ sở thường xuyên!

+0

cảm ơn cho bạn nỗ lực, là nó đúng tùy chọn để tạo ra công việc cho điều này vì vậy tại khoảng thời gian cụ thể nó sẽ thực hiện và thu nhỏ tập tin đó? –

+0

yep - chỉ trong trường hợp của bạn có thể được, nhưng cố gắng thiết kế lại và xem xét cách tiếp cận của bạn khi giao dịch với DB của máy chủ sql. Nó không phải là lựa chọn đúng hoặc thực hành tốt nhất để thu nhỏ các tập tin - đặc biệt là trên cơ sở thường xuyên! –

+0

Điều này làm việc với phục hồi đầy đủ nhưng nó phá vỡ chuỗi sao lưu đăng nhập của bạn. Bạn cần một bản sao lưu đầy đủ để đặt lại chuỗi sao lưu nhật ký. Đây không phải là câu trả lời, thực sự. Nó chỉ sửa chữa một triệu chứng và tạo thêm các vấn đề. Tôi sẽ không downvote vì bạn có đủ điều kiện thu nhỏ. Câu hỏi đặt ra là mặc dù – gbn

0

thay đổi mô hình phục hồi để: simple

ALTER DATABASE myDB SET RECOVERY SIMPLE 

và chạy

DBCC SHRINKFILE (MyLog, 1); // to 1 MB 

Nhưng từ nơi nào bạn có được tên đăng nhập?

sp_helpdb MyDb 
+3

và sau đó nó lại phát triển, gây ra các phân đoạn vật lý và các vấn đề VLF. – gbn

+0

@gbn lệnh không có gì cả. Ive xây dựng một công cụ băm có một bak - khôi phục nó, dữ liệu Hasha và tạo bak.Now mới, cắt ngắn tệp nhật ký, đã giúp tôi rất nhiều. –

+0

Lệnh này dành cho các tập quán cụ thể. Tôi biết những gì bạn đã làm: bạn hỏi trên dba.se. Nhưng điều đó không có nghĩa là nó phù hợp để sử dụng adhoc. Và -1 – gbn

8

Bạn không thể vô hiệu hóa các bản ghi giao dịch trong SQL Server. Không đời nào.

Bạn có thể chuyển sang mô hình phục hồi đơn giản

ALTER DATABASE YourDatabase SET RECOVERY SIMPLE 

đó sẽ đăng nhập ít hơn - nhưng nhật ký giao dịch là như vậy, khái niệm cốt lõi cơ bản trong SQL Server, bạn có thể không chỉ cần bật mà tắt.

2

Bạn không thể tắt nhật ký giao dịch.

Nếu nhật ký của bạn cần lớn hơn 3 GB, thì hãy làm như vậy. Nếu bạn co lại nó, nó sẽ lại phát triển và gây ra các vấn đề khác.

Nếu đó là một off, bạn có thể giảm thiểu sự phát triển của

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