C# 我可以在SQLServerManagementStudio中执行存储过程,但webservice不能
我有一个执行表格存储过程的webservice方法。此C# 我可以在SQLServerManagementStudio中执行存储过程,但webservice不能,c#,.net,sql-server,web-services,stored-procedures,C#,.net,Sql Server,Web Services,Stored Procedures,我有一个执行表格存储过程的webservice方法。此sp需要1分钟才能完全执行。我远程调用webservice方法并获得结果 在正常情况下,一切都很好,我成功地获得了结果 但是,当服务器繁忙时,Web服务无法执行该sp(我在SQL Profiler中对其进行了测试,但在SQL server Management Studio中我可以手动执行该sp) 当我重新启动SQL Server时,问题就解决了,Web服务可以执行sp 为什么在繁忙的情况下,webservice不能执行sp,但我可以在SQL
sp
需要1分钟才能完全执行。我远程调用webservice方法并获得结果
在正常情况下,一切都很好,我成功地获得了结果
但是,当服务器繁忙时,Web服务无法执行该sp
(我在SQL Profiler中对其进行了测试,但在SQL server Management Studio中我可以手动执行该sp
)
当我重新启动SQL Server时,问题就解决了,Web服务可以执行sp
为什么在繁忙的情况下,webservice不能执行sp
,但我可以在SQLServerManagementStudio中执行
如何解释这种情况?我该如何解决这个问题呢?执行
sp\u who
,看看发生了什么;我的猜测是它被阻止了——也许SSM和web服务之间的“隔离级别”不同
同样,SSM和web服务之间连接的SET
选项也可能不同,这可能会导致行为上的某些变化,例如,计算存储的索引值非常容易受到SET
选项的影响:如果调用者的选项与创建列时设置的选项不兼容,则可以强制调用者对它们进行表扫描,重新计算它们,而不是使用预索引值。这也适用于提升的xml值
最后要考虑的是参数嗅探;如果为具有与yourproc'def'
非常不同的统计信息的yourproc'abc'
生成缓存,那么它可能会运行非常糟糕的查询计划。optimize for/unknown
提示可以帮助解决这个问题