2016-12-23 2 views
-4

に応答していない:型「System.Data.SqlClient.SqlException」が実行のタイムアウトが期限切れです。タイムアウト時間は、操作が完了する前に経過するか、私は私のコードを実行すると、私は次の例外を取得サーバが

未処理の例外が発生しましたSystem.Data.dll内

追加情報:実行のタイムアウトが期限切れです。操作が完了する前にタイムアウト時間が経過したか、サーバーが応答していません。

私のコードは次のようである:

private void FillInDataGrid(string SQLstring) 
    { 
     string cn = ConfigurationManager.ConnectionStrings["Scratchpad"].ConnectionString; //hier wordt de databasestring opgehaald 
     SqlConnection myConnection = new SqlConnection(cn); 
     SqlDataAdapter dataadapter = new SqlDataAdapter(SQLstring, myConnection); 
     DataSet ds = new DataSet(); 
     myConnection.Open(); 
     dataadapter.Fill(ds, "Authors_table"); 
     myConnection.Close(); 
     dataGridView1.DataSource = ds; 
     dataGridView1.DataMember = "Authors_table"; 
    } 

そして、私のSQLSTRINGは以下の通りです:

SELECT dbo.[new].[colom1],dbo.[new].[colom2],dbo.[new].[colom3],dbo.[new].[colom4], 
       dbo.[new].[Value] as 'nieuwe Value', 
       dbo.[old].[Value] as 'oude Value' 
       FROM dbo.[new] 
       JOIN dbo.[old] ON dbo.[new].[colom1] = dbo.[old].[colom1] and dbo.[new].[colom2] = dbo.[old].[colom2] and dbo.[new].[colom3] = dbo.[old].[colom3] and dbo.[new].[colom4] = dbo.[old].[colom4] 
       where dbo.[new].[Value] <> dbo.[old].[Value] 
+1

あなたのクエリは実行時間がかかるようです –

+0

@EhsanSajjad実行時間はここで問題だと思いますか? –

+0

@EhsanSajjad私は「唯一」約7000rowsのテーブルを持っています –

答えて

0

クエリがデフォルトの30秒以上を必要とする場合は、設定したいかもしれませんCommandTimeoutが高い。あなたは、そのインスタンスのSelectCommandプロパティにデータアダプターをインスタンス化した後、あなたはそれを変更しますことを行うには、のようなので:

private void FillInDataGrid(string SQLstring) 
{ 
    string cn = ConfigurationManager.ConnectionStrings["Scratchpad"].ConnectionString; //hier wordt de databasestring opgehaald 
    DataSet ds = new DataSet(); 
    // dispose objects that implement IDisposable 
    using(SqlConnection myConnection = new SqlConnection(cn)) 
    { 
     SqlDataAdapter dataadapter = new SqlDataAdapter(SQLstring, myConnection); 

     // set the CommandTimeout 
     dataadapter.SelectCommand.CommandTimeout = 60; // seconds 

     myConnection.Open(); 
     dataadapter.Fill(ds, "Authors_table"); 
    } 
    dataGridView1.DataSource = ds; 
    dataGridView1.DataMember = "Authors_table"; 
} 

他のオプションは、あなたのクエリに対処することです。 SQL Serverでは、execution planを分析できます。私はそれにフルテーブルのスキャンがあると確信しています。 [old]テーブルと[new]テーブルの1つまたは2つの列にインデックスを追加して試してみることもできます。インデックスを追加すると、挿入と更新の実行時間が長くなり、必要な領域が増えます。

+0

私は60秒を試しましたが、それでもまだ読み込まれませんでした。今、15分を試してみると、プロセスをスピードアップさせる方法はありますか?私のCPUを変更するだけでなく。 –

+0

私が言ったように、あなたの質問は問題です。インデックスを追加してみてください。そして、私は単にSQL Server管理スタジオでそのステートメントを実行し、実行計画の結果に基づいて最適化します。 – rene

+0

1時間後、まだ完了していませんでした:P私は今SQL Server管理スタジオでクエリを実行しています。 –

関連する問題