我今天面临的情况是,如果我们知道谁登录了 SQL 并执行了一些删除操作,那么对我和我的公司来说将非常有益。
我们遇到的情况是至少有 2 个人(有时是 3 个人)使用 SQL Server Management Studio 登录 SQL,并执行各种功能。
我们需要的是审计线索。如果有人删除了记录(无论是误删还是其他原因),我想知道做了什么。
有什么办法可以实现这一点吗?
答案1
您可以使用一些不同的工具。如果您有 SQL Server 2008 或更高版本,则内置的审核功能可以捕获此信息。
如果失败,您可以使用 SQL Profiler 或服务器端跟踪来捕获信息。
如果您的数据库处于完全恢复状态,您可以使用 Log Explorer 或 LiteSpeed for SQL Server 挖掘事务日志。如果您想编写自己的内容,可以使用一些未记录的命令。
答案2
您可以设置 DML 触发器、使用数据库事务日志读取事务(DELETE)信息、使用本机 SQL Server 功能:
- SQL Server 更改跟踪
- SQL Server 变更数据捕获
- SQL Server 审计
或使用第三方工具
ApexSQL 有两个审计工具 - ApexSQL Log 和 ApexSQL Audit。使用其中一种方式比使用另一种方式有一定的优势,例如:
- 审核所需的时间段——是在工具安装之前还是之后
- 可审计的业务范围
- 自动化、审计信息的存储方式以及事后查询方式
免责声明:我在 ApexSQL 担任产品支持工程师
答案3
对于这种事情,我们有Idera Compliance Manager,尽管我确信还有其他供应商也有类似的产品。
答案4
正如 @mrdenny 所说,2008 年引入了一项用于审计的内置功能。你可以从这和这文章。
您还可以查看这份白皮书:SQL Server 2008 中的审计和了解SQL Server审计
请记住,SQL 事件探查器具有很大的相关开销。