Sql server SQL Server扩展属性权限
我使用SQL Server 2008 R2,并希望有一个数据库文档用户 此用户只能向所有数据库对象(如数据库、表、视图和列)添加说明 我必须为该用户分配哪个权限 我不想将Sql server SQL Server扩展属性权限,sql-server,sql-server-2008,sql-server-2008-r2,Sql Server,Sql Server 2008,Sql Server 2008 R2,我使用SQL Server 2008 R2,并希望有一个数据库文档用户 此用户只能向所有数据库对象(如数据库、表、视图和列)添加说明 我必须为该用户分配哪个权限 我不想将db_owner或db_ddladmin角色分配给该用户 提前感谢。因此,要向对象添加扩展属性,您需要拥有该对象,或者拥有该对象的控制或更改权限 因此,您不能真正限制具有内置权限的用户仅添加扩展属性。要在数据库上添加扩展属性,您必须在该级别向用户授予所有者、控制权或更改权 不过,您可以创建自己的存储过程,以使用相同的参数执行系统
db_owner
或db_ddladmin
角色分配给该用户
提前感谢。因此,要向对象添加扩展属性,您需要拥有该对象,或者拥有该对象的控制或更改权限 因此,您不能真正限制具有内置权限的用户仅添加扩展属性。要在数据库上添加扩展属性,您必须在该级别向用户授予所有者、控制权或更改权 不过,您可以创建自己的存储过程,以使用相同的参数执行系统存储过程,并将其设置为以所有者身份执行,然后将该过程上的execute授予用户。这样,除了运行只添加扩展属性的过程之外,他们无法在数据库中执行任何操作 我已经测试了以下各项,它确实有效:
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;
无论是否使用工具,都可以添加用户对数据库具有修改权限所需的描述(请查看工具的文档): 系统存储过程sp_addextendedproperty、fn_listedxtendedproperties和sp_dropextendedproperty的EXEC权限 从msft网站: 用于: db_所有者和db_ddladmin固定数据库角色的成员可以添加 将属性扩展到任何对象,但以下情况除外: db_ddladmin无法向数据库本身或用户添加属性 或者角色。用户可以将扩展属性添加到他们拥有的对象或 对具有更改或控制权限 用于: db_owner和db_ddladmin固定数据库角色的成员可能会删除 任何对象的扩展属性。用户可以删除扩展属性 他们拥有的物品。但是,只有db_所有者可以将属性删除到 用户名
希望这个问题对你有所帮助,但我更适合感谢你。但我使用诸如Redgate SQL Doc 2和SQL Spec之类的数据库文档工具,不能使用存储过程来限制我的用户。