2012年3月16日 星期五

SQL Audit測試

使用SQL Audit,測試版本為2008 SP3

--1.建立稽核並啟用
USE [master]
GO

/****** Object:  Audit [Audit-DEMO-0311]    Script Date: 03/15/2012 00:03:37 ******/
CREATE SERVER AUDIT [Audit-DEMO-0311]
TO FILE
(         FILEPATH = N'D:\TEMP\'
           ,MAXSIZE = 0 MB
           ,MAX_ROLLOVER_FILES = 2147483647
           ,RESERVE_DISK_SPACE = OFF
)
WITH
(         QUEUE_DELAY = 1000
           ,ON_FAILURE = CONTINUE
           ,AUDIT_GUID = '0f9b0a5b-478d-4b3b-90cf-2b68b8657e81'
)
GO

執行完成後,會在安全性中看到一個新的稽核(Audit-DEMO-0311),接著啟用它。


--2.建立資料庫稽核規格


USE [北風貿易]
GO

CREATE DATABASE AUDIT SPECIFICATION [北風貿易]
FOR SERVER AUDIT [Audit-DEMO-0311]
ADD (DATABASE_OBJECT_PERMISSION_CHANGE_GROUP),
ADD (DELETE ON OBJECT::[dbo].[AduitTable] BY [dbo]),
ADD (EXECUTE ON OBJECT::[dbo].[AduitTable] BY [dbo]),
ADD (INSERT ON OBJECT::[dbo].[AduitTable] BY [dbo]),
ADD (SELECT ON OBJECT::[dbo].[AduitTable] BY [dbo]),
ADD (UPDATE ON OBJECT::[dbo].[AduitTable] BY [dbo])
WITH (STATE = ON)
GO


執行完成後,會在北風貿易資料庫的安全性è資料庫稽核規格會看到一個名稱為北風貿易的稽核規格,接著啟用它。


--3.執行測試指令並觀看稽核結果
SELECT * FROM dbo.AduitTable
WHERE Column1='TEST2'
發現稽核的語法變成
SELECT * FROM [dbo].[AduitTable] WHERE [Column1]=@1
實際的值TEST2則是看不到。

上網查了一下,發現這是一個Bug,要上Service Pack才能解決這個問題,於是我將SQL SERVER安裝了SP3,安裝完成後,發現之前的問題解決了。
 接著測試宣告變數
--4.執行宣告變數的SQL指令,並觀看結果
DECLARE @Column1 VARCHAR(10)
SET @Column1='2'
SELECT * FROM AduitTable
WHERE Column1=@Column1


稽核結果只有變數名稱,但沒有實際資料值。

後來在討論區看到這個問題sql server 2008尚未解決,結果只好自己摸摸鼻子寫trigger或用cdc了,真希望微軟能快快解決這個問題。

PsSQL SERVER 2008 R2 SP1的版本好像也是一樣。

沒有留言:

張貼留言