Xác định sự kiện tăng trưởng tệp


9

Tôi đang khám phá một số DB trong danh mục đầu tư của mình đã được tạo bằng cài đặt tự động mặc định (tăng 1 MB hoặc 10%) đã mở rộng trong một khoảng thời gian dài. Nếu tôi muốn lấy thước đo mức độ phân mảnh bên ngoài cho mỗi tệp DB, tôi có thể nhận được từ siêu dữ liệu bao nhiêu lần một tệp DB đã được sửa đổi kích thước (bằng cách tự động hoặc thủ công) không? Để làm rõ, tôi có thể lấy từ siêu dữ liệu lịch sử sửa đổi tệp DB cho vòng đời của DB, không chỉ từ khi khởi động lại phiên bản?


1
Trừ khi chúng cũng bị thu hẹp tại một số điểm, đây có phải là một phép tính đơn giản từ kích thước ban đầu đến kích thước hiện tại dựa trên cài đặt tự động phát triển không?
Martin Smith

Nếu nó chỉ được sửa đổi bởi autogrow, tôi sẽ đồng ý nhưng tôi đã thấy các sửa đổi thủ công được thực hiện có thể nằm ngoài cài đặt autogrow.
MattyZDBA

Câu trả lời:


20

Bạn có thể nhận thông tin sự kiện tự động phát sinh từ theo dõi mặc định nếu nó được bật:

select distinct
    ei.eventid,
    e.name
from sys.fn_trace_geteventinfo(1) ei
inner join sys.trace_events e
on e.trace_event_id = ei.eventid
where name like '%grow%';

Bạn có thể thấy rằng theo dõi mặc định này có chức năng tự động phát triển tệp dữ liệu và ghi nhật ký tệp tự động . Để xem bạn có bật theo dõi mặc định trong trường hợp đó không, bạn có thể làm như sau:

exec sp_configure 'default trace enabled';
go

Lưu ý: đây là tùy chọn cấu hình nâng cao, vì vậy show advanced optionssẽ phải được đặt thành 1 để xem tùy chọn cấu hình này thông qua sp_configure. Ngoài ra, hai sự kiện này sẽ không được kích hoạt nếu tệp phát triển thủ công .

Dưới đây là một truy vấn mẫu nhanh để có được các sự kiện này:

select
    te.name as event_name,
    tr.DatabaseName,
    tr.FileName,
    tr.StartTime,
    tr.EndTime
from sys.fn_trace_gettable('<Trace Path>', 0) tr
inner join sys.trace_events te
on tr.EventClass = te.trace_event_id
where tr.EventClass in (92, 93)
order by EndTime;

Và bạn có thể nhận được <Trace Path>từ chức năng hệ thống sys.fn_trace_getinfo:

select *
from sys.fn_trace_getinfo(1);

Đây là thông tin tốt, hãy nhớ rằng một số sự kiện có thể đã hết hạn từ dấu vết mặc định.
Nic

Hoàn toàn đúng, nhưng tôi tin rằng đó là giám sát ngoài luồng duy nhất mà OP sẽ thực hiện việc này với việc thực hiện kiểm toán thích hợp.
Thomas Stringer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.