2009-08-06 30 views
9

Xin chào Tôi có cơ sở dữ liệu sản xuất và cơ sở dữ liệu báo cáo được nhân rộng của nó. Cách thu nhỏ tệp nhật ký giao dịch trong cơ sở dữ liệu sản xuất khi kích thước tệp nhật ký ngày càng tăng. Tôi đã thử DBCC SHRINKFILESHRINKDATABASE lệnh nhưng nó không hoạt động đối với tôi. Tôi không thể tách rời và co lại và đính kèm lại dưới dạng db trong bản sao. Xin hãy giúp tôi trong vấn đề này.Cách thu hẹp Nhật ký giao dịch trong cơ sở dữ liệu máy chủ sql trong bản sao

Trả lời

0

Bạn có lịch biểu sao lưu thường xuyên tại chỗ không?

Nếu không, tôi đề nghị bạn đọc bài viết tuyệt vời này: 8 Steps to better Transaction Log throughput

+0

không có lịch biểu sao lưu. Tôi cần xóa nhật ký trancation –

+1

Lý do bạn có nhật ký giao dịch lớn là do bạn không sao lưu cơ sở dữ liệu của mình thường xuyên. –

1

Cơ sở dữ liệu sẽ không cho phép bạn loại bỏ dữ liệu giao dịch mà không được sao lưu. Trước tiên, bạn phải sao lưu nhật ký giao dịch, sau đó bạn có thể thu nhỏ nó.

+0

Điều đó tôi đã thử, nhưng đã không làm việc cho tôi. Kích thước chưa được giảm –

+0

Nếu DB của bạn ở chế độ khôi phục đầy đủ, bạn cần đảm bảo rằng bạn đang thực hiện sao lưu nhật ký giao dịch cũng như sao lưu cơ sở dữ liệu. – KSimons

0

Shrink logfile với shrinkfile dbcc

Sau đó cắt các tập tin log sử dụng

DatabaseName Sao lưu với truncate_only

Sau đó, thu nhỏ logfile lại

0

tôi đã sử dụng Red-Gate's SQL Backup công cụ để chăm sóc sao lưu. Sau đó, tôi chỉ sử dụng bảng điều khiển quản lý để phát hành lệnh thu nhỏ trên tệp nhật ký (yêu cầu nó sắp xếp lại các trang trước khi giải phóng dung lượng không sử dụng).

Hoạt động như một sự quyến rũ.

9

Đầu tiên kiểm tra những gì đang gây ra cơ sở dữ liệu của bạn để không co lại bằng cách chạy:

SELECT name, log_reuse_wait_desc FROM sys.DATABASES 

Nếu bạn đang bị chặn bởi một giao dịch, tìm cái nào với:

DBCC OPENTRAN 

Giết giao dịch và thu nhỏ của bạn db.

Nếu nguyên nhân của việc chặn là 'REPLICATION' và bạn chắc chắn rằng các bản sao của bạn được đồng bộ, bạn có thể cần đặt lại trạng thái của các giao dịch được sao chép. Để xem trạng thái của những gì các cơ sở dữ liệu vẫn nghĩ rằng cần phải được nhân rộng sử dụng:

DBCC loginfo 

Bạn có thể thiết lập lại điều này bằng cách đầu tiên chuyển sang đại lý đọc tắt (Tôi thường chỉ cần bật toàn bộ SQL Server Agent off), và sau đó chạy truy vấn đó trên cơ sở dữ liệu mà bạn muốn khắc phục sự cố sao chép:

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time= 0, @reset = 1 

Đóng kết nối nơi bạn đã thực hiện truy vấn đó và khởi động lại SQL Server Agent (hoặc chỉ tác nhân đọc). Bạn nên tất cả các thiết lập để thu nhỏ db của bạn ngay bây giờ.

+0

Giải pháp chính xác tôi cần - giải quyết vấn đề đăng nhập của tôi. – Dragonsdoom

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