SQL Server表中有多条记录时,SqlDataReader超时

本文关键字:记录 SqlDataReader 超时 Server SQL | 更新日期: 2023-09-27 18:16:34

我有一个存储过程Topounce,它从动态表中获取顶部记录并从PC中说出。当记录太多时,它会在中超时

SqlDataReader dr2 = select.ExecuteReader() 

目前大约有750张唱片。我已经试过CommandTimeOut = 0了,大约花了10分钟才说出这张唱片。有办法绕过这个吗?

错误如下:

超时已过期。在操作完成或服务器没有响应之前经过的超时时间。

代码:

try
{
   using (SqlConnection connStr2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString))
   {
      //Selects top record from vwAnno
      SqlCommand select = new SqlCommand("Topounce", connStr2);
      select.CommandType = CommandType.StoredProcedure;                   
      select.Parameters.AddWithValue("@ID", (string)Num);
      connStr2.Open();
      SqlDataReader dr2 = select.ExecuteReader();   // TIMES OUT HERE
      //Reads record in vwAnnounce
      while (dr2.Read())
      {
          //do work
      }
      dr2.Close(); //Close Datareader connection
      connStr2.Close();
}

更新这是存储过程。

     USE [Queue]
      GO
      /****** Object:  StoredProcedure [dbo].[TopRowViewAnnounce]    Script Date:         06/01/2013 11:55:50 ******/
       SET ANSI_NULLS ON
     GO
     SET QUOTED_IDENTIFIER ON
     GO
     ALTER PROCEDURE [dbo].[TopRowViewAnnounce] 
    @QueueID int
    AS

    BEGIN
 SELECT TOP 1 id, qdate, ticket_number, QID, received, displaynum, station, transcodevoiced FROM vwAnnounce WHERE QID = @ID ORDER by received ASC
    END

我之所以做存储过程,是因为我认为它有助于超时。我本来是这样的。

SqlCommand select = new SqlCommand("SELECT TOP 1 id, qdate, ticket_number, QID, received, displaynum, station, transcodevoiced FROM vwAnnounce WHERE QID = @ID ORDER by received ASC", connStr2);
  select.CommandType = CommandType.StoredProcedure;                   
  select.Parameters.AddWithValue("@ID", (string)Num);
  connStr2.Open();
  SqlDataReader dr2 = select.ExecuteReader();   // TIMES OUT HERE

我还没有找到解决办法。任何人

SQL Server表中有多条记录时,SqlDataReader超时

在连接字符串中添加Connect Timeout=120

默认情况下,连接超时为30秒。

由于它正在检索大量记录,您需要根据自己的需要增加时间。

您的连接字符串可以是:

data source=ServerName;initial catalog=DBName;uid=ID;pwd=Password;Connect Timeout=120

在IIS上也有timeout设置。

IIS > Website tab > Connection time out box

设置IIS应保持空闲连接的最大超时值(以秒为单位(。

希望它能有所帮助。