2012-09-19 21 views

回答

0

我在stackexchange上找到了這個信息...並嘗試過它,它工作。唯一的問題是,它只給了我上次更改DBO的用戶,而不是之前的時間。我是最後一次更改DBO的人,因爲我的應用程序無法正常工作。我需要知道誰在那之前改變了DBO。有誰知道我會怎麼做 - 找到最後幾次DBO被更改和由誰?這是讓我知道誰最後一次更改它的代碼:

這是在默認跟蹤中。無論您使用或sp_changedbowner會將正確的,現代的語法,它會顯示爲後者:

數據庫:: [富]改變授權[巴] 您可以檢索的信息是這樣的:

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; 

現在,事件可能發生在很久以前,所以它不一定會在蹤跡中。

+0

sys.traces只會給你當前正在使用的默認跟蹤文件。如果您瀏覽到目錄,則顯示您可能會找到具有連續編號的多個跟蹤文件。如果您想回溯一次,則對每個單獨的文件運行第二個查詢,直到找到您要查找的內容。 –

+0

你能爲我解釋一下嗎?謝謝。 – user1683507

0

在參考講解有關默認跟蹤文件您的評論...

當查詢sys.traces它會返回一個記錄爲當前在您的SQL實例上運行的每一個痕跡。如果啓用了功能,那麼其​​中一條記錄應該引用默認跟蹤文件。默認跟蹤文件的文件格式爲log_000.trc。該號碼是一個連續號碼。該文件默認存儲在保存SQL ERRORLOG文件的LOG目錄中,並且無法更改。

如果轉到該目錄,您可能會找到默認跟蹤的多個跟蹤文件。我相信一旦文件達到20MB,默認跟蹤將創建一個新文件。由於默認跟蹤不會捕獲很多信息,因此通常不會創建大量文件。儘管我會注意到它應該被監控,但是長時間未觸及的系統可能會導致這些小文件堆積並導致存儲空間不足。

它看起來像當前的跟蹤文件沒有你正在尋找的事件,這導致它在該文件之前。因此,您有兩種選擇,分別在每個文件上運行sys.fn_trace_gettable()查詢;或者我會將舊文件複製到客戶端計算機或除生產服務器之外的其他東西,並根據我們正在討論的數量在Profiler中打開每個文件。如果有問題的事件導致您的應用程序中斷,您可以明顯引用該時間來查找需要關注的文件。

相關問題