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
私はまだ解決策を得ていません。誰か?