Visual Studio 2008 で C# コード ビハインドで書かれた asp.net Web アプリがあります。
別のサーバー上の SQL Server データベースにクエリを実行する SQL クエリがあります。クエリを実行すると、90 秒後にタイムアウトします。あらゆる種類のさまざまな設定を試しました。
私はインターネットをトロールしましたが、まだ答えが見つかりません。コードにCommandTimeout
クエリ用に設定する行があります。クエリに設定するとCommandTimeout = 1;
1 秒後にタイムアウトになり、クエリに設定するとCommandTimeout = 90;
90 秒後にタイムアウトになります。
これはすべて問題ありませんが、私のクエリには約時間がかかります。実行するのに 150 秒。コードをCommandTimeout = 200;
クエリに変更しても、90 秒後にタイムアウトします。90秒未満のタイムアウトしか変更できないようです。90 秒を超えると、90 秒でタイムアウトになります。
これは私を怒らせています。私のコードを上書きしている別の設定はありますか?
これが私のコードです
// bind the data to the Gridview
private void BindTaskList()
{
string startDate = StartDate.Text;
string endDate = EndDate.Text;
// Create a connection string referring to the connection string from web.config file
string conStr = ConfigurationManager.ConnectionStrings["Docupro_ReportingConnectionString"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(conStr);
// This is the SQL query and must be in one long line
SqlCommand sqlCommand = new SqlCommand("SELECT T5.DisplayName AS 'User', T2.LongName AS 'Print Type', SUM(T1.Quantity) AS 'Total Quantity', '£'+CONVERT(varchar, SUM(T1.Amount), 3) AS 'Total Cost' FROM tblTransaction T1 JOIN tblItem T2 ON T1.ItemID = T2.ItemID JOIN tblLedger T3 ON T1.LedgerID = T3.LedgerID JOIN tblTender T4 ON T1.TenderID = T4.TenderID JOIN tblCustomer T5 ON T4.CustomerID = T5.CustomerID JOIN tblTerminal T6 on T1.TerminalID = T6.TerminalID JOIN tblStation t7 on T6.StationID = t7.StationID WHERE (TransactionDateTime BETWEEN @StartDate AND @EndDate)AND T3.LongName = 'Not Assigned' GROUP BY T5.DisplayName, T2.LongName ORDER BY T5.DisplayName", sqlConnection);
// Create the parameters from the text boxes and drop down list
sqlCommand.Parameters.Add(new SqlParameter("@StartDate", startDate));
sqlCommand.Parameters.Add(new SqlParameter("@EndDate", endDate));
// Set the command timeout to 200 seconds to allow for long queries
sqlCommand.CommandTimeout = 200;
sqlConnection.Open();
// Create a DataSet to fill with data
SqlDataAdapter myAdapter = new SqlDataAdapter(sqlCommand);
DataSet myDataSet = new DataSet();
myAdapter.Fill(myDataSet);
// Turn off GridView Footer
GridView1.ShowFooter = false;
// Fill the GridView with the DataSet
GridView1.DataSource = myDataSet;
GridView1.DataBind();
}
期待に感謝します
アンディ
エラーメッセージは次のとおりです。
Sys.WebForms.PageRequestManagerTimeoutException: サーバー要求がタイムアウトしました ScriptResource.axd
コード:0