WEB开发网
开发学院数据库MSSQL Server SQL Server 2005 内置工具建审查系统 阅读

SQL Server 2005 内置工具建审查系统

 2007-05-17 09:34:37 来源:WEB开发网   
核心提示: 在SQL Server 2005中,通过运行CREATE DATABASE DDLTriggerTest语句建立一个审查索引数据库,SQL Server 2005 内置工具建审查系统(2),然后定义下列域:IDCol SMALLINT IDENTITY(1,1) PRIMARY KEY,X

在SQL Server 2005中,通过运行CREATE DATABASE DDLTriggerTest语句建立一个审查索引数据库,然后定义下列域:

IDCol SMALLINT IDENTITY(1,1) PRIMARY KEY,
XMLEvent XML
DatabaseName VARCHAR(50)
SystemUser VARCHAR(50)
EntryDate DATETIME DEFAULT (GETDATE())

注意表格中利用了XML数据类型,这是SQL Server 2005中新增的功能。顾名思义,它的作用是保存XML数据。

一旦表格做好准备追踪事件,就可以建立必要的触发器来监控这些事件。第一步,我们的解决方案寻找服务器上发生的注册事件,包括任何建立注册(CREATE LOGIN)、修改注册(ALTER LOGIN)与删除注册(DELETE LOGIN)事件。运行以下脚本来建立触发器:

CREATE TRIGGER tr_Security
ON ALL SERVER
For DDL_LOGIN_EVENTS
AS
BEGIN
?INSERT INTO DDLTriggerTest..
EventtableData(XMLEvent, DatabaseName, SystemUser)
?VALUES (EVENDATA(), DB_NAME(), SYSTEM_USER)
END

这段脚本建立一个触发器,宣称我们希望寻找服务器上发生的所有DDL注册事件。启动触发器所得到的信息将进入我们前面建立的DDLTriggerTest表格中。注意,我们使用三个函数将数据插入表格中。在此例中,EVENTDATA函数将收集与注册有关的信息,因为它是FOR DDL_LOGIN_EVENTS语句指定的事件。SYSTEM_USER函数执行当前语句,返回注册。而且,如你所猜测的,DB_NAME()函数返回执行当前语句的数据库的名称。由于建立一个注册是一个服务器级事件,我们的审查索引记录下发生在主数据库中的语句。

为测试新的触发器,我们必须在服务器上提出一个LOGIN事件。执行CREATE LOGIN TestLogin WITH PASSWORD = '123456xxYYbaz这样的命令,是建立一个新注册的最简单方法。

运行该语句后,如果我们查看信息窗口,就可看到信息(1行受影响)。由于我们安排好审查,所以此语句才会发生。当我们在服务器上运行CREATE LOGIN语句时,DDL触发器被启动,一项记录插入到DDLTriggerTest数据库的EventTableData表格中。

XML中有什么?

你可以在DDLTriggerTest表格中运行SELECT查询来证明我们向表格中写入了记录。如果你习惯应用SQL Server 2000,那么XMLEvent一栏中的数据可能对你来说有些陌生。在SQL Server Management Studio (SSMS)中,点击XMLEvent一栏中的链接即可查看它包含的XML数据。

XMLEvent域由EVENTDATA()函数从触发器中的INSERT语句中移植过来。在这种情况下,EVENTDATA()函数返回与注册有关的XML数据,包括注册的时间与日期、服务器名称、用户ID与机器系统ID。

刚刚开始

DDL_LOGIN_EVENT触发器只是有助于证明系统安全,你能够进行监控的60多个DDL事件中的一个。其它Sarbanes-Oxley审查感兴趣的事件包括:建立或终止其它数据库对象,如表格、程序、触发器、概念、函数等。

在本文中,我们的讨论仅限于服务器级事件。在以后的文章中,我将说明一个追踪数据库级事件的触发器。我还将向你展示那些触发器如何执行追踪事件以外的功能——实际上,它们可阻止你不想发生的未授权的事件在数据库中出现。

上一页  1 2 

Tags:SQL Server 内置

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接