2009-05-06 29 views
19

Vì vậy, tôi đã bỏ qua để làm bất kỳ bản sao lưu của cơ sở dữ liệu fogbugz của tôi, và bây giờ các tập tin lmp fogbugz là hơn 2 và nửa hợp đồng biểu diễn. Thats được xây dựng trong sáu tháng, chúng tôi đã sử dụng fogbugz.Làm cách nào để giảm kích thước tệp nhật ký máy chủ sql của tôi?

Tôi đã sao lưu cơ sở dữ liệu, sau đó tôi sao lưu và cắt bớt nhật ký giao dịch, nhưng nhật ký giao dịch vẫn là 2 và một nửa biểu diễn. Tôi đã làm một thu nhỏ trên tập tin đăng nhập và vẫn còn 2 và một nửa biểu diễn của nó. Không có gì tôi làm dường như thu nhỏ kích thước tập tin.

Có cách nào để khắc phục sự cố không? Hoặc là cách duy nhất trở lại vào thời điểm này để tách cơ sở dữ liệu, xóa tệp nhật ký và sau đó gắn lại với một tệp mới?

+0

xem [câu trả lời này] (http: // stackoverflow.com/questions/40402/what-is-the-command-to-truncate-a-sql-server-log-file/40420 # 40420) về một câu hỏi tương tự –

Trả lời

22

Chào mừng bạn đến với thế giới tiện lợi về quản lý nhật ký SQL Server.

SOMETHING là sai, mặc dù tôi không nghĩ rằng bất kỳ ai cũng có thể cho bạn biết nhiều hơn thế mà không có một số thông tin bổ sung. Ví dụ, có cơ sở dữ liệu này từng được sử dụng để sao chép SQL Server giao dịch? Điều này có thể gây ra các vấn đề như thế này nếu một giao dịch không được nhân rộng với người đăng ký.

Trong thời gian chuyển tiếp, điều này ít nhất sẽ cho phép bạn để giết các log file:

  1. Thực hiện một sao lưu đầy đủ của cơ sở dữ liệu của bạn. Đừng bỏ qua điều này. Có thật không.
  2. Thay đổi phương pháp sao lưu cơ sở dữ liệu của bạn để "Simple"
  3. mở một cửa sổ truy vấn và nhập "trạm kiểm soát" và thực hiện
  4. Thực hiện một sao lưu cơ sở dữ liệu
  5. Thay đổi phương pháp sao lưu cơ sở dữ liệu của bạn trở lại " Đầy đủ "(hoặc bất cứ điều gì, nếu nó chưa được đơn giản)
  6. Thực hiện sao lưu toàn bộ cuối cùng của cơ sở dữ liệu.

Bây giờ bạn có thể thu nhỏ các tệp (nếu thực hiện sao lưu không làm điều đó cho bạn).

Chúc may mắn!

+0

Vâng! Đó là khá fickle thực sự. –

+3

kỹ thuật này không được khuyến nghị - http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-proper-transaction-log-size-management.aspx –

+1

... đó là lý do tại sao tôi nói rằng nó có thể thực hiện những gì anh ta cần trong INTERIM, cho đến khi anh ta tìm ra những gì đang ngăn cản các bản ghi của mình bị cắt ngắn. –

3
  1. Đảm bảo chế độ sao lưu của cơ sở dữ liệu được đặt thành Đơn giản (xem here để biết tổng quan về các chế độ khác nhau). Điều này sẽ tránh SQL Server chờ sao lưu nhật ký giao dịch trước khi sử dụng lại không gian.

  2. Sử dụng dbcc shrinkfile hoặc Management Studio để thu nhỏ tệp nhật ký.

BướC# 2 sẽ không làm gì cho đến khi chế độ sao lưu được đặt.

+1

Tôi làm cách nào để sử dụng các tệp thu nhỏ dbcc trong Management Studio? Có khác gì so với việc chọn Task-> Shrink-> Files không? Bởi vì tôi đã làm điều đó và tập tin không nhận được bất kỳ nhỏ hơn. Ngoài ra, tôi có thể dễ dàng thiết lập fogbugz đơn giản và chỉ giải quyết vấn đề, nhưng tôi cảm thấy như tôi đang thiếu một cái gì đó ở đây, giống như tệp nhật ký sẽ giảm kích thước và không. –

+0

@WindyCityEagle: Tôi khuyên bạn nên đọc các bản sao lưu SQL Server trong BOL, ở đó các chi tiết được giải thích. Nhanh chóng: trong chế độ sao lưu đầy đủ tất cả các giao dịch được giữ lại trong các tệp nhật ký cho đến khi sao lưu tệp nhật ký được thực hiện, thì không gian đó có thể được sử dụng lại. Điều này có ý nghĩa trong nhiều môi trường sản xuất (các bản sao lưu luôn hoàn toàn nhất quán), nhưng trong các trường hợp đơn giản là quá nhiều nỗ lực. Chế độ đơn giản như vậy hoạt động. – Richard

+0

@WindyCityEagle: "dbcc ..." là những gì bạn sử dụng trong SQL (từ bất kỳ khách hàng nào), trong studio quản lý, đó là Tasks | Thu hẹp | ... nhưng đó chỉ là một trình bao bọc GUI xung quanh lệnh dbcc. – Richard

3

Bạn phải thu nhỏ & sao lưu nhật ký một vài lần để tệp nhật ký giảm kích thước, điều này là do các trang tệp nhật ký không thể được sắp xếp lại thành các trang tệp dữ liệu, chỉ bị cắt bớt. Để có giải thích chi tiết hơn, hãy xem check this out.

tách tệp nhật ký & xóa tệp nhật ký là nguy hiểm! không làm điều này trừ khi bạn muốn mất dữ liệu

+0

Liên kết là một trợ giúp tuyệt vời - có thể muốn đăng SQL từ liên kết. – OldCurmudgeon

+0

404 liên kết không tìm thấy: ( –

23
Perform a full backup of your database. Don't skip this. Really. 
Change the backup method of your database to "Simple" 
Open a query window and enter "checkpoint" and execute 
Perform another backup of the database 
Change the backup method of your database back to "Full" (or whatever it was, if it wasn't already Simple) 
Perform a final full backup of the database. 

Run below query one by one 
1- USE Database_Name 
2- select name,recovery_model_desc from sys.databases 
3- ALTER DATABASE Database_Name SET RECOVERY simple 
4- DBCC SHRINKFILE (Database_Name_log , 1) 
+0

Loại khôi phục cơ sở dữ liệu của tôi là FULL và tôi không thể tìm thấy cách thay đổi thông qua GUI trong studio quản lý 2014. Câu trả lời này đã giải quyết được sự cố đó. , cảm ơn rất nhiều! – Mixxiphoid

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