2011-07-05 9 views
1

データベース内の同じテーブルにレコードを挿入する複数のタスクを作成するtaskfactoryを使用するアプリケーションがあります。 SQL Server管理スタジオのオプションで実行タイムアウトが0に設定されていると、テーブルがクリーンアップされてテーブルが大きくなりすぎてしまいます。ストアドプロシージャを使用して挿入を行い、例外処理プロセスをスリープ状態にして再試行しようとすると、次のエラーが発生します。ほぼすべての試みでタイムアウトに見えるので、これは役に立ちません。 これをどのように処理し、テーブルがこれらの挿入をすべて処理するかを確かめないでください。コネクションのタイムアウト= 600を含めて試してみましたが、connectionstringのプロセスの1つでこれが助けになりませんでした。マルチスレッドアプリケーションのストアドプロシージャ - タイムアウトが切れています。前にタイムアウト時間が経過しました

また、レジストリ内のsqlquerytimeout値を90に設定しますが、依然として役に立ちません。

回答を評価してください。

ERROR:Visual Studioの2010年のデバッグオプションがあることを設定する必要があったため、タイムアウトは操作が完了する前、またはサーバーが応答していないに経過し、タイムアウト期間を満了し...

は、エラーの詳細を見ることができませんでした私は応答のストリームとキャプチャを設定します

しかし、私はSQL Serverを再起動し、何とかすべてが今はうまくいきます。

エラーが再発しました。

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, 
    Boolean breakConnection) 
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, 
    Boolean breakConnection) 
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 
    at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, 
    SqlCommand cmdHandler, SqlDataReader dataStream, 
     BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior 
    runBehavior, String resetOptionsString) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior 
    cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior 
    cmdBehavior, RunBehavior runBehavior, Boolean returnStream, 
    String method, DbAsyncResult result) 
    at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, 
    String methodName, Boolean sendToPipe) 
    at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 
at GNIPProcess.Feeds_DB.insert_tfeed(String data, String searchTerm, 
    String entryId, String entryContent, String pubDate, String authorId, String activity, String& ExecutionError, SqlConnection& connectionObj, SqlCommand& 
CommandObj) in Y:\Data\WebApp\Process\Feeds_DB.vb:line 63 
+2

用のテーブルをロックし、問題が

が一度に「百万」行を削除しようとしないでください ロック

に求めるべきであると思いますか?接続タイムアウトまたは実行タイムアウト? (実際のエラーをポストすることは人々があなたの質問に答えるのを助けるかもしれません) –

+0

'SqlCommand'オブジェクトタイムアウトを0に設定しようとしましたか? – IAbstract

+0

いいえ私はそれをしませんでした...あなたがcommandobj.commandtimeout = 0を設定するために私のsqlcommand objを宣言する各タスクを意味するのですか...なぜ0 – vbNewbie

答えて

0

テーブルに行を挿入するのは、DB構造体のインデックスや重大な間違いでテーブルがオーバーロードされない場合には十分です。私はそれは長い期間、あなたが取得しているタイムアウト

DECLARE @top int = 1000; 

WHILE 1=1 
BEGIN 
    DELETE TOP (@top) 
    FROM MyTable 
    WHERE dateEntered < @date; 

    IF @@ROWCOUNT = 0 BREAK; 
    WAITFOR DELAY '00:00:00.003' 
END; 
関連する問題