我們有一個winform應用程序,所有的SQL都是內聯的,不幸的是沒有使用存儲過程。如何捕獲和記錄SQL表的活動
什麼是最好的方式來跟蹤對SQL表執行什麼操作(INSERT,UPDATE或DELETE),監視和捕獲單表中正在進行的活動的記錄。
我知道SQL server profiler是可用的,但理想情況下我不想讓分析器始終運行,我需要的是在幕後運行並捕獲一個表的所有活動。
我想過使用觸發器,但使用它有一些缺點,所以我想知道是否有其他選項?
感謝
我們有一個winform應用程序,所有的SQL都是內聯的,不幸的是沒有使用存儲過程。如何捕獲和記錄SQL表的活動
什麼是最好的方式來跟蹤對SQL表執行什麼操作(INSERT,UPDATE或DELETE),監視和捕獲單表中正在進行的活動的記錄。
我知道SQL server profiler是可用的,但理想情況下我不想讓分析器始終運行,我需要的是在幕後運行並捕獲一個表的所有活動。
我想過使用觸發器,但使用它有一些缺點,所以我想知道是否有其他選項?
感謝
如果你使用SQL Server 2008(及以上),變更數據捕獲聽起來像一個良好的開端:
http://msdn.microsoft.com/en-us/library/bb522489(v=sql.105).aspx
如果您使用的是Oracle,您可以使用此報表審計表(如果fireid 是用戶做的名字更新):
AUDIT選擇表,更新表,INSERT TABLE,DELETE TABLE BY fireid BY ACCESS;
結果將存儲在SYS.AUD $表
(如果你使用其他數據庫只是搜索審計DML語句的文檔。)
SQL SERVER:有一個功能叫做「SQL審計」這是你在找什麼? http://www.bradmcgehee.com/2010/03/an-introduction-to-sql-server-2008-audit/
不幸的是,它不是Oracle。它是MS SQL 2008 R2 – 03Usr 2012-07-10 21:51:11
SQL SERVER:有一個名爲「SQL AUDIT」的功能,這是你在找什麼?請參閱此URL: http://www.bradmcgehee.com/2010/03/an-introduction-to-sql-server-2008-audit/ – 2012-07-10 21:53:53
有幾種方法。如果你只是想在代碼中執行它(取決於你的程序) 你可以將這些命令添加到列表中並將它們寫入文件。
如果您使用的是EntityFrameWork,那麼我會記錄數據更改。使用EF時,使用存儲的procs是最好的選擇。
您的代碼或項目的示例將有所幫助。 TransactionLogs已經捕獲了這些信息。
明顯你使用Sql Server的這些ORACLE人都是如此的嫉妒。
也看看使用DataSourceViews,這是一種告訴服務器正在發生什麼的方法。
我認爲SQL Server CHANGE TRACKING TeEchinique最適合您的要求。
根據您想要捕獲的內容,觸發器可能是最容易實現的選項。你能解釋一下你想要捕捉什麼,以及你關心的具體缺點? – 2012-07-11 00:15:49