使用触发器,强化安全性

2017-03-08 19:09
网络安全和信息化 2017年4期
关键词:触发器数据表语句

SQL Server提供约束和触发器这两种机制,可以强制使用业务规则和数据完整性。其中的触发器其实是特殊类型的存储过程,SQL Server内置了DML触发器,DDL触发器和登录触发器三种常规类型的触发器。

其中的DDL触发器通常用于对数据库的保护功能,例如禁止用户随意删除和修改表,数据库对象等内容。对于诸如防止数据库架构中出现某些更改,希望数据库中发生某种情况以响应数据库架构的更改,希望记录数据库结构中的更改操作或者事件,启动/停止/暂停和修改跟踪结果,重现跟踪结果等场景,可以使用DDL触发器。

登录触发器是为了响应登录事件而激发的存储过程,与SQL Server实例建立用户会话时将会引发该事件。例如,希望在某一个特定的时间段只允许某个账户登录SQL Server服务器时,就可以使用登录触发器来实现。SQL Server引入了对数据定义语言DDL触发器的支持,允许捕获DDL操作,并对其作出反应。当对SQL Server数据库的安全性进行管理时,离不开DDL触发器的支持。例如在删除数据表以及执行完整性检查等方面,都可以借助于DDL触发器来实现。

例 如, 执 行“Use Clientzl”,“go”,“CREATE T R I G G E R D e n y d r o p_t a b l e O N D A T A B A S E F O R D R O P_T A B L E A S RAISERROR('Not allowed to drop tables.', 10,1) PRINT 'DROP TABLE attempt in database' + DB_NAME() + '.'PRINT cast(EventData()a s v a r c h a r(4 0 0 0))ROLLBACK”,“Go”语句,可以创建名为“Denydrop_table”的DDL触发器。

当用户试图删除“Clientzl”数据库中的表时,该触发器就会被激活,显示禁止删除数据表的提示,并执行回滚操作,禁止删除数据表。执行“DROP TRIGGER Denydrop_table ON DATABASE”语句,可以删除该触发器。

使用登录触发器,可以管控登录事件。例如执 行“CREATE TRIGGER shehedenglu ON ALL SERVER FOR CREATE_LOGIN, ALTER_LOGIN,DROP_LOGIN AS PRINT'DDL LOGIN took place.'PRINT cast(EventData()as varchar(4000))”,“go”语句,可以创建名为“shehedenglu”的 登 录 触发器,可以用来捕获登录操作事件。这样,在执行诸如创建、更改或者除去一个登录等操作时,就会激活该触发器,显示相应的提示信息。而执行“DROP TRIGGER shehedenglu ON ALL SERVER”语句,就可以删除该登录触发器。

猜你喜欢
触发器数据表语句
浅谈时序逻辑电路的成长记忆
重点:语句衔接
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
基于列控工程数据表建立线路拓扑关系的研究
触发器在酒店管理系统中的应用
图表
我喜欢
几种常见触发器工作方式的讨论
触发器逻辑功能转换的两种方法