【问题标题】:SQL Server 2000 blocking prevented by running profiler?运行探查器阻止了 SQL Server 2000 阻塞?
【发布时间】:2009-04-15 22:53:08
【问题描述】:

我们正在开发一个从 Forte 应用程序转换而来的大型 Java 程序。白天,我们在服务器中收到 Blocking SPID。我们昨天拜访了 DBA,他设置了一个配置文件模板来运行以捕获锁定/阻塞操作。当我们运行这个配置文件时,阻塞问题就消失了。为什么?

此应用程序使用 RMI 分发,大约有 70 个用户。我们使用 SQL 2000 和 windows 2000 服务器来保持与一堆旧的 VB 帮助应用程序的兼容性。

我们已将阻塞跟踪到特定屏幕和存储过程,但现在我们无法在探查器运行时发生错误。

感谢您的帮助!

西奥

【问题讨论】:

  • 尝试更新您的 JDBC 驱动程序。 :-/
  • 我们使用的是微软的 odbc 驱动程序。我们应该继续使用它还是转向其他开源版本?

标签: java sql sql-server


【解决方案1】:

古老的 Heisenberg 调试器问题。

任何分析器都会做两件事:它在适当位置添加代码以调用调试器,以及存储数据。第一个可以阻止优化器,第二个可以改变某些东西的时间,从而导致竞争条件消失。

这种阻塞 SPID 问题似乎经常出现在 Google 上;原因似乎是当某个资源在另一个需要它时被锁定时发生,因此听起来很可能是计时错误。

微软has an article关于如何处理这个问题。

【讨论】:

  • 嗯,DBA 最有可能添加 SQL 跟踪 - 这样就不会更改代码;但是,是的,整体执行可能会发生变化。
【解决方案2】:

只是一个随机想法的集合。我看到跟踪导致服务器宕机,但从未让事情变得更好。

您使用的是什么跟踪模板? (这些取自 SQL Server 2005 工具,抱歉)

  • “标准(默认)”跟踪高级呼叫和登录/注销
  • “TSQL_SPs”跟踪更具侵入性的语句调用

它也是二进制的并且有保证的吗? Trace on=没有block,trace off=block,还是不幸的巧合?当你们都在看 DBA 时,会有人停止点击客户端并来看吗?

作为跟踪的一部分,是否有其他东西被关闭。也就是说,您是在使用分析器还是脚本跟踪(大量 sp_trace_set% 语句)?在脚本跟踪中,可能有一些东西会关闭其他东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2017-12-28
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多