gpt4 book ai didi

.net - SQL 2005 服务器存储过程多次执行相同的 SELECT 的奇怪问题

转载 作者:行者123 更新时间:2023-12-04 06:53:51 29 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。让我给你一些信息。

有一个存储过程,其中一个选择返回数据集,返回值为 0。

在 sp 中的“主要”选择之前,还有像这样的假选择(由于 SSIS 和代码生成工具):


IF (1=0)
BEGIN
CONVERT(INT, NULL) AS Id
,CONVERT(VARCHAR(50), NULL) AS someColumn
,...
END

最后还有一个不同寻常的问题——主要的选择结构使用带有整数变量而不是标量值的“TOP”关键字。好像:

SELECT TOP (@top)
...
...
FROM
...

现在问题来了:当直接从 SSMS 调用该过程时,它会在几毫秒内运行。当从应用程序调用时,它会运行几分钟......感谢 SQL Profiler 我们发现,当从应用程序调用过程时,过程中的“主”选择被调用数千次(我们使用 MS Enterprise库 SqlDatabase 对象,方法 ExecuteReader;.NET 2.0 方法)。

事实是,我们的应用程序多年来一直在调用数百个其他过程而没有出现类似的问题。所以..我希望有人拥有我们缺乏的知识..

最佳答案

解决了!

尽管如此,我还是不明白。似乎动态 SQL(TOP 子句)是问题所在。我已经根据这个 article 删除了动态语法它起作用了(至少到目前为止)。

如果有人可以为我清除它,问题仍然存在。

关于.net - SQL 2005 服务器存储过程多次执行相同的 SELECT 的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2736531/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com