【问题标题】:I can exec my stored procedure in SQL Server Management Studio but webservice can not我可以在 SQL Server Management Studio 中执行我的存储过程,但 webservice 不能
【发布时间】:2012-10-16 10:16:13
【问题描述】:

我有一个执行表格存储过程的 web 服务方法。这个sp 需要 1 分钟才能完全执行。我远程调用那个 webservice 方法并得到结果。

在正常情况下一切正常,我成功获得结果。

但是当服务器繁忙时,Web 服务无法执行 sp(我在 SQL Profiler 中对其进行了测试,但探查器没有任何结果),但我可以在 SQL Server Management Studio 中手动执行 sp

当我重启SQL Server,问题解决,webservice可以执行sp

为什么在繁忙的情况下webservice无法执行sp,但我可以在SQL Server Management Studio中执行?

如何解释这种情况?我该如何解决?

【问题讨论】:

    标签: c# .net sql-server web-services stored-procedures


    【解决方案1】:

    执行sp_who,看看发生了什么;我的猜测是它被阻止了——也许你的“隔离级别”在 SSMS 和网络服务之间是不同的。

    同样,SSMS 和 Web 服务之间的连接的 SET 选项很可能不同,这可能会导致行为发生某些变化 - 例如,计算存储索引值是 非常容易受到SET选项的影响:如果调用者的选项与创建列时设置的选项不兼容,则可以强制对它们进行表扫描,重新计算它们全部,而不是使用预先索引的值。这也适用于提升的 xml 值。

    最后一个考虑是参数嗅探;如果为yourproc 'abc' 生成的缓存与yourproc 'def' 具有非常不同的统计信息,那么它可能会运行非常糟糕的查询计划。 optimize for / unknown 提示可以帮助解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      相关资源
      最近更新 更多