成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用SQL Server 2005DDL觸發器對數據庫進行監控

數據庫 SQL Server
我們今天是要和大家一起討論的是SQL Server 2005DDL觸發器監控數據庫的相關變化,以下就是文章的主要內容的詳細描述。

 

以下的文章主要向大家講述的是SQL Server 2005DDL觸發器監控數據庫的相關變化,添加,刪除或是修改數據庫的相關對象,一旦誤操作,可能會導致大麻煩,需要一個數據庫治理員或開發人員對相關可能受影響的實體進行代碼的重寫。

為了在數據庫結構發生變動而出現問題時,能夠跟蹤問題,定位問題的根源,我們可以利用SQL Server 2005DDL觸發器來記錄類似“用戶建立表”這種變化的操作,這樣可以大大減輕跟蹤和定位數據庫模式的變化的繁瑣程度。

 

(1)DDL觸發器介紹

DDL 觸發器是一種非凡的觸發器,它在響應數據定義語言 (DDL) 語句時觸發。它們可以用于在數據庫中執行治理任務,例如,審核以及規范數據庫操作。

(2)使用 DDL 觸發器,可以達到以下幾種目的:

A:要防止對數據庫架構進行某些更改。

B:希望數據庫中發生某種情況以響應數據庫架構中的更改。

C:要記錄數據庫架構中的更改或事件。

與標準的DML觸發器一樣,DDL 觸發器在響應事件時執行存儲過程。 但與標準的DML觸發器不同的是,它們并不在響應對表或視圖的 UPDATE、INSERT 或 DELETE 語句時執行存儲過程。 它們主要在響應數據定義語言 (DDL) 語句執行存儲過程。 這些語句包括 CREATE、ALTER、DROP、GRANT、DENY、REVOKE 和 UPDATE STATISTICS 等語句。 執行 DDL 式操作的系統存儲過程也可以激發 DDL 觸發器。

(3)如何使用DDL觸發器

第一步,需要建立一個表,用來記錄數據庫范圍內所有DDL操作。

下面的代碼在PB2K數據庫中創建一個表,用于保存所有DDL操作記錄:

  1. USE AdventureWork  
  2. GO  
  3. CREATE TABLE AuditLog  
  4. (ID INT PRIMARY KEY IDENTITY(1,1),  
  5. Command NVARCHAR(1000),  
  6. PostTime NVARCHAR(24),  
  7. HostName NVARCHAR(100),  
  8. LoginName NVARCHAR(100)  
  9. )  
  10. GO 

第二步,用于保存DDL事件的表在創建好之后,還需要建立一個SQL Server 2005DDL觸發器,監控PB2K數據庫中DDL_DATABASE_LEVEL_EVENTS級別的所有事件:

  1. CREATE TRIGGER Audit ON DATABASE  
  2. FOR DDL_DATABASE_LEVEL_EVENTS  
  3. AS  
  4. DECLARE @data XML  
  5. DECLARE @cmd NVARCHAR(1000)  
  6. DECLARE @posttime NVARCHAR(24)  
  7. DECLARE @spid NVARCHAR(6)  
  8. DECLARE @loginname NVARCHAR(100)  
  9. DECLARE @hostname NVARCHAR(100)  
  10. SET @data=EVENTDATA()  
  11. SET @cmd=@data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','NVARCHAR(1000)')  
  12. SET@cmd=LTRIM(RTRIM(REPLACE(@cmd,'','')))  
  13. SET@posttime=@data.value('(/EVENT_INSTANCE/PostTime)[1]','NVARCHAR(24)')  
  14. SET@spid=@data.value('(/EVENT_INSTANCE/SPID)[1]','nvarchar(6)')  
  15. SET@loginname=@data.value('(/EVENT_INSTANCE/LoginName)[1]',  
  16. 'NVARCHAR(100)')  
  17. SET@hostname=HOST_NAME()  
  18. INSERT INTO dbo.AuditLog(Command,PostTime,HostName,LoginName)  
  19. VALUES(@cmd,@posttime,@hostname,@loginname)  
  20. GO 

