gpt4 book ai didi

c# - 从 .NET 调用 SQL Server 2008 中的存储过程时结果未正确排序

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:12 25 4
gpt4 key购买 nike

我们有一个存储过程,它在 ORDER BY 中使用一个参数和一个 CASE 来按不同的列对结果进行排序。如果我们从 SSMS 执行存储过程,无论我们使用哪个版本的 SQL Server(2005 或 2008),记录总是根据参数排序。如果我们使用完全相同的参数值从应用程序调用它,它只会对 SQL Server 2005 进行正确排序。我单步执行了 SQLDataReader,它在 2008 中以错误的顺序获取记录。

我也在 .NET 2.0 中进行了尝试,以确保它与 .NET Framework 版本为 4.0 无关,我得到了相同的结果。

除了 SQL Server 版本之外,我所知道的这些服务器之间的唯一区别是带有 SQL 2008 的服务器是多处理器。

这可能是什么原因造成的?任何帮助将不胜感激。

最佳答案

我要冒昧地假设您的 CASE 语句正在检查参数中的 NULL 值。使用默认设置发送 .NET NULL 值可能无法很好地处理 SQL NULL 值。

例如,如果您的参数是一个字符串,并且您正在使用集成的 SQLDataProvider,那么有一个设置会自动将 NULL 字符串替换为 blank 字符串。我会通过让存储过程 SELECT 您的参数来验证您的 .NET 是否确实发送了您认为是的参数。

如果您实际上依赖于 NULL 参数,我会在您的 .NET 中处理验证,然后不将参数发送到 sproc。这是确保参数实际上是 NULL

的非常简单的方法

关于c# - 从 .NET 调用 SQL Server 2008 中的存储过程时结果未正确排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889745/

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