添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

SQl Server仍然得到 "超时过期 "的错误。超时时间已过"

8 人关注

我以为我在刚才 帖子中已经解决了一个sql错误...(错误信息。超时已过。在操作完成之前已经过了超时时间,或者服务器没有响应。")我试图用visual studio中的数据库工具来运行它......不是management studio,也不是通过客户端代码/ADO(还没有)。我重写了一个相当简单的查询,使用了几个自定义函数......这些函数以及查询的各个部分都经过测试,都运行良好,但是下面的查询却超时了......这确实完全按照管理工作室中的输入法运行,需要大约4分钟。正如我在另一篇文章中提到的,我把 "工具">"选项">"设计者">"覆盖连接字符串超时值 "下的设置改为120秒,但......它仍然在30秒后超时。在这个最新的版本中添加了ISNULL,这就是让它在management studio中运行的变化。

SELECT Symbol, LatestDate
FROM (SELECT Symbol, ISNULL(dbo.LatestDateInDailyPricingVolBySymbol(Symbol), '1/1/1900') AS LatestDate FROM tblSymbolsMain) AS T2
WHERE (LatestDate < dbo.RecentTradingDateByNumber(3))

总的想法是要找回在我的每日定价表中至少3天没有相应数据点的股票符号子集。有谁愿意接受?谢谢大家。

sql-server
sql-server-2008
tsql
StatsViaCsh
StatsViaCsh
发布于 2012-01-17
4 个回答
Jon Raynor
Jon Raynor
发布于 2020-11-27
已采纳
0 人赞同

不考虑你的超时问题。

你是否使用sql管理控制台来运行你的查询? 如果是的话,在连接到数据库时,有一个选项按钮,允许人们设置超时。

另外,如果在查询窗口中,右击并选择查询选项....

0,意味着无限,我会检查这些。 4分钟是一个很长的时间,也许可以重构查询,使其运行更快?

如果你在Visual Studio内通过C#运行这个程序,默认的命令超时是30秒。 通过设置命令超时来改变它。

SqlCommand comm= new SqlCommand();
comm.CommandTimeout = 300;
正如我所说,它在Management Studio中运行,但需要一段时间......。我试图在visual studio 2010中用sql工具运行它。
@StatsViaCsh - 一定是VS2010里面的一个设置,类似于SQL Server管理控制台。 如果有代码生成,可以通过代码进行调整,但也许在查询屏幕上点击右键,或在某个地方的选项? 对不起,我不使用VS2010运行查询,只使用SQL Server管理控制台,所以我对这些屏幕不熟悉。
@StatsViaCsh - 在VS2010中查看了一下,我可以设置连接超时,但找不到命令超时。 我想用代码而不是用工具来试试,看起来它使用的是一个默认值,不能轻易改变。
谢谢...。在你的建议之前,我没有找过它,但是在visual studio中的工具>选项>数据库工具下有一组选项。我改变了它,它运行了......在将近5分钟的时间里!:)现在就可以了。
Arion
Arion
发布于 2020-11-27
0 人赞同

如果一个查询需要那么长的时间,那么可能是出了问题。我将声明一个变量来存储RecentTradingDateByNumber。所以它看起来像这样。

DECLARE @RecentTrandingDateByNumber DATETIME
SET @RecentTrandingDateByNumber=dbo.RecentTradingDateByNumber(3)
SELECT 
    tblSymbolsMain.Symbol, 
    MAX(tblSymbolsMain.TradeDate)
    tblSymbolsMain
GROUP BY 
    Symbol
HAVING
MAX(TradeDate) < @RecentTrandingDateByNumber

要在管理工作室中看到执行情况,请进入 "查询/包括实际执行计划"。 如果你还想看到查询的流量,选择的数量等。你也可以包括客户端的统计数据。"查询/包括客户统计"

如果你想知道更多关于检查查询执行情况的信息,请参见

Cade Roux
Cade Roux
发布于 2020-11-27
0 人赞同

我担心的是,你的程序开始时需要4分钟。 这似乎是一个相当简单的查询,假设这些函数做了它们看起来要做的事情,如果有索引和适当的表设计,它应该比这更快地返回。

你是否看了这个查询的执行计划。

SELECT Symbol, MAX(TradeDate)
FROM tblSymbolsMain
GROUP BY Symbol
HAVING MAX(TradeDate) < dbo.RecentTradingDateByNumber(3)