av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

SQLServer2005數(shù)據(jù)庫中的DDL觸發(fā)器描述

以下的文章主要描述的是SQL Server 2005數(shù)據(jù)庫中的DDL觸發(fā)器,我們大家都知道SQL Server 2005數(shù)據(jù)庫中,其新增加了許多新的相關(guān)特性,其中的DDL觸發(fā)器可以說是個(gè)不錯(cuò)的選擇,根據(jù)資料初步學(xué)習(xí)如下,現(xiàn)整理之:

成都創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元銅官做網(wǎng)站,已為上家服務(wù),為銅官各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

在SQL Server 2000中,只能為針對(duì)表發(fā)出的 DML 語句(INSERT、UPDATE 和 DELETE)定義 AFTER 觸發(fā)器。SQL Server 2005 可以就整個(gè)服務(wù)器或數(shù)據(jù)庫的某個(gè)范圍為 DDL 事件定義觸發(fā)器??梢詾閱蝹€(gè) DDL 語句(例如,CREATE_TABLE)或者為一組語句(例如,DDL_DATABASE_LEVEL_EVENTS)定義 DDL 觸發(fā)器。

在該觸發(fā)器內(nèi)部,您可以通過訪問 eventdata() 函數(shù)獲得與激發(fā)該觸發(fā)器的事件有關(guān)的數(shù)據(jù)。該函數(shù)返回有關(guān)事件的 XML 數(shù)據(jù)。每個(gè)事件的架構(gòu)都繼承了 Server Events 基礎(chǔ)架構(gòu)。

比如,在SQL Server 2005中,建立一個(gè)叫DDLTrTest 的數(shù)據(jù)庫,并且建立一個(gè)叫mytable的表

和Usp_Querymytable 的存儲(chǔ)過程,如下所示

 
 
 
  1. DROP DATABASE [DDLTRTEST] 
  2. GO 
  3. CREATE DATABASE DDLTRTEST 
  4. GO 
  5. USE [DDLTRTEST] 
  6. GO 
  7. IF EXISTS (SELECT * FROM SYS.OBJECTS 
  8. WHERE OBJECT_IDOBJECT_ID = OBJECT_ID(N'[DBO].[MYTABLE]') 
  9. AND TYPE IN (N'U')) 
  10. DROP TABLE [DBO].[MYTABLE] 
  11. GO 
  12. CREATE TABLE MYTABLE(ID INT, NAME VARCHAR(100)) 
  13. GO 
  14. INSERT INTO MYTABLE SELECT 1,'A' 
  15. INSERT INTO MYTABLE SELECT 2,'B' 
  16. INSERT INTO MYTABLE SELECT 3,'C' 
  17. INSERT INTO MYTABLE SELECT 4,'D' 
  18. INSERT INTO MYTABLE SELECT 5,'E' 
  19. INSERT INTO MYTABLE SELECT 6,'F' 
  20. GO 
  21. USE [DDLTrTest] 
  22. GO 
  23. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = 
  24. OBJECT_ID(N'[dbo].[usp_querymytable]') 
  25. AND type in (N'P', N'PC')) 
  26. DROP PROCEDURE [dbo].[usp_querymytable] 
  27. GO 
  28. CREATE PROC USP_QUERYMYTABLE 
  29. AS 
  30. SELECT * FROM MYTABLE 
  31. GO

接下來定義一個(gè)DDL觸發(fā)器如下

 
 
 
  1. CREATE TRIGGER STOP_DDL_on_Table_and_PROC
  2. ON DATABASE 
  3. FOR CREATE_TABLE,DROP_TABLE, 
  4. ALTER_TABLE,CREATE_PROCEDURE,
  5. ALTER_PROCEDURE,DROP_PROCEDURE
  6. AS 
  7. SELECT EVENTDATA().value
  8. ('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]',
  9. 'nvarchar(max)')
  10. PRINT 'You are not allowed to CREATE,ALTER and DROP 
  11. any Tables and Procedures' 
  12. ROLLBACK;

接下來,我們嘗試如下的操作:

 
 
 
  1. ALTER TABLE MYTABLE ADD X INT 

結(jié)果如下,出現(xiàn)錯(cuò)誤提示

 
 
 
  1. ALTER TABLE MYTABLE ADD X INT 
  2. (1 row(s) affected) 
  3. You are not allowed to CREATE,ALTER and DROP any Tables and Procedures 
  4. Msg 3609, Level 16, State 2, Line 1 
  5. The transaction ended in the trigger. The batch has been aborted. 

再執(zhí)行SQL Server 2005DROP的操作,同樣觸發(fā)警告

 
 
 
  1. DROP TABLE MYTABLE
  2. (1 row(s) affected)
  3. You are not allowed to CREATE,ALTER and DROP any Tables and Procedures
  4. Msg 3609, Level 16, State 2, Line 1
  5. The transaction ended in the trigger. The batch has been aborted.

因?yàn)槲覀兊挠|發(fā)器規(guī)定了不能使用

 
 
 
  1. CREATE_TABLE,DROP_TABLE, 
  2. ALTER_TABLE,CREATE_PROCEDURE,
  3. ALTER_PROCEDURE,DROP_PROCEDURE

等操作。 如果我們要關(guān)掉這個(gè)觸發(fā)器,可以這樣做: DISABLE TRIGGER STOP_DDL_ON_TABLE_AND_PROC

ON DATABASE 當(dāng)然,我們要對(duì)整個(gè)服務(wù)器采取策略的話,也是很簡單的,和上面的方法大致相同只不過將on database的參數(shù)改為on server,比如 CREATE TRIGGER

 
 
 
  1. STOP_DDL_on_Table_and_PROC
  2. ON ALL SERVER
  3. FOR CREATE_DATABASE,ALTER_DATABASE,DROP_DATABASE
  4. AS 
  5. PRINT 'You are not allowed to CREATE,ALTER and DROP any Databases' 
  6. ROLLBACK;

 以上的相關(guān)內(nèi)容就是對(duì)SQL Server 2005中的DDL觸發(fā)器的介紹,望你能有所收獲。


當(dāng)前文章:SQLServer2005數(shù)據(jù)庫中的DDL觸發(fā)器描述
路徑分享:http://uogjgqi.cn/article/dhjggep.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流