如何检查当前用户是否有权在当前数据库上创建DDL触发器?

时间:2015-09-07 15:02:38

标签: sql sql-server

我正在尝试使用以下方式获取有关当前用户权限的信息:

SELECT HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'CREATE TABLE')

SELECT HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'CREATE PROCEDURE')

这很好。

CREATE TRIGGER的正确语法是什么?

我试过了:

SELECT HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'CREATE TRIGGER') 

几乎没有运气的变化。我正在使用SQL Server 2012。

感谢。

1 个答案:

答案 0 :(得分:3)

CREATE TRIGGER权限不存在。

检查this page以查看允许使用CREATE TRIGGER的所需权限。

  

要创建DML触发器,需要对表或视图具有ALTER权限   在哪个触发器上创建。

     

使用创建DDL触发器   服务器范围(ON ALL SERVER)或登录触发器需要CONTROL   服务器上的SERVER权限。使用数据库创建DDL触发器   scope(ON DATABASE)需要ALTER ANY DATABASE DDL TRIGGER权限   在当前的数据库中。