ADO.NET 数据 reader 与直接在 SSMS 中执行

ADO.NET Data reader vs direct execution in SSMS

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

涉及的表已经建好索引,前一天晚上重建了索引。

如果我 运行 一个 "ALTER PROCEDURE procname..",那么 SqlDatareader 也会立即启动 运行ning,但只持续一段时间(大约 1-2 周),然后它又开始挂了。

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

你能建议我应该采取什么措施来防止这种情况发生吗?

在某个时间间隔重新编译程序是否是 "normal" 解决此问题的方法?

谢谢!

每次你alter/create程序运行得很快,对吧?

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

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

你也可以使用 with exec 语句:

EXECUTE procedure_name WITH RECOMPILE

希望对您有所帮助