2010-05-27 76 views
1

我們在我們的數據庫(SQL Server 2005)中發生了ghost更新問題。字段正在改變,我們無法找到執行更新的例程。查找導致意外表更新的查詢或語句的詳細信息

是否有任何方法(可能使用更新觸發器?)來確定導致更新的原因? SQL語句,進程,用戶名/登錄等?

+1

聽起來像你可能有一個SQL注入漏洞。 – amphetamachine 2010-05-27 14:29:01

+0

它是一個在線應用程序嗎? – 2010-05-27 14:36:27

回答

3

使用SQL Server Profiler

您可能需要過濾掉你不需要,因此可能需要一段時間的東西把它設置。

至少它會讓你到負責的程序/查詢以及用戶/計算機進行更改,在代碼中找到它。

+0

我通常會設置一個跟蹤記錄到新的數據庫表。這樣你就可以編寫一些簡單的SQL來查找你正在尋找的特定更新。 確保包含所有需要的列和事件,例如運行測試更新並檢查它是否包含在內並且未被濾除。 – Cobusve 2010-05-27 15:32:35

1

所有你所要求的信息可在執行更新的時間。 SQL事件探查器當然可以工作,但是製作一個不會使數據壓倒你的過濾器是一個工作,特別是如果你需要一次運行幾天或幾周。創建更新觸發器非常簡單,您可以在新表中記錄所需的信息。

0

我可能會用AutoAudit先在表格上生成觸發器。

從確切知道改變數據的方面來看,它有點有限,但這只是一個開始。

您可以隨時查看觸發器並修改它們以僅記錄您感興趣的某些列,並且可能獲取更多目前未記錄的信息。