我希望能够授予非管理员用户通过 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 更改作为该测试用户的扩展属性时。任何建议如何使这项工作?