为什么SqlDataReader调用Stored Procedure的结果同直接执行Stored Procedure的结果不一样?

来自故乡的风 来自故乡的风 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
前几天有人报告说我们的网站页面出问题了,数据显示不对。

我看了一下,那个页面使用ADO.NET调用Stored Procedure,返回一个SqlDataReader,然后将返回的记录显示在页面上。

我在SQL Server Management Studio里运行这个存储过程,返回的记录数和内容都没问题。

我们曾经给这个数据库做过一个备份,连在开发环境上作为开发数据库(在同一个服务器上)。本地运行没有问题。这个页面已经运行了很多年,相关程序和存储过程从来没动过,完全一样。

于是我把本地程序的连接字符串指向出错online数据库,页面数据仍然是错的。

后来我追踪程序的执行,发现SqlDataReader返回的记录比在SQL Server Management Studio里运行这个存储过程的记录少好几条。

我看到一个英文网页(这里)上建议,在存储过程最后删除临时表。我们这个存储过程里用了三个临时表,最后只删除了两个,因此我就加了一句,DROP TABLE #tree,问题就解决了。

同事对我说,你再把加的那个语句删除试试。于是我去除了那句DROP TABLE #tree,结果依然正确。

我们的分析是,重新编译那个Stored Procedure就好了,同删除临时表没什么关系。


请问各位高手,这是什么原因?为什么SqlDataReader调用Stored Procedure的结果同直接执行Stored Procedure的结果不一样?

谢谢!
...全文
评论 3
收藏 已收藏
分享
返回顶部
来自故乡的风
.NET社区 62,274 成员 668,968 内容