我正在使用 SQL Server 2014
. 我要否认 SELECT
特定用户对一组表的权限。
我有下面的代码可以完成这项工作,但我需要为每个相关表运行它:
USE [MyDatabase]
DENY SELECT ON [mktg_Rating] TO [xxxxx\User]
假设我必须拒绝特定用户对所有以“mktg\…”开头的表的select权限,我如何一次性重新编写上述代码?
我正在使用 SQL Server 2014
. 我要否认 SELECT
特定用户对一组表的权限。
我有下面的代码可以完成这项工作,但我需要为每个相关表运行它:
USE [MyDatabase]
DENY SELECT ON [mktg_Rating] TO [xxxxx\User]
假设我必须拒绝特定用户对所有以“mktg\…”开头的表的select权限,我如何一次性重新编写上述代码?
2条答案
按热度按时间dpiehjr41#
如果所有表都存在于它们自己的模式中,并且该模式中没有其他对象,则可以使用
schema::yourSchemaNameHere
除此之外,一句话也没办法做到。不能使用通配符等。但您可以通过使用动态管理视图做一些有趣的事情,让sql为您生成命令:运行此查询以生成所需的语句,然后将输出复制回查询窗口并一起运行。
外接程序调用
quotename()
如果你有一些古怪的名字。。。dced5bon2#
使用allmhuran建议的动态sql解决方案(+1来自我!)-假设sql server 2017或更高版本,您可以利用
string_agg
要为您创建sql:在db<>fiddle上观看现场演示