我希望能够授予非管理员用户通过SSMS为DB中的对象添加/更新SQL扩展属性的能力。
我一直在寻找简单的解决方案(虽然我愿意接受建议),并且出于易用性的原因,SSMS对我们来说是最好的(有问题的用户已经使用它,这是唯一简单的方法看到并更新现有的扩展属性,它需要很少/没有代码......)
我读到用户应该需要ALTER或CONTROL来改变它们,但是我希望能够解决这个问题,显然不能给普通用户这么多的许可。
查看SSMS用于更新这些脚本的脚本,它只是:
USE [DatabaseName]
GO
EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'This is test
description 1.' , @level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'TABLE',@level1name=N'Table_1'
据我所知,您可以授予对用户通常无权执行操作的存储过程的访问权限。我能够使用:
grant exec on sys.sp_addextendedproperty to [AD\testuser]
grant exec on sys.sp_updateextendedproperty to [AD\testuser]
grant exec on sys.sp_dropextendedproperty to [AD\testuser]
在主DB上下文中授予此权限。但是,我仍然得到: “Msg 1088,Level 16,State 30,Procedure sp_updateextendedproperty,Line 36 找不到对象“dbo.Table_1”,因为它不存在或者您没有权限。“当我尝试通过SSMS将此扩展属性更改为此testuser时。有任何建议如何使其工作吗?
答案 0 :(得分:0)
为了它的价值,我正在为我们的数据仓库团队创建一个基于Web的应用程序。我有一个SQL用户帐户来从选择中访问数据库。到目前为止,我看到的最低权限是 Alter Schema 和查看定义。这是为单个用户设置的,该用户被添加到应用程序可用的每个数据库中。 MSSMS用于查看和编辑扩展属性的过程正在我创建的过程中使用,因此我可以使用不同的属性值,具体取决于它们是否正在处理Schema,Table或Column值。用户具有执行权限。它们都驻留在一个控制Web应用程序的中央数据库中。
即使使用链接服务器也能正常工作,但不确定是否有更紧凑的东西。