1

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();
}

ここでのUPDATE はストア手順です。

     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

私はまだ解決策を得ていません。誰か?

4

1 に答える 1