我有两个相同的sql server数据库 - staging(版本10.0.4000.0)和测试(10.0.2531.0)。
我有一个调用这些数据库的Visual Studio 2008 ASP.Net,C#项目。该项目使用.xsd从存储过程返回数据。
这个项目有100多个存储过程,一切都很好。但是,我最近创建了一个存储过程,它给了我一些问题。存储过程在QA的两个数据库中运行。当我为xsd创建表adpater并将其连接到测试数据库时,它会按预期运行。当我更改连接到登台数据库时,我收到此错误:
超时已过期。完成之前已经过了超时时间 操作或服务器没有响应。
该过程需要两个日期参数。如果我删除日期参数,则错误消失,我得到预期的结果集。如果我输入一个伪造的字符串或整数参数,它也会运行。但是如果我需要日期,则会发生超时错误。请记住,存储过程在测试和分段中是相同的,并且在QA中运行时都返回结果(在3秒内)。我只是点击tableadapter并选择预览数据选项,所以我知道这不会是我的演示代码中的一些错误。
我不确定提供什么代码或可能有助于解决此问题的代码。请告诉我哪些细节可能会有所帮助,我可以提供。
更新: 以下是从Visual Studio返回的完整消息:
MW.MWDeptTotalSpend.Fill,GetData(@StartPYMNT_DT,@ EndPYMNT_DT)可以 不能预览。
超时已过期。完成之前已经过了超时时间 操作或服务器没有响应。
更新2:
我在我的细节上做了一些小改动,可能会给你一些见解。
WHERE X.PYMNT_DT BETWEEN '1/1/2014' and '5/1/2014' --@StartPYMNT_DT AND @EndPYMNT_DT
注释参数定义为@StartPYMNT_DT smalldatetime,@ EndPYMNT_DT smalldatetime
该过程现在返回数据,但显然我想传递我的日期参数。
答案 0 :(得分:0)
我找到了一个“解决方案”。出于某种原因,我不得不将日期时间参数作为日期时间转换为sql:
X.PYMNT_DT BETWEEN CAST(@StartPYMNT_DT as smalldatetime) AND CAST(@EndPYMNT_DT as smalldatetime)
我仍然想知道如何追踪这些错误的来源,显然这个解决方案是一个黑客攻击。如果有人可以提供,我愿意接受更好的答案。