私は2つの部分からなる小さなアプリケーションを持っています:
- データベースに接続して構成データを取得する構成部分。
- 構成を使用してデータをデータベースにインポートする Data Importer パーツ。
Data Importer は、トランザクションを使用して複数のスレッドで実行されています。IsolationLevel.Snapshot
設定 SQL コマンドはトランザクションを使用しません。
構成ウィンドウが開いているときに、データ インポーターを同時に実行することはできません。
私の問題は次のように発生します。
1.アプリケーションを開き、構成を確認します。(構成ウィンドウに入って、すべてをスポット チェックします)。2.データのインポートを実行します。3.設定ウィンドウを再度開きます。
インポート後に構成ウィンドウを再度開くと、DataReader からエラーが表示されますが、Snapshot isolation transaction failed accessing database...
この DataReader は、トランザクションまたは IsolationLevel がまったく設定されていない SqlConnection から作成されます。
アプリケーションを再起動すると、エラーなしで構成ウィンドウを再度開くことができます。
.Net または SQLServer は IsolationLevel を保持していますか?
すべてに対して新しいトランザクションを作成せずに、設定後に IsolationLevel を変更する方法はありますか?