我们被要求获取SQL Server 2008数据库中所有表的列表,这些表具有对特定角色的SELECT权限。它需要在查询中,因为我们需要编写一个撤销GRANT SELECT权限的脚本。
感谢。
答案 0 :(得分:2)
这不是一个完整的答案(并且不能 - 我没有安装SQL Server安装),但希望它能让你走上正轨。它正在执行存储过程。
USE yourDB;
GO
EXEC sp_table_privileges
@table_name = '%';
在结果集中,您会主要关注第三列table_name
和第六列privileges
。
在我看来,下一步 - 假设这是您正在寻找的数据 - 将包装此SQL语句,并将EXEC语句的结果插入到临时表中,然后您可以将其切片和切块需要。这种努力留给读者练习( nudge nudge )。 this stack overflow question上的第三个答案在扩展上面给出的查询时可能会有一些用处,但与往常一样,YMMV。