[解決済み] "このSqlTransactionは完了しました。もう使用できません。"...設定エラー?
質問内容
1日半ほど前から、Web上のブログやヘルプ記事を多数検索しています。 SOでこのエラーに関連する質問をいくつか見つけましたが、私の状況には全く当てはまらないと思いました(というか、残念ながら実装するのに十分理解できないケースもありました :P)。 私はヘルプのためにこれを十分に説明することができるかどうかわからない...しかし、ここに行く。
私たちは、リソースを追跡するための.NETアプリを持っています。 リソースを時間追跡システムと課金システムにコピーするエクスポート機能があります。これは、時間データベースと課金データベースにリンクするストアドプロシージャにアクセスします。
最近、課金システムのデータベースを新しいサーバーに移しました(元のサーバー。Server 2003 SP2、SQL 2005、新しいサーバー。新しいサーバー:Server 2008 R2、SQL 2008 R2)。 私は、2008データベースを指すリンクサーバーをセットアップしています。 ストアドプロシージャを更新して2008サーバーを指すようにしたところ、MSDTCとRPCに関するエラーが発生しました(http://www.safnet.com/writing/tech/archives/2007/06/server_myserver.html)。 Linked Serverで「rpc/rpc out」を有効にし、MSDTCをネットワークアクセスを許可するように設定しました(このようなものです。 http://www.sqlwebpedia.com/content/msdtc-troubleshooting ).
今、エクスポート機能を実行しようとすると、上記のようになります: "This SqlTransaction has completed; it is no longer usable." 私に奇妙に思えるのは、ストアドプロシージャを(SSMSから)実行すると、それは正常に完了すると言います。
このようなことを見たことがある方はいらっしゃいますか? 設定に何か見落としがあるのでしょうか? 同じページを何度も見ているのですが、唯一見つけたのは、MSDTCの変更をした後に再起動しなかったことです(ここに記載されています。 http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/7172223f-acbe-4472-8cdf-feec80fd2e64/ ).
ストアドプロシージャーの一部または全部を掲載することができますので、もしお役に立てるのであれば...お知らせください。
どのように解決するのですか?
このエラーメッセージは、quot;zombie transaction"が原因だと思われます。
トランザクションが2回コミットされている(または2回ロールバックされている、またはロールバックされてコミットされている、など)可能性のある箇所を探してください。 SP が既にコミットした後に .Net コードがトランザクションをコミットしていませんか? .Net コードは、エラーが発生するとそれをロールバックし、その後、catch (または finally) 節で再びロールバックしようとしますか?
古いサーバーでエラー条件がヒットしなかったので、欠陥のある "二重ロールバック" コードがヒットしなかった可能性があります。 おそらく、現在では は 新しいサーバーで何らかの設定エラーが発生し、例外処理によって欠陥のあるコードがヒットするようになりました。
エラーコードをデバッグできますか? スタックトレースはありますか?
関連
-
[解決済み】一括読み込みデータ変換エラー(切り捨て)
-
[解決済み] ORA-12801: 並列クエリサーバー P004 および ORA-01555 でシグナルされたエラー: スナップショットが古すぎる。
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
-
[解決済み] SQLで複数のGROUP BYを使用する場合とは?
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] MySql でクエリ実行時に only_full_group_by に関連するエラーが発生する。
-
[解決済み] SQL Serverストアドプロシージャに配列を渡す方法
-
[解決済み】SQL Server。クエリーは高速ですが、プロシージャから遅い
-
[解決済み】SQLサーバーのストアドプロシージャや関数の最終変更日時を確認する方法
-
[解決済み] SQL Server 2008でテーブルが存在するかどうかを確認し、存在しない場合は作成する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】''付近の構文が正しくない
-
[解決済み】ストアドプロシージャーのエラー ORA-06550
-
[解決済み】SQLが単一グループのグループ関数でないこと
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み】sys.dm_exec_sql_textはどのように機能するのでしょうか?
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] DELETE文の競合REFERENCE制約
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。