2008-10-02 18 views

Trả lời

6

Điều đó sẽ thực hiện công việc

use master 
go 
dump transaction <YourDBName> with no_log 
go 
use <YourDBName> 
go 
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs 
go 
-- then you can call to check that all went fine 
dbcc checkdb(<YourDBName>) 

Một lời cảnh báo

Bạn sẽ chỉ thực sự sử dụng nó trên một thử nghiệm/phát triển dat abase nơi bạn không cần một chiến lược sao lưu thích hợp như bán phá giá nhật ký sẽ dẫn đến mất lịch sử giao dịch. Trong các hệ thống sống, bạn nên sử dụng giải pháp sugested bởi Cade Roux

+0

Điều này làm việc tuyệt vời! –

2

DBCC SHRINKFILE.

Here for 2005. Here for 2000.

+0

Cả hai liên kết đều trỏ đến phiên bản 2005. Đây là một trong 2000: http://support.microsoft.com/kb/272318 – lepe

3

Nhấp chuột phải vào cơ sở dữ liệu trong Enterprise Manager> All Tasks> Shrink Database.

+0

LƯU Ý: Phương pháp này, là phương pháp dễ nhất, có thể hoạt động trong hầu hết các trường hợp, nếu không có gì xảy ra, hãy làm theo phương thức được chấp nhận. – lepe

4

Nhật ký giao dịch dự phòng và thu hẹp nhật ký. Nếu các DB đang được sao lưu thường xuyên và cắt ngắn trên trạm kiểm soát, nó không nên phát triển mất kiểm soát, tuy nhiên, nếu bạn đang thực hiện một số lượng lớn (kích thước) của các giao dịch giữa các khoảng thời gian, nó sẽ phát triển cho đến khi tiếp theo. trạm kiểm soát.

0

Một điều bạn có thể thử là để thiết lập các chế độ phục hồi để đơn giản (nếu họ chưa có) cho cơ sở dữ liệu, mà sẽ giữ các tập tin log từ phát triển như nhanh chóng. Gần đây, chúng tôi gặp sự cố này khi nhật ký giao dịch của chúng tôi được lấp đầy và chúng tôi không được phép giao dịch nữa.

Kết hợp tệp thu nhỏ có nhiều câu trả lời và chế độ khôi phục đơn giản đảm bảo tệp nhật ký của chúng tôi ở mức hợp lý.

0

Sử dụng Query Analyzer:

USE yourdabatase 
SELECT * FROM sysfiles 

Bạn nên tìm một cái gì đó tương tự như:

FileID … 
1    1    24264 -1   1280  1048578    0    yourdabatase_Data D:\MSSQL_Services\Data\yourdabatase_Data.MDF 
2    0    128   -1   1280  66   0        yourdabatase_Log  D:\MSSQL_Services\Data\yourdabatase_Log.LDF 

Kiểm tra các tập tin ID của tập tin log (nó 2 hầu hết thời gian). Thực hiện 2 hoặc 3 lần lệnh kiểm tra để viết mọi trang vào ổ đĩa cứng.

Checkpoint 
GO 
Checkpoint 
GO 

Thực hiện lệnh giao dịch sau đây để thân cây file log đến 1 MB

DUMP TRAN yourdabatase WITH no_log 
DBCC SHRINKFILE(2,1) /*(FileID , the new size = 1 Mb)*/ 
0

Dưới đây là những gì tôi đã được Sử dụng

BACKUP LOG <CatalogName> with TRUNCATE_ONLY 
DBCC SHRINKDATABASE (<CatalogName>, 1) 
use <CatalogName> 
go 
DBCC SHRINKFILE(<CatalogName_logName>,1) 
1

Không ai ở đây biết nó, vì vậy tôi sẽ: NEVER EVER teo nhật ký giao dịch. Đó là một ý tưởng tồi từ quan điểm của SQL Server.

Giữ nhật ký giao dịch nhỏ bằng cách thực hiện sao lưu db hàng ngày và sao lưu nhật ký giao dịch theo giờ (hoặc ít hơn). Khoảng thời gian sao lưu nhật ký giao dịch phụ thuộc vào mức độ bận của db của bạn.

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