我们有一个 COTS(商用现货)应用程序,它正在对其数据库架构进行足够的更改,以使现有查询返回无效数据。想想“select * from cars where cartype='car'”,但现在我们也添加了卡车……因此您需要执行“select * from mcars where cartype='car' and subtype='car'”才能获得实际的汽车结果(忽略这个疯狂之处……在模糊的实际实例中更有意义)。
有没有办法审计由给定的 SQL 服务器登录执行的所有 SQL 语句?
是否有可以执行此操作的 SQL Server“代理”,或其他内联修改(以编程方式用视图替换表)?
编辑
我们正在寻求捕获查询,以便我可以将它们与规则引擎(即 perl 脚本)进行匹配,以查找缺少的第二个参数。
即“如果查询包含“cartype”但不包含“subtype”,请通过电子邮件向我发送警报”
答案1
如果您运行的是 SQL 2005 或更高版本,则已运行默认跟踪,可为您提供一定级别的审计。在此处了解更多信息:http://www.mssqltips.com/tip.asp?tip=1111
您还可以创建自己的服务器端跟踪来审计您需要的内容。我在这里博客中介绍了如何操作:http://sqlchicken.com/2009/07/how-to-create-a-server-side-trace-with-sql-profiler/
您还可以观看有关如何使用 Profiler 工具查看正在发生的事情的视频:http://sqlserverpedia.com/wiki/Using_SQL_Server_Profiler