2012-09-19 24 views

Trả lời

0

Tôi tìm thấy thông tin này trên stackexchange ... và đã thử nó và nó đã làm việc. Vấn đề duy nhất là nó chỉ cho tôi người dùng đã thay đổi DBO lần cuối, không phải lúc trước đó. Tôi là người đã thay đổi DBO lần cuối bởi vì đơn đăng ký của tôi không hoạt động. Tôi cần phải biết ai đã thay đổi DBO trước thời điểm đó. Có ai biết làm thế nào tôi sẽ làm điều đó - tìm thấy vài lần cuối cùng DBO đã được thay đổi và bởi ai? Đây là mã cho tôi biết ai đã thay đổi lần cuối:

Đây là dấu vết mặc định. Cho dù bạn sử dụng sp_changedbowner hay, cú pháp hiện đại thích hợp, nó sẽ hiển thị như sau:

uỷ quyền của alter làm trên cơ sở dữ liệu :: [foo] tới [thanh] Bạn có thể lấy thông tin theo cách này:

DECLARE @path NVARCHAR(260); 

SELECT 
    @path = REVERSE(SUBSTRING(REVERSE([path]), 
    CHARINDEX('\', REVERSE([path])), 260)) + N'log.trc' 
FROM sys.traces 
WHERE is_default = 1; 

SELECT * -- whittle down to the meaningful trace columns 
FROM sys.fn_trace_gettable(@path, DEFAULT) 
WHERE EventClass = 152 
ORDER BY StartTime DESC; 

Bây giờ, sự kiện có thể đã xảy ra từ lâu, vì vậy nó sẽ không nhất thiết vẫn còn trong dấu vết.

+0

Sys.traces sẽ chỉ cung cấp cho bạn tệp theo dõi mặc định hiện tại đang được sử dụng. Nếu bạn duyệt đến thư mục nó cho thấy bạn có thể sẽ tìm thấy nhiều tệp theo dõi với một số thứ tự. Nếu bạn muốn quay lại xa hơn, hãy chạy truy vấn thứ hai trên từng tệp riêng lẻ cho đến khi bạn tìm thấy những gì bạn đang tìm kiếm. –

+0

Bạn có thể giải thích thêm một chút cho tôi được không? Cảm ơn bạn. – user1683507

0

Trong tài liệu tham khảo để nhận xét của bạn trên giải thích thêm về tệp dấu vết mặc định ...

Khi bạn truy vấn sys.traces nó sẽ trả về một bản ghi cho mỗi dấu vết hiện đang chạy trên dụ SQL của bạn. Một trong những bản ghi đó nên tham chiếu tệp theo dõi mặc định nếu tính năng được bật. Định dạng tệp của tệp theo dõi defaul là log_000.trc. Số này là số thứ tự. Theo mặc định, tệp được lưu trữ trong thư mục LOG nơi các tệp SQL ERRORLOG của bạn được lưu giữ và tệp đó không thể thay đổi được.

Nếu bạn truy cập thư mục đó, bạn có thể tìm thấy nhiều tệp theo dõi cho theo dõi mặc định của mình. Theo dõi mặc định sẽ tạo một tệp mới khi tệp đạt đến 20MB tôi tin. Mà kể từ khi theo dõi mặc định không nắm bắt được nhiều thông tin, nó thường không tạo ra một số lượng lớn các tập tin. Mặc dù tôi sẽ lưu ý rằng nó là một cái gì đó cần được theo dõi, các hệ thống bị ảnh hưởng trong thời gian dài có thể có các tệp nhỏ này chồng chất lên và làm cho bộ nhớ được lấp đầy.

Dường như tệp theo dõi hiện tại không có sự kiện bạn đang tìm kiếm trong đó, dẫn đến sự kiện trước tệp đó. Vì vậy, bạn có hai tùy chọn hoặc chạy truy vấn sys.fn_trace_gettable() trên từng tệp riêng lẻ; hoặc tôi sẽ lấy các tệp cũ hơn và sao chép chúng xuống máy tính khách hoặc một thứ gì đó ngoài máy chủ sản xuất của tôi và chỉ mở từng tệp trong hồ sơ, tùy thuộc vào số lượng chúng ta đang nói đến. Nếu sự kiện được đề cập khiến ứng dụng của bạn bị hỏng, bạn có thể tham khảo thời gian đó một cách mơ hồ để tìm các tệp bạn cần tập trung vào.

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