2

我希望能够授予非管理员用户通过 SSMS 添加/更新数据库中对象的 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]

在主数据库上下文中授予此权限。但是,我仍然得到:“消息 1088,级别 16,状态 30,过程 sp_updateextendedproperty,第 36 行找不到对象“dbo.Table_1”,因为它不存在或您没有权限。” 当我尝试通过 SSMS 更改作为该测试用户的扩展属性时。任何建议如何使这项工作?

4

1 回答 1

0

对于它的价值,我正在为我们的数据仓库团队创建一个基于 Web 的应用程序来执行此操作。我有一个 SQL 用户帐户可以从选择中访问数据库。到目前为止,我看到的最低权限是Alter SchemaView Definitions。这是为单个用户设置的,该用户将添加到应用程序可用的每个数据库中。MSSMS 用于查看和编辑扩展属性的过程正在我创建的过程中使用,因此我可以使用不同的属性值,具体取决于它们是在处理模式、表还是列值。用户对这些具有执行权限。它们都驻留在控制 Web 应用程序的中央数据库中。

即使使用链接服务器,它也可以正常工作,但不确定是否有一些更严格的东西。

于 2013-11-21T22:28:00.790 回答