编写列级权限脚本时,SSMS 18.4是否存在错误?

时间:2019-11-19 21:09:42

标签: sql-server permissions ssms

我正在针对SQL Server 2016 Enterprise Edition运行SSMS 18.4。

我使用GUI编辑器在表上设置列级权限,然后将更改脚本化为新查询窗口以执行权限更改。执行生成的SQL之后,我刷新并打开了相关用户组的属性窗口,并注意到在表的可用列列表中并非所有要选择的列都可供访问。我返回查看代码,SSMS在我授予权限的列列表的中间插入了错误的REVOKE语句。我只重复了几次这个问题。似乎不一致,因此我正在与社区联系以确保这不是我正在做的事情。我只有在使用列级权限时才看到此消息。

我完成的步骤得到了不希望的行为。

数据库>安全性>用户组>属性

突出显示对象名称(表或视图)。

检查授予的选择权限。

单击“列权限”按钮。

在GRANT框中选中特定列,然后单击OK。

对新查询窗口的脚本操作。

生成的SQL中断了某些列的设置期望的权限。或整个对象(如果SSMS将REVOKE放在所有GRANT语句的末尾)。

use [Database]
GO
GRANT SELECT ON Schema.[Table] ([Column1]) TO [User Group] 
GO

use [Database]
GO
GRANT SELECT ON Schema.[Table] ([Column2]) TO [User Group] 
GO
use [Database]
GO
REVOKE SELECT ON Schema.[Table] TO [User Group] 
GO
use [Database]
GO
GRANT SELECT ON Schema.[Table] ([Column3]) TO [User Group] 
GO
use [Database]
GO
GRANT SELECT ON Schema.[Table] ([Column4]) TO [User Group] 
GO
use [Database]
GO
GRANT SELECT ON Schema.[Table] ([Column5]) TO [User Group] 
GO

如您所见,中间的REVOKE只会授予对最后三列而不是前两列的SELECT权限。

0 个答案:

没有答案