回答
嘗試使用Change Data Capture。跟蹤您在數據庫中的更改是一種好方法。您必須在一個或多個數據庫上啓用該功能,然後在一個或多個表上啓用該功能(這是一個表格功能,因此您需要爲每個需要的表執行此功能)。
數據庫啓用CDC。
讓我們假設我們要啓用CDC for AdventureWorks數據庫。我們必須運行下面的SP,以確保此功能將工作:
USE AdventureWorks
GO
EXEC sys.sp_cdc_enable_db
GO
至於結果,我們會發現一個名爲CDC和幾個表自動添加新的模式:
- CDC。 captured_columns - 此表格返回捕獲列的列表結果。
- cdc.change_tables - 此表返回所有啓用捕獲的表的列表。
- cdc.ddl_history - 此表包含自啓用捕獲數據後所有DDL更改的歷史記錄。
- cdc.index_columns - 此表包含與變更表相關的索引。
- cdc.lsn_time_mapping - 此表映射LSN號碼和時間。
表上啓用CDC。
已經啓用CDC所需DB(S)它的時間來檢查是否有與此功能表後:
USE AdventureWorks
GO
SELECT [name], is_tracked_by_cdc
FROM sys.tables
GO
如果沒有,我們可以啓用變化捕捉HumanResources.Shift表以下程序:
USE AdventureWorks
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'HumanResources',
@source_name = N'Shift',
@role_name = NULL
GO
確保您SQL代理啓動並運行,因爲它會創建一個作業(cdc.AdventureWorks_capture可能)捉修改。 如果所有程序都正確執行,我們將在系統表中找到一個名爲cdc.HumanResources_Shift_CT的新表,其中包含所有HumanResources.Shift更改。
注意:注意@role_name參數,它指定數據庫信息訪問。
+1爲CDC主題。 – Devart
除非您已經安裝了一些審計系統,否則默認情況下無法找到此信息。
假設您的數據庫處於完全恢復模式,唯一的選擇是讀取事務日誌並嘗試從那裏獲取信息。
您可以嘗試使用sql server函數DBCC LOG和fn_dblog或使用第三方工具(如ApexSQL Log)讀取事務日誌。
試試這個。它將提供數據庫中每個表的最後更新日期。
USE database_name
GO
SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
GO
更多參考點擊here
正如評論他人,變更數據捕獲,如果你已經實現了他們更改跟蹤將是理想的解決方案。如果你沒有,那麼這裏是一個快速的方法,它會給你一部分信息:
SELECT OBJECT_NAME(OBJECT_ID) AS Object, last_user_update
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID(<YourDBName>)
AND OBJECT_ID=OBJECT_ID(<YourTableName>)
這會告訴你更新什麼表時,卻未必真爲你的目的,如果你面對的是一個whodunnit場景。此外,它只會爲您提供最新的更新時間戳,也就是說,如果上週有人更新並且昨天更新了其他人,則不會看到上週更新的詳細信息。
拉吉
嘗試這一個 -
SELECT
[db_name] = d.name
, [table_name] = SCHEMA_NAME(o.[schema_id]) + '.' + o.name
, s.last_user_update
FROM sys.dm_db_index_usage_stats s
JOIN sys.databases d ON s.database_id = d.database_id
JOIN sys.objects o ON s.[object_id] = o.[object_id]
WHERE o.[type] = 'U'
AND s.last_user_update IS NOT NULL
AND s.last_user_update BETWEEN DATEADD(wk, -1, GETDATE()) AND GETDATE()
+1這是很好的,直到你不需要用戶,操作和變化前的最後一個值。 –
- 1. 如何插入,更新,刪除從表格中導入數據?
- 2. 插入或更新列根據週末
- 3. 插入或更新或刪除數據從表值參數
- 4. 插入/刪除行時更新表格
- 5. JTable如何在插入刪除或更新數據後刷新表模型。
- 6. 如何更新子表插入/更新/刪除的父表列值?
- 7. 如何在索引列上插入/更新/刪除?
- 8. 我如何知道何時基於C#列表插入,刪除或更新?
- 9. 支持更新,插入或刪除
- 10. 如何更新多對多表格:刪除,刪除全部,插入,重新插入
- 11. 如何在插入更新或刪除之後刷新JTable
- 12. 如何更新/插入/刪除CrossCompany
- 13. 如何刪除插入Doctype後出現的空格或空行
- 14. TelerikRadGrid如何插入,更新和刪除到SQL數據庫
- 15. 當任何表插入更新或刪除
- 16. 如何更新和刪除SQLiteOPENHELPER中MainActivity中的表格數據
- 17. 基於陣列比較的SQL刪除,更新或插入
- 18. 更新/刪除/插入DataGridView
- 19. 更新,插入,刪除記錄Joomla表
- 20. 如何知道在Oracle中更新,刪除或插入了哪些記錄
- 21. 如何在刪除表中的數據後更新特定列
- 22. 級聯刪除或添加記錄(插入,更新,刪除)
- 23. Laravel mysql插入+刪除或更新如何?
- 24. 如何在DataReader.Read之後插入,更新或刪除?
- 25. Talend在表格中插入或更新數據
- 26. 使用JDBC插入或更新表格
- 27. 刷新按鈕 - 插入,刪除,更新後刷新數據網格視圖
- 28. SSIS - 刪除並插入所有行或更新並插入
- 29. 刪除列從插入或更新原則2
- 30. 如何刪除所有數據然後插入新數據
的跟蹤數據更改(SQL Server)的對於SQL Server 2008 ... HTTP://msdn.microsoft.com/en-us/library/bb933994 %28v = sql.100%29.aspx – wcraft
[比較更改數據捕獲和更改跟蹤](http://msdn.microsoft.com/en-us/library/cc280519(v = sql.100).aspx)。 –