测试审计方法 最佳的测试方法就是运行一对针对AdventureWorks数据库的DDL语句。下面的语句创建了Person、Contact2表,接着删除了表: SELECT FirstName, LastName, EmailAddress INTO Person.Contact2 FROM Person.Contact GO DROP TABLE Person.Contact2 两个语句都应该在AdventureWorks上生成DDL事件,接着启动LogEvents触发器。为了验证触发器是否正确地记录了这两个事件,只……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
测试审计方法
最佳的测试方法就是运行一对针对AdventureWorks数据库的DDL语句。下面的语句创建了Person、Contact2表,接着删除了表:
SELECT FirstName, LastName, EmailAddress INTO Person.Contact2 FROM Person.Contact GO DROP TABLE Person.Contact2 |
两个语句都应该在AdventureWorks上生成DDL事件,接着启动LogEvents触发器。为了验证触发器是否正确地记录了这两个事件,只需简单的运行下面的SELECT语句:
SELECT * FROM dbo.EventLog |
语句必须返回两行。在每一行,EventInstance字段都必须包含一个与具体事件相关的XML。如果查看第一行的XML,那么结果应该是这样的:
注意,事件数据包含了事件类型、创建的对象以及用于创建表格的命令和其它的信息。如果只想从EventInstance字段中检索特定的信息,可以使用XQuery表达式来访问单个元素值。比如,下面的SELECT语句使用了XML value()方法来检索事件类型、模式名和对象名:
SELECT EventID, EventInstance.value('(//EventType)[1]', 'nvarchar(30)') AS EventType, EventInstance.value('concat((//SchemaName)[1], ".", (//ObjectName)[1])', 'nvarchar(60)') AS ObjectName FROM dbo.EventLog |
正如你所看到的,我先通过指定XML数据类型定义的EventInstance字段调用了value()方法。我可以以这种方法调用任意的XML方法。value()方法包含两个参数。第一个定义了我所要检索的XML元素。第二个定义了数据类型。第一个参数必须包含在括号中,并且后面加上[1],因为value()方法总是返回标量值,。即使指定的元素是在XML(如本例子)中是唯一的也必须指定[1]。当运行这个SELECT语句时,会得到下面的结果:
EventID | EventType | ObjectName |
1 | CREATE_TABLE | Person.Contact2 |
2 | DROP_TABLE | Person.Contact2 |
(2 row(s) affected)
结果显示的是CREATE_TABLE and DROP_TABLE事件类型,这正是我所运行的DDL语句所应该产生的结果。因为SQL Server现在支持Data Definition Language (DDL)触发器,因此可以非常容易地审计由这些语句生成的事件。正如我所阐述的,一个简单的审计事件的方法就是在SQL Server上创建一个审计表,并定义一个触发器。然而,我们也可以使用DDL触发器来执行一些操作,而不是在审计表中插入一行。比如,当一个特别的DDL事件发生时,发送一封邮件到一个指定的接受者。当创建一个DDL触发器时,我们可以定义一个或多个Transact-SQL语句来完成一些特定的操作,这样就可以通过创建触发器来执行各种不同的任务。
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。
-
解决SQL服务器提示属性IsLocked不可用于登录用户的错误
在SQL Server中,权限的分配很重要。特别是在用户数量众多的数据库里面,用户权限,架构的划分经常会导致权限之间的冲突,导致无法登陆。
-
TT数据库特别推荐:SQL Server编年史
无论是菜鸟还是资深DBA,除了要掌握基本的数据库管理、操作之外,还需要对不同产品的发展历史有一个了解。