WEB开发网
开发学院数据库MSSQL Server 审计SELECT 语句的SQL Server 2008 T-SQL命令 阅读

审计SELECT 语句的SQL Server 2008 T-SQL命令

 2009-01-05 10:18:35 来源:WEB开发网   
核心提示:SQL Server 2008中的SQL审计已经变成一个一流的服务器对象,正如前面一篇文章所提到的,审计SELECT 语句的SQL Server 2008 T-SQL命令,现在你甚至可以审计一个要求使用SQL跟踪或者在前面版本中的其它第三方产品的SELECT语句查询,但是,这将会读取我们在参数中指定的文件夹的可用审计文

SQL Server 2008中的SQL审计已经变成一个一流的服务器对象。正如前面一篇文章所提到的,现在你甚至可以审计一个要求使用SQL跟踪或者在前面版本中的其它第三方产品的SELECT语句查询。但是,虽然使用图形用户界面对于处理小的任务是很好的,尤其是第一次学习一些东西时,但是这样做可能是很乏味的,尤其是如果你重复相同的任务时。这篇文章将和前面的文章一样通过同类的Transact-SQL语句使用相同的例子。如果你想审计,我们可以假设审计在数据库中10个或者更多的表,那么这会使你更容易地做到。我也将使用文件系统来存储审计对象。我们将使用CREATE SERVER AUDIT完成这个任务。      -- Create Server Audit object
  USE master
  CREATE SERVER AUDIT testAudit TO FILE(FILEPATH='C:TempSelectAudit')
  GO

这个服务器审计对象负责搜集你想监测的服务器和/或者数据库级别的行为和行为组并且在实例级别上创建。这也意味着如果你有很多实例在一个服务器上运行,那么你要为每个实例创建服务器审计对象。接着,我们将在适当的数据库中创建一个叫做testAudSpec的数据库审计规范,在本例中,我们将使用AdventureWorks数据库。我们将使用CREATE DATABASE AUDIT SPECIFICATION语句来完成这个任务。     -- Create an audit specification
  USE AdventureWorks
  GO
  CREATE DATABASE AUDIT SPECIFICATION testAudSpec FOR SERVER AUDIT testAudit
  ADD (SELECT ON HumanResources.Employee BY Public)
  GO

在这里我们所作的是只创建一个数据库审计规范并把它分配到我们之前创建的服务器审计对象中。然后,我们增添数据库级别的可审计的行为名称,在本例中是SELECT语句,然后捕捉所有用户执行的查询。你可以有多个行为或者行为组以及相关的数据库审计规范。你也可以创建一个服务器审计规范,它可以审计服务器级别的行为或行为组,比如跟踪成功或失败的登录,更改角色成员等。SQL Server审计行为组和行为的列表可以从联机帮助和MSCN中得到。

由于默认情况下服务器审计对象和数据库审计规范在创建之后都不能使用,我们需要使它们可用。要验证它们的状态,你可以查询sys.server_file_audits和

sys.database_audit_specifications系统对象。is_state_enabled字段能告诉我们它们的状态。

   -- Verify Audit objects if turned on (1 = Enabled)
  USE master
  SELECT is_state_enabled,* FROM sys.server_file_audits
  USE AdventureWorks
  SELECT is_state_enabled,* FROM sys.database_audit_specifications
  GO

审计SELECT 语句的SQL Server 2008 T-SQL命令

要使服务器审计对象和数据库审计规范可用,我们可以运行下面的代码:

   -- Turn on Audit
  USE master
  ALTER SERVER AUDIT testAudit WITH (STATE=ON)
  GO
  USE AdventureWorks
  ALTER DATABASE AUDIT SPECIFICATION testAudSpec WITH (STATE=ON)
  GO

这样就大功告成了。我们使用Transact-SQL在SQL Server 2008中创建审计对象。我们甚至可以使用Transact-SQL读取审计文件。     SELECT session_server_principal_name, statement, *
  FROM fn_get_audit_file ('C:TempSelectAudit*',NULL, NULL)

审计SELECT 语句的SQL Server 2008 T-SQL命令

图二

我们使用fn_get_audit_file函数从我们之前在服务器审计对象中创建的审计文件中找到信息。注意我们使用一个通配符 – 星号(*)-以便传递产生的审计文件的文件名,因为我们不能准确地知道完整的文件名。这将会读取我们在参数中指定的文件夹的可用审计文件。如果我们知道确切地路径和文件名,那么我们也能够读取一个指定的审计对象。

Tags:审计 SELECT 语句

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