SQL Server扩展属性权限

meh*_*tfi 6 sql-server sql-server-2008 sql-server-2008-r2

我使用SQL Server 2008 R2并希望拥有一个用于数据库文档的用户.

此用户只能向所有数据库对象(如数据库,表,视图和列)添加说明.

我必须为此用户分配哪个权限?

我不想为该用户分配db_ownerdb_ddladmin角色.

提前致谢.

ste*_*ary 5

因此,要将扩展属性添加到对象,您需要拥有该对象或对该对象具有 CONTROL 或 ALTER 权限。

因此,您不能真正将具有内置权限的用户限制为仅添加扩展属性,如在数据库上添加扩展属性,您必须在该级别授予该用户的所有者、控制权或更改权限。

您可以做的是创建自己的存储过程,以使用相同的参数执行系统存储过程,并将其设置为以所有者身份执行,然后将对该过程的执行授予用户。这样,除了运行仅添加扩展属性的过程之外,他们无法在数据库中执行任何操作。

我已经测试了以下内容并且确实有效:

CREATE PROCEDURE add_property
(
@name NVARCHAR(128) = NULL,
@value NVARCHAR(128) = NULL,
@level0type NVARCHAR(128) = NULL,
@level0name NVARCHAR(128) = NULL,
@level1type NVARCHAR(128) = NULL,
@level1name NVARCHAR(128) = NULL,
@level2type NVARCHAR(128) = NULL,
@level2name NVARCHAR(128) = NULL
)
WITH EXECUTE AS OWNER
AS
EXEC sp_addextendedproperty 
@name, 
@value,
@level0type, 
@level0name,
@level1type, 
@level1name,
@level2type,
@level2name;
Run Code Online (Sandbox Code Playgroud)