我们被要求获取 SQL Server 2008 数据库中所有表的列表,这些表对特定角色具有 SELECT 权限。它需要在查询中,因为那时我们需要编写一个脚本来撤销该 GRANT SELECT 权限。
谢谢。
我们被要求获取 SQL Server 2008 数据库中所有表的列表,这些表对特定角色具有 SELECT 权限。它需要在查询中,因为那时我们需要编写一个脚本来撤销该 GRANT SELECT 权限。
谢谢。
这不是一个完整的答案(也不可能——我没有安装 SQL Server 可以摆弄),但希望它能让你走上正轨。它正在执行一个存储过程。
USE yourDB;
GO
EXEC sp_table_privileges
@table_name = '%';
在结果集中,您将主要对第三列table_name
和第六列感兴趣privileges
。
在我看来,下一步 - 假设这是您要查找的数据 - 将使用一个将 EXEC 语句的结果插入到一个临时表中的 SQL 语句来包装,然后您可以根据需要对其进行切片和切块。这种努力留给读者作为练习(轻推)。关于这个堆栈溢出问题的第三个答案可能对扩展上面给出的查询有用,但一如既往,YMMV。