問題タブ [transactionscope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
946 参照

c# - C# トランザクション スコープ - L2E

Linq to Entities で System.Transactions.TransactionScope を使用する価値はありますか?

MS のドキュメントでは、ObjectContext.SaveChanges() 内の SQL 呼び出しはすべて内部的に 1 つのトランザクションにまとめられると書かれています。

ファイル システム上のローカル SQLite データベースである 1 つのデータベース接続があります。データベースに対するすべての操作がアトミックであることを確認したいだけですが、TransactionScope は必要ですか? IE では、いくつかの削除、更新、挿入などを呼び出す場合、それらすべてを実行するか、まったく実行しないことを望んでいます。

0 投票する
2 に答える
1323 参照

entity-framework - TransactionScope は、複数のデータベース間でデータの整合性をどのように保証しますか?

TransactionScope が複数のデータベース間でデータの整合性を保証する方法の原則を教えてもらえますか? 最初にコマンドをデータベースに送信し、データベースが応答するのを待ってから、以前に送信されたコマンドを適用するようにメッセージを送信すると思います。ただし、これらの適用メッセージを送信するときに実行が突然停止すると、コマンドを適用したデータベースと適用していないデータベースが発生する可能性があります。誰でもこれに光を当てることができますか?

編集:

私が求めているのは、停電や突然のシャットダウンの場合に複数のデータベースに書き込むときに、データの整合性を保証するために TransactionScope に頼ることができると思います。

ありがとう、バス

例:

0 投票する
2 に答える
4647 参照

sql-server - TransactionScope と接続プーリング

不適切な IsolationLevels を使用したデータベース接続で、アプリケーションに問題があるかどうかを把握しようとしています。私たちのアプリケーションは、SQL Server 2005 を使用する .Net 3.5 データベース アプリです。

接続が接続プールに返されたときに接続の IsolationLevel がリセットされないことを発見し (こちらを参照)、このブログ投稿で、作成された新しい TransactionScope ごとに独自の接続プールが割り当てられることを読んで本当に驚きました。

データベースの更新は (ビジネス オブジェクトを介して) TransactionScope 内で行われます (ビジネス オブジェクト グラフの更新ごとに新しいトランザクションが作成されます)。しかし、フェッチは明示的なトランザクションを使用しません。したがって、私が疑問に思っているのは、フェッチ操作 (デフォルトの IsolationLevel - Read Committed を使用する必要があります) が、更新に使用されたプールからの接続を再利用し、更新の IsolationLevel を継承するという状況に陥る可能性があるということです。 (RepeatableRead)? それとも、TransactionScope にラップされているため、更新は別の接続プールを使用することが保証されますか?

前もって感謝します、

グラハム

0 投票する
0 に答える
595 参照

c# - TransactionScope が機能する場所と機能しない場所がある

Windows Server 2003 で ASP.NET 3.5、Linq to SQL、SQL Server 2005 を使用しています。XP SP3 で VS 2008 をローカルで実行しています。

トランザクションで挿入、更新、および削除をラップできる必要があります。コード ブロックを でラップしてこれを最初に試したときusing(var trans = new TransactionScope()) { ...; trans.Complete(); }、リモート トランザクションのネットワーク アクセスを有効にする必要があることを示す適切な例外が発生しました。 そうすることで、物事は期待どおりに機能し始めました。

今日に早送りします。私たちのアプリには、TransactionScope 処理も受けた、ほとんど使用されていない部分があります。トランザクションはコードベースの他のすべての部分で適切に機能しますが、今日、めったに使用されないこの部分が以前と同じ「ネットワーク アクセス」例外をスローしていることを発見しました。

分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。http://img101.imageshack.us/img101/5480/msdtcnetworkaccesserror.jpg

例外を引き起こすコードは次のとおりです。

何か提案があれば、よろしくお願いします。もっと説明できることがあれば教えてください。前もって感謝します!!

0 投票する
1 に答える
2421 参照

nhibernate - TransactionScopeとIncrementIdentityGeneratorを備えたSQLite

IDジェネレーターをインクリメントとしてSystem.TransactionsTransactionScopeでSQLiteを使用しようとすると、NHibernateが次のID番号を取得しようとしたときに、例外(以下にコードとともに示されています)が発生していることに気付きました。

これは、新しいSQLite接続が現在のトランザクションの自動登録を実行しているためと思われます。私が聞いたところによると、SQLiteは単一の書き込みトランザクションのみをサポートしていますが、複数の読み取りをサポートする必要があるため、読み取り操作でデータベースロック例外が発生していることに驚いています。誰かがこの方法でトランザクションスコープでSQLiteを使用しましたか?

TransactionScopeの代わりにNHibernateトランザクションを使用すると、同じコードが正常に機能します

コードブロック:

例外:

0 投票する
4 に答える
17599 参照

asp.net - MSDTC - 基になるトランザクション マネージャーとの通信に失敗しました (ファイアウォールが開いており、MSDTC ネットワーク アクセスがオンになっています)。

ASP.NET Web フォーム システムに問題があります。

テストサーバーでは機能しましたが、サーバーの1つがDMZ内にあり、SQLサーバーがその外にあります(ただし、ネットワーク上ではまだ-異なるサブネットですが)ライブにしています

これら2つのボックス間のファイアウォールを完全に開いて、それが問題であるかどうかを確認しましたが、「TransactionScope」を使用しようとするたびに、「基礎となるトランザクションマネージャーとの通信に失敗しました」というエラーメッセージが表示されます。データにアクセスして取得できますが、それを壊すのはトランザクションだけです。

また、msdtc ping を使用して接続をテストし、ping が成功するファイアウォールの修正を行いましたが、同じエラーが発生します。

このエラーを解決するにはどうすればよいですか?

私たちは今日稼働するシステムを持っているので、どんな助けも素晴らしいでしょう. パニック :)

