确定哪些表具有GRANT SELECT到特定的自定义角色

时间:2012-08-22 03:04:33

标签: sql sql-server-2008

我们被要求获取SQL Server 2008数据库中所有表的列表,这些表具有对特定角色的SELECT权限。它需要在查询中,因为我们需要编写一个撤销GRANT SELECT权限的脚本。

感谢。

1 个答案:

答案 0 :(得分:2)

这不是一个完整的答案(并且不能 - 我没有安装SQL Server安装),但希望它能让你走上正轨。它正在执行存储过程。

USE yourDB;
GO
EXEC sp_table_privileges 
   @table_name = '%';

在结果集中,您会主要关注第三列table_name和第六列privileges

来源:MSDN: sp_table_privileges

在我看来,下一步 - 假设这是您正在寻找的数据 - 将包装此SQL语句,并将EXEC语句的结果插入到临时表中,然后您可以将其切片和切块需要。这种努力留给读者练习( nudge nudge )。 this stack overflow question上的第三个答案在扩展上面给出的查询时可能会有一些用处,但与往常一样,YMMV。