SQL Server 2008中SQL應(yīng)用系列--目錄索引
本文主要 涉及DDL觸發(fā)器和登錄觸發(fā)器的應(yīng)用實例。
MicrosoftSQL Server 提供兩種主要機制來強制使用業(yè)務(wù)規(guī)則和數(shù)據(jù)完整性:約束和觸發(fā)器。觸發(fā)器為特殊類型的存儲過程,可在執(zhí)行語言事件時自動生效。SQL Server 包括三種常規(guī)類型的觸發(fā)器: DML 觸發(fā)器 、 DDL 觸發(fā)器 和 登錄觸發(fā)器 。
1、當(dāng)數(shù)據(jù)庫中發(fā)生數(shù)據(jù)操作語言 (DML) 事件時將調(diào)用 DML 觸發(fā)器。DML 事件包括在指定表或視圖中修改數(shù)據(jù)的 INSERT 語句、UPDATE 語句或 DELETE 語句。DML 觸發(fā)器可以查詢其他表,還可以包含復(fù)雜的 Transact-SQL 語句。將觸發(fā)器和觸發(fā)它的語句作為可在觸發(fā)器內(nèi)回滾的單個事務(wù)對待。如果檢測到錯誤(例如,磁盤空間不足),則整個事務(wù)即自動回滾。
關(guān)于DML觸發(fā)器應(yīng)用最為廣泛。這里不再贅述。MSDN官方說明: http://msdn.microsoft.com/zh-cn/library/ms189799.aspx
2、當(dāng)服務(wù)器或數(shù)據(jù)庫中發(fā)生數(shù)據(jù)定義語言 (DDL) 事件時將調(diào)用 DDL 觸發(fā)器。DDL 觸發(fā)器是一種特殊的觸發(fā)器,它在響應(yīng)數(shù)據(jù)定義語言 (DDL) 語句時觸發(fā)。它們可以用于在數(shù)據(jù)庫中執(zhí)行管理任務(wù),例如,審核以及規(guī)范數(shù)據(jù)庫操作。
下面我們用舉例說明DDL觸發(fā)器( http://technet.microsoft.com/zh-cn/library/ms189799%28SQL.90%29.aspx )的應(yīng)用:
示例一: 創(chuàng)建一個DDL觸發(fā)器審核數(shù)據(jù)庫級事件
執(zhí)行結(jié)果:
示例二: 創(chuàng)建一個DDL觸發(fā)器審核服務(wù)器級事件
效果:
注意: 要特別謹(jǐn)慎使用DDL觸發(fā)器。如果設(shè)置不當(dāng),將會在數(shù)據(jù)庫級甚至服務(wù)器級引發(fā)不可預(yù)知的后果。
3、登錄觸發(fā)器( http://msdn.microsoft.com/zh-cn/library/bb326598.aspx )將為響應(yīng) LOGON 事件而激發(fā)存儲過程。與 SQL Server 實例建立用戶會話時將引發(fā)此事件。
如果你有這樣的需求:在某個特定的時間只允許某個賬號登錄服務(wù)器(如單位和家里使用不同的賬號遠程登錄服務(wù)器),那么登錄觸發(fā)器是一個不錯的選擇。
示例三: 創(chuàng)建一個登錄觸發(fā)器審核登錄事件
結(jié)果:
當(dāng)然,你也可以使用應(yīng)用程序或類似于log4net的日志機制記錄類似的登錄事件,但SQL server 2008已經(jīng)為我們做到了,你所做的僅僅是有勇氣來試一試。
小結(jié):作為對數(shù)據(jù)DDL操作和登錄事件的審核和監(jiān)控,SQL Server提供了比較完善的機制。這也是SQL server安全機制的一部分。下文將涉及SQL server數(shù)據(jù)庫級的透明加密,敬請關(guān)注。
助人等于自助! 3w@live.cn
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
