問題タブ [nested-transactions]
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.
database - ネストされたトランザクションが必要なケースは何ですか?
トランザクションがネストされていても、最も外側のトランザクションがコミットされるまで更新されません。では、ネストされたトランザクションの意味と、この機能が必要になる特定の状況は何でしょうか?
sql-server - ネストされたトランザクションを使用したSQLTry/Catchロジック
次のsprocは、この記事のテンプレートに従って実装されています。例外処理とネストされたトランザクション。このsprocはデッドロックを処理することになっており、すでにトランザクションを作成している別のsprocによって呼び出されます。次の例外が発生するため、内部トランザクションのBEGIN/COMMITの一部のマジックが一致しませんTransaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0
。私が理解している限り、catchは実行され、@xstate = -1
trueであり、外部トランザクション全体がロールバックされます。
不一致が発生するアイデアはありますか?
sql-server - トランザクションの保存とトランザクションの開始(SQL Server)トランザクションを適切にネストする方法
特定の状況下で、実行したすべてを元に戻してエラーコードを呼び出し元に返すか、受け入れ/コミットして成功を呼び出し元に返すことができるように、セーブポイントを設定する必要があるストアドプロシージャがあります。しかし、発信者がすでにトランザクションを開始しているかどうかに関係なく、動作する必要があります。ドキュメントは、このテーマに関して非常に混乱しています。これがうまくいくと思うことですが、すべての影響については確信がありません。
問題は、これStored Procedure (SP)
は他の人から呼ばれているということです。そのため、ユーザーがトランザクションを開始したかどうかはわかりません...ユーザーにSPを使用するためにトランザクションを開始するように要求した場合でも、Save Points
...の適切な使用について質問があります。
私のSPは、トランザクションが進行中であるかどうかをテストし、進行中でない場合は、で開始しBEGIN TRANSACTION
ます。トランザクションがすでに進行中の場合は、代わりに、を使用して保存ポイントを作成し、SAVE TRANSACTION MySavePointName
これが私が行ったことであるという事実を保存します。
次に、変更をロールバックする必要がある場合、BEGIN TRANSACTION
以前に行った場合は、ロールバックしますROLLBACK TRANSACTION
。セーブポイントを実行した場合は、実行しますROLLBACK TRANSACTION MySavePointName
。このシナリオはうまく機能しているようです。
ここで少し混乱します。これまでに行った作業を維持したい場合は、トランザクションを開始した場合に実行しCOMMIT TRANSACTION
ます。しかし、セーブポイントを作成した場合はどうなりますか?試しCOMMIT TRANSACTION MySavePointName
ましたが、呼び出し元がトランザクションをコミットしようとしてエラーが発生します。
COMMIT TRANSACTION要求には、対応するBEGINTRANSACTIONがありません。
だから私は疑問に思っています-セーブポイントはロールバックできます(それは機能します:ROLLBACK TRANSACTION MySavePointName
呼び出し元のトランザクションをロールバックしません)。しかし、おそらくそれを「コミット」する必要はないのでしょうか。ロールバックする必要がある場合に備えて、そのまま残りますが、元のトランザクションがコミット(またはロールバック)されると消えますか?
トランザクションを「ネスト」する「より良い」方法がある場合は、同様にいくつかの光を当ててください。ネストする方法がわかりませんがBEGIN TRANSACTION
、内部トランザクションをロールバックまたはコミットするだけです。単にデクリメントしROLLBACK
ながら、常に最上位のトランザクションにロールバックするようです。COMMIT
@@trancount
jakarta-ee - EJB 3.0 - ネストされたトランザクション != 新規が必要?
「EJB 3.0 のマスター」のトランザクションの章 (10) を読んだところですが、ネストされたトランザクションについて混乱しています。
その本は言う
「EJB 定義のトランザクション マネージャーは、ネストされたトランザクションをサポートしていません。フラットなトランザクションのみをサポートする必要があります。」(サイト278、注意)
この事実はこの本だけでなく、他の本やウェブサイトにも書かれています。
しかし、"Requires New" アノテーション付き Methode から "Required" アノテーション付き Methode を呼び出すと、ネストされたトランザクションになりますよね? 外部トランザクションに影響を与えることなく、内部トランザクションをロールバックまたはコミットできます。また、外側のトランザクションを中止したい場合は、EJBException をスローして戻すと、トランザクション全体がロールバックされます。
この動作がEJB 3.0 仕様で要求されていないということだけですか、それとも何か誤解しているのでしょうか? ネストされたトランザクションと説明されている動作の違いがわかりません。
よろしくノーマン
sql-server - ネストされたトランザクションの目的
入れ子になったトランザクションが何に役立つのか、私には理解できませんでした。入れ子になったトランザクションをコミットしても、何もコミットされません。減少するだけ@@TRANCOUNT
です。そして、ROLLBACK
すべてをロールバックします。
これとの違いは何ですか:
ネストされたトランザクションを使用する必要がある理由と、それらがどのように違いを生むかの例を教えてください。
java - ネストされたトランザクションがJTAでサポートされていない理由
ネストされたトランザクションがJTAでサポートされていないのはなぜですか?それは、それらを実装することの複雑さ(私は疑わしい)またはいくつかの設計原則のためですか?
c# - 既存のトランザクション スコープがアクティブかどうかを確認する
私は使っている:
すべてのトランザクションを作成します。私が直面している問題は、 2 をネストTransactionUtils.CreateTransactionScope()
するとエラーが発生することです: Time-out interval must be less than 2^32-2. Parameter name: dueTm
. これは、子トランザクションを親トランザクションにアタッチしようとしていて、組み合わせたタイムアウトが大きすぎるためだと思います。
タイムアウトの設定を避けるために、新しく作成されたトランザクションがネストされたトランザクションになるかどうかを確認する方法はありますか?
別の方法は、パラメーターを渡すことです。これにより、パラメーターCreateTransactionScope()
がネストされていてタイムアウトを設定していないことを伝えることができますが、それを自動的に処理する方法を見つけたいと思います。
sql-server - try catch でネストされたトランザクションを管理する方法
エラー発生:
メッセージ 3931、レベル 16、状態 1、行 17 現在のトランザクションをコミットできず、セーブポイントにロールバックできません。トランザクション全体をロールバックします。
これを処理する方法。
c# - ネストされたトランザクション スコープ .net
SQL Server 2008 R2 を使用しており、トランザクションを使用しようとしています。
最初に .net と SQL Server のトランザクションに関する質問です。こんなのあったら
どの時点でデータベースを呼び出して、新しく挿入された質問のコードを要求する必要がありますか。2 番目の質問です。質問する前に、このリンクNested Transactionを見つけました。上記のリンクに照らして、私はこのようなものがあるかどうかまだ尋ねたいです
内部スコープが完了すると、SQL Server にクエリを実行すると、新しく作成された質問のコードが表示されます。
内側のスコープが例外をスローし、それをむさぼり食うとどうなりますか?外側のスコープも破棄されますか?
innerscope.Complete() を呼び出すと、その内部スコープが完成しますか?