允许用户通过 SSMS 更新 SQL 扩展属性



我希望能够授予非管理员用户通过 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 [ADtestuser]
grant exec on sys.sp_updateextendedproperty to [ADtestuser]
grant exec on sys.sp_dropextendedproperty to [ADtestuser]

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

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

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

相关内容

  • 没有找到相关文章

最新更新