ADO.NET数据阅读器与SSMS中的直接执行

时间:2015-07-21 07:59:24

标签: sql-server stored-procedures ado.net sqldatareader

我的一位客户遇到了一个奇怪的问题。当客户端使用ADO.NET SqlDataReader(从位于与SqlServer相同的服务器上的桌面应用程序调用)运行存储过程时,SqlDataReader需要花费大量时间来执行并最终超时。如果我从SSMS执行相同的存储过程(相同的参数),它几乎立即运行(涉及的表不是很大)。

所涉及的表都被编入索引,索引在前一天晚上重建。

如果我运行“ALTER PROCEDURE procname ..”,那么SqlDatareader也会立即开始运行,但只持续一段时间(1-2周),然后它再次开始挂起。

问题仅发生在客户端服务器(即Sql 2005)上,如果我备份他的数据库,我们的服务器上的工作没有任何问题。

您能否建议我采取哪些措施来防止这种情况发生?

以某种时间间隔重新编译程序是一种“正常”的方法来解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

每次更改/创建程序时,它都能快速运行,对吧?

在声明您的程序并进行测试时,您可以使用重新编译选项:

CREATE/ALTER (name) (parameters) WITH RECOMPILE AS

您也可以使用exec语句:

EXECUTE procedure_name WITH RECOMPILE

希望有所帮助