我直接运行查询,本质上是微不足道的:
SELECT * FROM [dbo].[vwUnloadedJobDetailsWithData] WHERE JobId = 36963
当我从管理工作室运行它时,查询甚至不需要一秒钟。当我从表适配器中运行它时,它会超时。我已多次修复此问题,但修复很可笑。如果我从我的 xsd 文件中删除表适配器并重新创建它,查询时间与管理工作室的查询时间匹配大约两天,但我必须重新部署它是 asinine。
任何对可能导致这种情况的洞察力将不胜感激。我已经看到了另一个关于此的问题,但是在查询之前涉及 set arithabort on 的解决方案对我没有影响。
编辑:有人要求我显示调用查询的代码。现在,当我进入我的 xsd 文件并且也只是预览数据时,就会发生这种情况,但为了清楚起见,这里是:
using (TEAMSConnection connection = new TEAMSConnection())
{
connection.OpenConnection();
_JobDetailsDAO jobDetailDao= new _JobDetailsDAO(connection);
return jobDetailDao.GetUnloadedJobDetailsByJobId(jobId);
}
在处理连接时,数据库连接将关闭。使用这行代码:
if (_DBConnection != null && _DBConnection.State == ConnectionState.Open)
_DBConnection.Close();
Edit2:我运行了一个跟踪,这是正在设置的设置选项
设置quoted_identifier on set arithabort off set numeric_roundabort off set ansi_warnings on set ansi_padding on set ansi_nulls on set concat_null_yields_null on set cursor_close_on_commit off set implicit_transactions off set language us_english set dateformat mdy set datefirst 7 set transaction isolation level read commit
我去把它添加到我在管理工作室生成的查询中,它仍然在不到一秒钟的时间内运行。我什至完全复制了跟踪中的查询。
exec sp_executesql N'SELECT * FROM [dbo].[vwUnloadedJobDetailsWithData] WHERE JobID = @JobId',N'@JobId int',@JobId=36963
而且还不到一秒的返回时间。我很困惑。
谢谢,乔什