「ログインに失敗しました」というエラーが再発したことはありません。ただし、他の接続エラーは、サーバーを非難することで説明できるようです。エラーが発生するランダム性は、まだ謎です。
ログインに失敗しました。信頼されていないドメインからのログインであり、Windows 認証では使用できません
コードを並列で実行したかったので、foreach ループを並列 foreach ループに変更しました。それは十分に単純に見えました。各ループはデータベースに接続し、何かを検索し、ロジックを実行し、何かを追加し、接続を閉じます。しかし、私は上記のエラーが発生しますか?
ローカルの SQL サーバーとエンティティ フレームワークを使用しています (各ループは独自のコンテキストを使用します)。同じローカルログインなどを使用して複数回接続すると問題がありますか? どうやってこれを回避しましたか?
(parallel.foreach ループに変換しようとする前に) foreach ループしているオブジェクトのリストを 4 つのグループ (個別の csv ファイル) に分割し、プログラムの 4 つの同時インスタンスを実行しました (全体的に 1 つよりも高速に実行されました)。したがって、並列のアイデア)。だから、データベースへの接続は問題ではないようです?
何か案は?
編集:これは前です
var gtgGenerator = new CustomGtgGenerator();
var connectionString = ConfigurationManager.ConnectionStrings["BioEntities"].ConnectionString;
var allAccessionsFromObs = _GetAccessionListFromDataFiles(collectionId);
ForEach(cloneIdAndAccessions in allAccessionsFromObs)
DoWork(gtgGenerator, taxonId, organismId, cloneIdAndAccessions, connectionString));
後
var gtgGenerator = new CustomGtgGenerator();
var connectionString = ConfigurationManager.ConnectionStrings["BioEntities"].ConnectionString;
var allAccessionsFromObs = _GetAccessionListFromDataFiles(collectionId);
Parallel.ForEach(allAccessionsFromObs, cloneIdAndAccessions => DoWork(gtgGenerator, taxonId, organismId, cloneIdAndAccessions, connectionString));
DoWork 内で BioEntities を使用します
using (var bioEntities = new BioEntities(connectionString)) {...}
ますます気になる…。
DoWork メソッドにいくつかのコードを追加しました。
Debug.WriteLine(“Executing “ + itemName + ” as “ + WindowsIdentity.GetCurrent().Name);
そして、それは不思議なことに機能し始めました(実際には非常にうまく/高速です)。しかし、最終的には同じ例外が発生しました(約1時間後)。しかし、私はこれを追跡することができました..?
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
EDIT2: うーん..今朝仕事に来て起動しました(なぜそれが少しうまくいくのかを理解することに夢中になっています)、これまでのところうまく(そして速く!)動作しています。不定期 : スレッド '' (0x27c8) がコード 0 (0x0) で終了しました。スレッド '' (0x26b8) はコード 0 (0x0) で終了しました。
しかし、それ以外はまだ台無しにされていませんか?率直に言って、それは私をもっと心配しています。これは 1 回限りのことなので (うまくいけば) 使うかもしれませんが、何が起こっているのでしょうか? 複数のスレッドにログインすると、問題が発生し、SQL でタイムアウトが発生する可能性がありますか? 私は本当にそれを取得しません。それが再び機能しなくなったら、私は物事を理解しようとします。SQLサーバーをリセットする方法はありますか、なぜそれが1時間機能し、その後台無しになり、その後数秒以上機能せず、現在(再起動後)機能するのかわかりません(約30分間)これまでのところ)?