定制数据库角色

时间:2014-07-09 17:37:31

标签: sql sql-server tsql sql-server-2008-r2

我想为某些用户创建一个角色,以便能够创建,修改和删除自己的视图。为了跟踪它们可以使用的内容,我在考虑使用特定前缀的命名约定,例如'MYVIEW_'。但我不确定如何编写GRANT语句来完成此任务。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以创建DDL triggers。每当修改DB模式时都会发生DDL触发器。 (DDL =数据定义语言,即T-SQL语言的一部分,允许创建,更改,删除等所有类型的数据库对象,如表,视图,索引,触发器......即任何改变数据库模式的东西)

在DDL触发器内部,您可以看到用户名,尝试的命令等,并根据用户是谁以及他在做什么来回滚操作。在这里,您可以看到how to get the user name, databae, schema and object names, and other info of the executed DDL command

请记住,使ROLLBACK足以中止DDL操作,即避免更改。

通过这种方式,您可以限制特定用户可以执行的操作。您还可以创建一个包含用户及其可以执行的操作的表,并从触发器代码中查看用户的权限。通过这种方式,您可以为多个用户使用单个触发器,并使其更易于维护。即,在您的触发器代码中,查找该表中的用户以查看是否需要应用该控件。

如果不允许用户进行操作,建议PRINT消息,告知他原因。