編集:以下のようなトランザクションでより簡単なテスト ページを作成しましたが、これは正常に動作します。入れ子になったトランザクションがこの種のエラーを引き起こす可能性がありますか?もしそうなら、なぜこれはファイアウォールを備えた DMZ でライブボックスを使用するときにのみ問題を引き起こすのでしょうか?

これは、問題が発生したときに取得する ErrorStack です。

0 投票する
2 に答える
31961 参照

c# - TransactionScope操作が無効なのはなぜですか?

再帰ループを使用してSQLServer2005データベースにアイテムを挿入するルーチンがあります。ループを開始する最初の呼び出しは、TransactionScopeを使用するトランザクション内に含まれています。最初にProcessItemを呼び出すと、myItemデータが期待どおりにデータベースに挿入されます。ただし、ProcessItemがProcessItemLinksまたはProcessItemCommentsのいずれかから呼び出されると、次のエラーが発生します。

「操作はトランザクションの状態に対して無効です」</p>

これをWindows7上のVS2008でデバッグして実行しており、分散トランザクションを有効にするためにMSDTCを実行しています。以下のコードは私の本番コードではありませんが、まったく同じように設定されています。PASSWORDToDatabaseは、変更できないクラスのメソッドであり、接続を作成し、完了すると閉じて破棄する標準のExecuteNonQuery()を使用します。

私はこことインターネット上の他の投稿を見ましたが、それでもこの問題を解決することはできません。どんな助けでも大歓迎です。

これがスタックトレースの上部です。残念ながら、私が開示できない会社の機密情報として、これまでの蓄積を示すことはできません。

0 投票する
1 に答える
2035 参照

c# - C#でメモリトランザクションスコープを実装するにはどうすればよいですか?

いくつかのトランザクションスコープを配置したいキャッシュがあります。これにより、プロセスは、キャッシュされたオブジェクトに対して実行する変更を明示的に「コミット」し、プロセスが途中で失敗した場合にも変更をロールバックできるようにする必要があります。

現在、getリクエストでキャッシュされたオブジェクトのクローンを作成しています。これは機能しますが、クリーンなソリューションではなく、かなりのメンテナンスも必要です。

しばらく前に.NetRocksでMTS(メモリトランザクションスコープ)ソリューションについて聞いたのを覚えていますが、その名前を思い出せません!誰かがそこに良いMTSフレームワークを知っていますか?あるいは、自分で実装する場合、これを行う方法に関する適切なガイドライン/パターンはありますか?

ありがとう、

編集:私の略語を完全に間違えました!STM、ソフトウェアトランザクショナルメモリである必要があります

0 投票する
2 に答える
4159 参照

nhibernate - Castle ActiveRecord TransactionScopeが失敗すると、今後のクエリが無効になります

ロールバックされたCastleActiveRecordTransactionScopeを使用する際の問題を解決しようとしています。

ロールバック後、Dogテーブルをクエリできません。「Dog.FindFirst()」行は、dogMissingNameを挿入できないため、「SlicedFindAllforDogを実行できませんでした」で失敗します。

スタックトレースは次のとおりです。

0 投票する
1 に答える
517 参照

asp.net-mvc - ASP.NET MVCで要求ごとのDBトランザクションを処理する方法は?

SubSonic 3.0(SimpleRepository)を使用して、ASP.NETMVC1.0アプリケーションでデータベースアクセスを処理しています。

すべてのWebリクエストのトランザクションを処理し、すべてがスムーズに進んだ場合はコミットし、例外が発生した場合はロールバックすると便利です。これは可能ですか?もしそうなら、どのように?

このトピックが何度も議論されていることは知っていますが、満足のいく答えを見つけることができませんでした。独自のソリューションを構築しました(コントローラーでTransactionScopeを作成してから、OnActionExecutedでコミット/ロールバックします)が、非常に信頼性が低いことがわかりました。