0

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

在正常情况下,一切都很好,我成功地得到了结果。

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

当我重新启动 SQL Server 时,问题就解决了,webservice 可以执行了sp

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

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

4

1 回答 1

1

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

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

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

于 2012-10-16T10:20:47.930 回答