我剛開始一份新工作,被給了一個錯誤追蹤和修復。數據庫記錄中一個字段的基本問題正在被清除,沒有人知道爲什麼。到目前爲止,我曾嘗試:跟蹤神祕更新SQL的提示?
- 檢查觸發器表, 有沒有。
- 監控使用SQL Server Profiler中的天,希望會有錯誤 會再次發生近一 表可惜 它沒有。
- 查看所有 插入/更新的代碼,並且我沒有看到任何會導致此 問題的任何東西 。
有沒有人有任何其他建議找到可以更新此記錄?我沒有檢查我應該做的事嗎?我應該看看還有其他的信息來源嗎?
我剛開始一份新工作,被給了一個錯誤追蹤和修復。數據庫記錄中一個字段的基本問題正在被清除,沒有人知道爲什麼。到目前爲止,我曾嘗試:跟蹤神祕更新SQL的提示?
有沒有人有任何其他建議找到可以更新此記錄?我沒有檢查我應該做的事嗎?我應該看看還有其他的信息來源嗎?
創建將寫入歷史記錄表的觸發器。包括寫入日期的列和用戶。
:: fn_dblog()會至少在更新發生時(作爲順序,而不是時間)以及該事務完成其他操作時向您顯示。根據關於此次交易做了哪些其他操作的信息以及此刻正在進行的其他交易,您應該至少能夠縮小更新發生的環境,從這一點,代碼檢查是一個可行的選項,可以繼續。
讀取日誌需要...日誌,以便您的數據庫應處於完全恢復模式。
這個日誌會返回多遠? – 2010-11-13 00:34:11
如果數據庫處於完全恢復狀態,則直到最近的日誌備份。在簡單恢復之前,直到最近的檢查點(幾分鐘)。它可以進一步分析在日誌備份文件本身,通過一個不同的名字恢復數據庫,然後將一個記錄的時間和分析應用新日誌之前的日誌內容。 – 2010-11-13 01:35:27
select
schema_name = s.name,
object_name = o.name
from sys.sql_modules m join sys.objects o on m.object_id = o.object_id
join sys.schemas s on o.schema_id = s.schema_id
where definition like '%FieldName%'
該查詢查看數據庫(存儲過程,函數,視圖)中的所有對象並查找引用'FieldName'的任何地方。我會遍歷這個查詢返回的所有對象,看看是否有任何不尋常的事情正在使用該字段。這可能是因爲比你在乎它可能返回多個結果極其乏味,但它抓住所有引用到外地
如果你是SQL Server 2008上,你可以使用擴展事件得到充分的肯定暴漲堆棧跟蹤的違規聲明。這裏的示例代碼Create Trigger to log SQL that affected table?
審計訪問模式/表的帳戶怎麼樣? 'db_datareader' for * everyone * =) – 2010-11-13 00:43:34