gpt4 book ai didi

c# - SELECT 从程序超时但在 SQL Server Management Studio 中工作

转载 作者:太空狗 更新时间:2023-10-29 21:44:08 26 4
gpt4 key购买 nike

我在执行 SQL SELECT 时超时。

我这样连接到数据库:

using (SQLConnection conn = SQLConnection(@"Data Source=mydbServer;Initial Catalog=mydb;Integrated Security=true;Timeout=180");
{
conn.Open();

然后成功连接。

在 using{} 中我设置了:

string query = @"SELECT a.field, a.timestamp " +
"FROM mydb.dbo.myTable1 a WITH(NOLOCK) " +
"LEFT JOIN [myOtherdbServer].myOtherdb.dbo.MyTable2 b WITH(NOLOCK) " +
"ON a.field = b.field " +
"WHERE b.field is NULL " +
"AND a.timestamp >= '2015-05-01 00:00:00.000' " +
"AND a.timestamp < '2015-06-01 00:00.00.000'";

然后执行命令:

using (SQLCommand queryCmd = new SQLCommand(query, conn)
{
queryCmd.CommandTimeout = 300;

using (SQLDataReader rdr = queryCmd.ExecuteReader())
{

SQLCommand 抛出超时异常:“操作完成前超时时间已过或服务器未响应”。

如果我在运行我的程序的同一系统上使用 SQL Server Management Studio,并且作为运行我的程序的同一用户执行相同的 SELECT,它会在 1 秒内完成并返回数千行。

这种情况现在一直在发生。几天前它还在工作。我应该寻找什么?我很困惑,因为同样的 SELECT 从 SQL Server Management Studio 中工作。 SQL SMS 是否使用不同的连接?

最佳答案

“如果我在运行我的程序的同一系统上使用 SQL Server Management Studio,并且作为运行我的程序的同一用户执行相同的 SELECT,它会在不到 1秒并返回数千行。”

  1. SQL Server Management Studio 中的执行时间较短的原因可能有多种。这一次,结果是 Cached ,也可能是您缺少时间戳列上的索引
  2. 此外,您的应用程序服务器是否与您的 sql server 位于同一台服务器上?否则,这可能会增加延迟并导致超时。
  3. 链接服务器可能是个问题,除了延迟方面的考虑,我不确定 NOLOCK 语句是否足以确保您在远程服务器上尝试实现的目标。您很可能需要在包含 NOLOCK 语句的远程服务器上创建一个 View 。

这种情况现在一直在发生。几天前它还在工作。我应该寻找什么?我很困惑,因为同样的 SELECT 从 SQL Server Management Studio 中工作。 SQL SMS 是否使用不同的连接?

通常,当某些东西在工作时,现在它停止工作了,然后某些东西发生了变化。开始进行故障排除,直到找到问题所在,查找索引更改、代码架构修改,甚至 Windows 更新,任何可能给您带来线索的东西,直到您能够恢复它。

额外的建议,尝试将 select 语句限制为前 10 个,只是为了查看您是否能够返回结果,这可能表明问题出在对象的大小/查询执行时间上,而不是您的服务器/应用程序配置上。

关于c# - SELECT 从程序超时但在 SQL Server Management Studio 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30959746/

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