使用 EVENTDATA 函數,可以捕捉有關激發 DDL 觸發器的事件的信息,并將其保存到我們的AuditLog日志表中。EVENTDATA 函數的是返回 xml 值,采用以下的命令進行解析:

  1. SET @cmd = LTRIM(RTRIM(REPLACE(@cmd,'',''))) 

需要LTRIM和RTRIM是所有的左邊的前導空格和右邊的尾隨空格,而REPLACE函數是用來消除使用SSMS腳本向導時所帶來的回車。

第三步,一旦建立了表和觸發器,我們就可以用以下的操作,來測試看看SQL Server 2005DDL觸發器是否正常運行:

  1. UPDATE STATISTICS Production.Product  
  2. GO  
  3. CREATE TABLE dbo.Test(col INT)  
  4. GO  
  5. DROP TABLE dbo.Test  
  6. GO  
  7. --View log table  
  8. SELECT * FROM dbo.AuditLog  
  9. GO 

執行后,查詢結果如下所示:

 SQL Server 2005中使用DDL觸發器監控數據庫變化

圖1: AuditLog日志表查詢結果

(4)小結

通過創建一個日志表來保存所有DDL操作以及創建數據庫級別的SQL Server 2005DDL觸發器,我們能夠成功地捕捉我們的數據庫中所有DDL級的變化,為DBA跟蹤和監視任何改變提供了更強大的功能。

【編輯推薦】

  1. SQL Server數據庫的臨時表的正確操作步驟
  2. SQL Server存儲過程的命名標準如何進行?
  3. 卸載SQL Server 2005組件的正確順序
  4. 對SQL Server字符串數據類型的具體描述
  5. SQL Server浮點數據類型的詳細解析

 

 

 

 

責任編輯:佚名 來源: 歐特克
相關推薦

2010-06-30 09:36:25

SQL Server

2019-10-22 07:50:45

SqlServer數據庫觸發器

2010-04-19 10:43:27

SQL Server

2011-04-01 16:35:09

SQL Server數觸發器

2011-03-03 09:30:24

downmoonsql登錄觸發器

2010-09-13 16:46:10

SQL Server觸

2010-07-06 14:47:03

SQL Server數

2019-12-02 11:13:38

數據庫觸發器SQLServer

2010-09-13 17:03:34

sql server觸

2009-04-07 13:56:03

SQL Server觸發器實例

2011-08-30 16:52:22

IP訪問SQL Ser

2011-03-03 14:04:48

Oracle數據庫觸發器

2011-08-11 09:12:31

SQL Server nolock

2010-07-20 10:02:41

SQL Server

2011-03-28 15:28:03

SQL Server 數據庫

2010-07-16 14:17:18

SQL Server

2009-04-30 09:56:29

微軟SQL Server 緩存依賴

2010-06-30 13:19:17

SQL Server

2010-07-08 15:26:05

SQL Server

2010-07-22 14:46:41

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级大片免费观看 | 日本成人在线观看网站 | 热久久性| 超碰地址 | 国产成人免费在线 | 亚洲成人国产综合 | 国产欧美一区二区三区久久 | 国产精品99视频 | 6080yy精品一区二区三区 | 欧美综合一区二区三区 | 婷婷久久五月天 | av一级| 精品国产99 | 欧美大片在线观看 | 国产精品久久久久久久久久久久久 | 青娱乐av | 久草视频观看 | 午夜网址| 爱高潮www亚洲精品 中文字幕免费视频 | 午夜视频免费在线观看 | 亚洲国产精品激情在线观看 | 亚洲国产一区视频 | 国产乱码精品1区2区3区 | 中文字幕一区二区三区不卡 | 黄色大片免费网站 | 婷婷色国产偷v国产偷v小说 | 一级做a爰片性色毛片视频停止 | av日日操| 国产精品成人一区 | 日韩人体视频 | 国精日本亚洲欧州国产中文久久 | 国产精品日产欧美久久久久 | 成人国产在线视频 | 欧美精品一区二区三区在线 | 国产精品久久久久久久久久久久冷 | 国产精品大片在线观看 | 日本精品视频在线观看 | 国产乱码精品1区2区3区 | 亚洲美女一区 | 成人一区二区三区 | 成人福利在线观看 |