在SQL Server上执行的查询日志

时间:2009-10-05 05:58:17

标签: sql-server-2005 tsql

我在SQL Server 2005 DB上运行了一个t-sql查询,它假设运行了4天,但是当我在4天后检查后发现机器突然关闭。所以我想跟踪查询发生了什么,或者换句话说,什么是机器发生故障时查询的状态 有没有机制来检查这个

1 个答案:

答案 0 :(得分:1)

进行这样的验尸可能非常困难。但是,虽然在关闭时可能无法确定长时间运行的查询的哪个部分处于活动状态,但尝试查找问题的根本原因非常重要!

根据查询的编写方式,SQL将尝试回滚未完成的任何SQL(如果使用了事务,则回滚任何未提交的事务)。这将在服务器第一次重启时发生;如果您有任何分析SQL事务日志的愿望(哎呀!)制作副本。

在获取可能在关闭时运行的查询部分之前,最好查看SQL日志(我的意思是应用程序日志,包含信息消息,时间戳等,而不是SQL事务日志对于给定的数据库),搜索基本事实,可能还有错误消息,在关闭之前的某个时间发生,这可能是问题的根源。还要检查Windows事件日志,因为它们可能表示可能导致SQL关闭的原因或结果的系统范围异常情况。

SQL事务日志可以“反编译”并用于理解数据库中容易更新/插入/删除的内容,但是这种类型的信息可能会持续4天,并且可能会长时间存在,并且可能会导致无关紧要查询。事实上,SQL日志的磁盘空间不足可能会导致服务器变得不稳定(我希望对这种情况的处理更加优雅,但如果不知何故驱动器也是系统驱动器,可能会发生坏事...... 。)

最后,通过分析“4天长”的SQL脚本,可以推断出哪些部分已经完成,这要归功于脚本的各种副作用。除此之外,这篇评论可能允许在必要时将数据库恢复到一致状态,或者截断脚本以排除容易完成的部分,以准备新的运行以完成工作。