有沒有辦法從觸發器中訪問觸發觸發器的sql?我已經設法通過加入master..monProcessSQLText MDA表來獲得它,但這隻適用於mon_role的用戶,我不想將它提供給每個人。有沒有我錯過的全球變量?從觸發器(Sybase)中觸發觸發器的sql
我想記錄所有更新運行在一張桌子上,所以我可以追溯到一個IP地址和用戶名。
這是ASE 12.5。
有沒有辦法從觸發器中訪問觸發觸發器的sql?我已經設法通過加入master..monProcessSQLText MDA表來獲得它,但這隻適用於mon_role的用戶,我不想將它提供給每個人。有沒有我錯過的全球變量?從觸發器(Sybase)中觸發觸發器的sql
我想記錄所有更新運行在一張桌子上,所以我可以追溯到一個IP地址和用戶名。
這是ASE 12.5。
如果你想
日誌中的所有更新運行對錶,所以我可以追根溯源到一個IP地址和用戶名
觸發肯定是走錯了路去處理它,觸發器是而不是專爲此設計的,並且還有其他ASE設施,其中爲爲此設計的。這不是關於桌面,而是關於安全和監視。
Sybase審計。
它需要一些設置,比MAD表的開銷小得多;但最重要的是,它是爲審計而設計的(MDA不是)。並沒有編碼要求,如MDA。它是高度可配置的,這個想法是隻捕獲你所需要的,而不是更多。
監測。
我不會推薦MDA表格,但是因爲您已經安裝了這些表格,並且已經啓用了監視功能,並且接受了22%的捕獲SQL文本的開銷......這些信息非常短暫。爲了將它們用於任何相關目的(如您的),您需要編寫一個捕獲和存儲機制,將所有必需的信息歸檔到歸檔數據庫。這必須在持續的基礎上完成,並且完全獨立於觸發器等。您還可以實時過濾以減少存儲的數據量(警告,數量巨大)。清除7天以上的數據等。這本身就是一個小項目,這就是爲什麼從第三方可以買到的原因。
一旦其中任一設備到位,那麼,分開,每當你想打聽誰更新的表,時間和地點,所有你需要做的是檢查檔案。與觸發器無關,或從觸發器獲取信息或向普通用戶授予管理員權限時遇到困難。
另外,需要了解的是,您沒有正常的安全性,表格正在被用戶直接更新;因此直接更新權限已授予特定用戶,或者更糟糕的是已授予所有用戶。結果是,沒有辦法知道誰在更新表,以及誰在破壞數據或參照完整性。
就審計而言,如果安全到位,那麼審計負擔也大大降低:您只需審計存儲的proc執行情況。否則,您需要審計所有表的所有更新。
請查看答案並提出問題。 – PerformanceDBA 2010-11-28 01:48:50