你们可能知道,SQL Server 没有提供开箱即用的解决方案来导出为数据库中每个元素声明的所有安全相关语句(在数据库级别和对象级别)
我说的是想出这些信息的能力
- 所有用户
- 所有用户定义的角色
- 数据库级别的所有权限(例如 GRANT CREATE FUNCTION)
- 对象级别的所有权限(例如 GRANT SELECT ON OBJECT::xxx)
你会认为 SQL Server 必须有这样的东西,但是 SQL Server 导出向导或由于右键单击对象而生成的各种脚本都不会捕获此信息。
我在网上看到了许多不同的“可能的解决方案”,使用人们慷慨发布的非策划脚本,但由于我必须 100% 确保所有安全信息都被捕获,所以我不能完全依赖这些脚本。
我可以选择以这些为起点来自己写一些东西,但我讨厌不得不重新发明轮子来满足你认为很多人可能有的要求。
是否有人提供的工具(作为 SQL Server 产品的一部分或第 3 方工具)可以可靠地为您提供此信息?
或者至少,是否有一个社区支持的脚本,大多数人会同意“将完成这项工作”?
谢谢!
很抱歉您从昨天开始就没有回复;这至少是你的一个起点。
你可以试着把你需要的碎片拉出来。和往常一样,阅读讨论线程(很遗憾,我找不到我认识的大牌认可的脚本,所以要彻底测试!模式、对象、服务器和列级别的权限经常丢失)。
我实际上并没有使用任何这些,但它们是一组起点,没有特定的顺序。
列出所有数据库中的所有权限
使用 Powershell 和 T-SQL 进行自动权限审计:第 1 部分
所有数据库的权限脚本
脚本数据库级别权限 v2.1
脚本化用户权限的存储过程
安全查询:数据库级别
安全查询:服务器级
Idera SQL Permissions Extractor似乎是您正在寻找的产品。
它可以编写服务器和对象权限脚本,并且是免费的。还有一个商业版,叫做SQL Secure,它有更多的功能。
两个版本之间的功能比较可以在这里找到。
https://gallery.technet.microsoft.com/Extract-Database-dfa53d5a/
请参阅该链接以下载以下代码