下表列出了可用于触发 DDL 触发器或事件通知的 DDL 事件。 请注意,每个事件对应于一个 Transact-SQL 语句或存储过程,其中修改了语句语法以在关键字之间包括下划线字符(_)。
重要
执行类似 DDL 操作的系统存储过程也会触发 DDL 触发器和事件通知。 测试 DDL 触发器和事件通知,以确定它们对运行的系统存储过程的响应。 例如,CREATE TYPE 语句和 sp_addtype 存储过程将触发在CREATE_TYPE事件上创建的 DDL 触发器或事件通知。
具有服务器或数据库范围的 DDL 语句
在创建触发器或事件通知的数据库中或服务器实例中的任意位置时,可以创建 DDL 触发器或事件通知,以响应以下事件。
CREATE_APPLICATION_ROLE(适用于 CREATE APPLICATION ROLE 语句和 sp_addapprole。如果创建了新架构,此事件也会触发CREATE_SCHEMA事件。 | ALTER_APPLICATION_ROLE(适用于 ALTER APPLICATION ROLE 语句和 sp_approlepassword 语句。) | DROP_APPLICATION_ROLE(适用于 DROP APPLICATION ROLE 语句和 sp_dropapprole。 |
CREATE_ASSEMBLY | ALTER_ASSEMBLY | 删除程序集 (DROP_ASSEMBLY) |
创建非对称密钥 | ALTER_ASYMMETRIC_KEY 修改非对称密钥 | DROP_ASYMMETRIC_KEY |
ALTER_AUTHORIZATION | ALTER_AUTHORIZATION_DATABASE(适用于指定 ON DATABASE 的 ALTER AUTHORIZATION 语句,以及 sp_changedbowner。) | |
创建代理优先级 | 创建_代理_优先级 | 创建代理优先级 |
CREATE_CERTIFICATE | 修改证书 | 撤销证书 |
CREATE_CONTRACT | DROP_CONTRACT | |
创建凭证 | ALTER_CREDENTIAL | 删除凭证 |
授予_数据库 | 拒绝数据库访问 | 撤销数据库 |
CREATE_DATABASE_AUDIT_SPECIFICATION | ALTER_DATABASE_AUDIT_SPEFICIATION | 拒绝数据库审核规范 |
创建数据库加密密钥 | ALTER_DATABASE_ENCRYPTION_KEY | 删除数据库加密密钥 (DROP_DATABASE_ENCRYPTION_KEY) |
创建默认 | DROP_DEFAULT | |
BIND_DEFAULT(适用于 sp_bindefault。) | UNBIND_DEFAULT(适用于 sp_unbindefault。) | |
创建事件通知 | 删除事件通知 | |
CREATE_EXTENDED_PROPERTY(适用于 sp_addextendedproperty。) | ALTER_EXTENDED_PROPERTY(适用于 sp_updateextendedproperty。) | DROP_EXTENDED_PROPERTY(适用于 sp_dropextendedproperty。) |
CREATE_FULLTEXT_CATALOG(适用于 CREATE FULLTEXT CATALOG 语句,并在指定创建时sp_fulltextcatalog)。 | ALTER_FULLTEXT_CATALOG(适用于 ALTER FULLTEXT CATALOG 语句,当指定 sp_fulltextcatalog 的 start_incremental、start_full、Stop 或 Rebuild 时,以及指定 sp_fulltext_database 的 enable 时使用。 | DROP_FULLTEXT_CATALOG(适用于 DROP FULLTEXT CATALOG 语句,并在指定 drop 时sp_fulltextcatalog)。 |
CREATE_FULLTEXT_INDEX(适用于 CREATE FULLTEXT INDEX 语句,并在指定create时sp_fulltexttable)。 | ALTER_FULLTEXT_INDEX(适用于 ALTER FULLTEXT INDEX 语句,sp_fulltextcatalog 当指定 start_full、start_incremental 或 stop 时,sp_fulltext_column,以及当指定除 create 或 drop 以外的任何操作时 sp_fulltext_table)。 | DROP_FULLTEXT_INDEX(适用于 DROP FULLTEXT INDEX 语句及指定 drop 时使用的sp_fulltexttable)。 |
创建全文停止列表 | ALTER_FULLTEXT_STOPLIST | DROP_FULLTEXT_STOPLIST |
创建函数 | ALTER_FUNCTION | 删除函数 |
创建索引 | ALTER_INDEX(适用于 ALTER INDEX 语句和 sp_indexoption。) | 删除索引 (DROP_INDEX) |
创建主密钥 | ALTER_MASTER_KEY | 删除主密钥 |
CREATE_MESSAGE_TYPE | ALTER_MESSAGE_TYPE | 删除消息类型 |
CREATE_PARTITION_FUNCTION | ALTER_PARTITION_FUNCTION(修改分区函数) | 删除分区函数 |
创建分区方案 | 更改分区方案 | DROP_PARTITION_SCHEME |
CREATE_PLAN_GUIDE(适用于 sp_create_plan_guide。) | ALTER_PLAN_GUIDE(在指定 ENABLE、ENABLE ALL、DISABLE 或 DISABLE ALL 时适用于 sp_control_plan_guide 。 | DROP_PLAN_GUIDE(适用于sp_control_plan_guide在指定 DROP 或 DROP ALL 时)。 |
CREATE_PROCEDURE | ALTER_PROCEDURE(适用于 ALTER PROCEDURE 语句和 sp_procoption。) | DROP_PROCEDURE |
创建队列 | 修改队列 | DROP_QUEUE |
创建远程服务绑定 | 更改_远程_服务_绑定 | 删除远程服务绑定 |
创建空间索引 | ||
RENAME (适用于 sp_rename) | ||
CREATE_ROLE(适用于 CREATE ROLE 语句、 sp_addrole和 sp_addgroup。 | 修改角色 | DROP_ROLE(适用于 DROP ROLE 语句、 sp_droprole和 sp_dropgroup。 |
添加角色成员 | 删除角色成员 | |
创建_路径 | ALTER_ROUTE | 删除路线 |
创建规则 | DROP_RULE | |
BIND_RULE(适用于 sp_bindrule。 | UNBIND_RULE(适用于 sp_unbindrule。 | |
CREATE_SCHEMA(适用于 CREATE SCHEMA 语句、 sp_addrole、 sp_adduser、 sp_addgroup和 sp_grantdbaccess。 | ALTER_SCHEMA(适用于 ALTER SCHEMA 语句和 sp_changeobjectowner。) | 删除模式 (DROP_SCHEMA) |
创建搜索属性列表 | 修改搜索属性列表 | 删除搜索属性列表 |
创建序列事件 | 创建序列事件 | 创建序列事件 |
创建服务器角色 | ALTER_SERVER_ROLE | 删除服务器角色 |
CREATE_SERVICE | ALTER_SERVICE | 服务取消 |
ALTER_SERVICE_MASTER_KEY | BACKUP_SERVICE_MASTER_KEY | 恢复服务主密钥 |
ADD_SIGNATURE(用于非架构范围内对象的签名操作: 数据库、程序集、触发器) | 删除签名 | |
ADD_SIGNATURE_SCHEMA_OBJECT(适用于架构范围对象;存储过程、函数) | 删除签名模式对象 | |
创建空间索引 | ALTER_INDEX可用于空间索引。 | DROP_INDEX可用于空间索引。 |
创建统计信息 | DROP_STATISTICS (删除统计数据) | 更新统计数据 |
创建对称密钥 | 修改对称密钥 | DROP_SYMMETRIC_KEY |
CREATE_SYNONYM | DROP_SYNONYM | |
创建表 | ALTER_TABLE(适用于 ALTER TABLE 语句和 sp_tableoption。) | DROP_TABLE |
CREATE_TRIGGER | ALTER_TRIGGER(适用于 ALTER TRIGGER 语句和 sp_settriggerorder。) | 删除触发器 |
CREATE_TYPE(适用于 CREATE TYPE 语句和 sp_addtype。) | DROP_TYPE(适用于 DROP TYPE 语句和 sp_droptype。 | |
CREATE_USER(适用于 CREATE USER 语句、 sp_adduser和 sp_grantdbaccess。) | ALTER_USER(适用于 ALTER USER 语句和 sp_change_users_login。) | DROP_USER(适用于 DROP USER 语句、 sp_dropuser和 sp_revokedbaccess。 |
CREATE_VIEW | ALTER_VIEW | DROP_VIEW |
CREATE_XML_INDEX | ALTER_INDEX可用于 XML 索引。 | DROP_INDEX可用于 XML 索引。 |
创建_XML_模式_集合 | 更改_XML_架构_集合 | 删除_XML_模式集合 |
具有服务器范围的 DDL 语句
可以在服务器实例中的任何位置触发 DDL 触发器或事件通知,以响应以下事件。
更改授权服务器 | 更改服务器配置 | ALTER_INSTANCE(适用于 sp_configure 和 sp_addserver 当指定本地服务器实例时)。 |
CREATE_AVAILABILITY_GROUP(创建可用性组) | ALTER_AVAILABILITY_GROUP | 请删除可用性组 (DROP_AVAILABILITY_GROUP) |
创建凭证 | ALTER_CREDENTIAL | 删除凭证 |
CREATE_CRYPTOGRAPHIC_PROVIDER(创建加密提供程序) | ALTER_CRYPTOGRAPHIC_PROVIDER(修改加密提供程序) | 删除加密提供者 |
CREATE_DATABASE | ALTER_DATABASE(适用于 ALTER DATABASE 语句和 sp_fulltext_database。) | DROP_DATABASE |
创建端点 | ALTER_ENDPOINT | 删除端点 |
创建事件会话 | 修改事件会话 | 删除事件会话 |
CREATE_EXTENDED_PROCEDURE(适用于 sp_addextendedproc。) | DROP_EXTENDED_PROCEDURE(适用于 sp_dropextendedproc。) | |
CREATE_LINKED_SERVER(适用于 sp_addlinkedserver。) | ALTER_LINKED_SERVER(适用于 sp_serveroption)。 | DROP_LINKED_SERVER(当指定链接服务器时适用于 sp_dropserver)。 |
CREATE_LINKED_SERVER_LOGIN(适用于sp_addlinkedsrvlogin。) | DROP_LINKED_SERVER_LOGIN(适用于 sp_droplinkedsrvlogin。) | |
CREATE_LOGIN(适用于在必须隐式创建的不存在登录名上使用的 CREATE LOGIN 语句、 sp_addlogin、 sp_grantlogin、 xp_grantlogin和 sp_denylogin )。 | ALTER_LOGIN(适用于 ALTER LOGIN 语句,当指定Auto_Fix时,适用于sp_defaultdb、sp_defaultlanguage、sp_password和sp_change_users_login)。 | DROP_LOGIN(适用于 DROP LOGIN 语句、 sp_droplogin、 sp_revokelogin和 xp_revokelogin。 |
CREATE_MESSAGE(适用于 sp_addmessage。 | ALTER_MESSAGE(适用于 sp_altermessage。) | DROP_MESSAGE(适用于 sp_dropmessage。 |
CREATE_REMOTE_SERVER(适用于 sp_addserver。) | ALTER_REMOTE_SERVER(适用于 sp_setnetname。 | DROP_REMOTE_SERVER(适用于指定远程服务器时的sp_dropserver)。 |
创建资源池 | ALTER_RESOURCE_POOL | DROP_RESOURCE_POOL(删除资源池) |
GRANT_SERVER | 拒绝服务器 | REVOKE_SERVER |
添加服务器角色成员 | 删除服务器角色成员 | |
CREATE_SERVER_AUDIT(创建服务器审核) | ALTER_SERVER_AUDIT | 删除服务器审核 |
创建服务器审核规范 | ALTER_SERVER_AUDIT_SPECIFICATION | 删除服务器审核规范 |
创建工作负载组 (CREATE_WORKLOAD_GROUP) | 创建负载组 | CREATE_WORKLOAD_GROUP |