如何監控資料庫內容是否被更改

2009-04-25 1:51 am
請問各位大大!小弟想針對資料庫內容做監控,當資料有被刪除時,便記錄在另一個資料庫中,請問小弟能夠記錄是哪一筆資料被刪除嗎?(資料庫內大約有20萬筆資料會持續增加)
現在小弟只能依照資料庫筆數的比對來做是否被刪除的記錄
更新1:

感謝大大們的建議。。我是用SQL2005 監控軟體為intuch,主要是因為操作員會直接開啟資料庫表格偷偷將異常紀錄刪除,所以小弟才想防堵他

更新2:

利用VB寫一個監控資料庫動作的程式。。來幫助USER端的工程師釐清紀錄是否被刪除或是電腦未紀錄

更新3:

Glory 大大不好意思..我是第一次用SQL所以您說的小弟有模糊,您所說的觸發程序是那哪呼叫呢??

更新4:

我在REPORT4的所有工作中管理->管理觸發程序的對話方塊中 輸入如大大提示的已成功記錄一筆訊息到另一個資料表中 但觸發時間要如何填??

更新5:

CREATE TRIGGER [DELCHECK] ON [REPORT4] FOR DELETE AS BEGIN INSERT INTO EQ_REPORT (S_STIME, S_ETIME, S_COMM) VALUES ('發生日期','發生時間','人為移除資料列') END

更新6:

如上 日期及時間該如何應用?

更新7:

YA~~~時間放入成功了!!就剩下被砍的訊息怎麼轉寫了

更新8:

經由測試及爬文小弟想通了..與其記錄被他刪除的資料,不如讓他刪不掉,並記錄人員試圖刪除資料庫內容,所以觸發程序如下

更新9:

CREATE TRIGGER [DELCHECK] ON [REPORT4] instead of DELETE AS ROLLBACK TRANSACTION BEGIN INSERT INTO EQ_REPORT (S_STIME, S_ETIME, S_COMM) VALUES (getdate(),' ','人為試圖移除資料') END

更新10:

以上~~請問大大還有關於這方面其他好的建議嗎?

回答 (5)

2009-04-26 3:42 am
✔ 最佳答案
如果你是用SQL的資料庫,如MS SQL、ORACLE、POSTGRE SQL、MySQL,,你可以在資料庫的表格中寫入觸發程序:

CREATE TRIGGER [TABLE_NAME].[TRI_NAME] ON [TABLE_NAME]
FOR DELETE
AS
BEGIN
/* 以下寫入被刪除的資料,再轉寫到另一個表格 */
..
..
..

END
GO

(以上是MS SQL的範例)
2009-04-28 7:17 pm
主控台程式唷!!那我來試試..在Trigger如何呼叫程式呢
2009-04-25 5:11 pm
幻想:
用 MS SQL可以用SqlDependency , 不過,這玩意兒真的很難用 ~"~

2009-04-27 23:12:09 補充:
看起來用Trigger是最好的了..我一開始誤會了你的意思.

2009-04-27 23:46:19 補充:
幻想:
要更機車還可以加一樣,寫一個小的主控台程式,用Delete Trigger去啟動它,例如會讓電腦發出聲音(ex:偷偷刪除資料會導致電腦爆炸) ,或是會傳Message到另外一台電腦警示之類的..

2009-04-30 00:34:05 補充:
1.啟用 SQL Server XP_cmdShell的功能 [在功能的介面區組態設定]

2009-04-30 00:39:52 補充:
Set @Cmd='d:\aaa\bbb.exe
execute xp_cmdshell @Cmd
Trigger大概是像這樣呼叫

2009-04-30 00:40:07 補充:
Set @Cmd='d:\aaa\bbb.exe'
2009-04-25 7:09 am
你是使用何種資料庫。

使用者是用何種介面。
2009-04-25 6:08 am
Most databases will support triggers, you can check that out from the manual of the databases you are using.


收錄日期: 2021-04-29 22:18:08
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20090424000010KK06387

檢視 Wayback Machine 備份