問題タブ [system.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.

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

architecture - System.Transactions でのトランザクション エスカレーションを回避するための戦略

したがって、私の前の質問への回答に基づいて、トランザクション中に複数の接続が開かれた場合、接続がすべて同じ接続文字列を持っていても、トランザクションは LTM から DTC に昇格します

では、次の質問は、この「機能」を回避するためにどのような戦略を採用できるかということです。リソースの使用状況に基づいて、LTM を可能な限り使用するようにしたいと考えています。適切なオブジェクト指向のビジネス ロジック レイヤーでこれを行う唯一の方法は、データ アクセス レイヤーでリクエスト レベルの静的接続オブジェクトを作成し、リクエストが完了するまでそれを呼び出し間で共有することです (暗黙の知識はここにあります)。ビジネス オブジェクト エンティティは目立たず、どのような順序で呼び出されるかわからないということです。また、接続オブジェクトをビジネス オブジェクト レイヤーにバブルアップさせたくないという事実もあります。これは、データ ストレージの実装の詳細になるからです。別のレイヤーににじみます)。

n層システムのレイヤーカプセル化を完全に台無しにしないアイデアを誰か他の人が持っていますか?

0 投票する
5 に答える
1599 参照

transactions - 取引範囲

トランザクション スコープはどのように機能しますか? 別のコンテキストが既に使用されていることをどのように認識し、コードに別の種類のスコープを実装するにはどうすればよいでしょうか。

私は主に vb.net の開発者ですが、c# を記述すれば読むことができます。

上記が曖昧すぎる場合:

system.transactions の機能とその使用方法を理解しています。私が知りたいのは、system.transactions スコープと同じ方法でそれを処理できるコードをラップできる、同様の独自のライブラリを作成する方法です。これをキャッシング モデルで使用する予定であり、大幅に強化されます。たとえば、トランザクションスコープが親スコープがあり、それにアタッチできること、またはコミットをより高いレベルまたはより高い連絡先で行う必要があることをどのように認識するかについての詳細を探しています。

たとえば、次のものがあれば

スコープ 1 はコミットされず、スコープ 2 もスコープ 3 もコミットされません。これは、それらすべての親がスコープ 1 のコンテキストであるためです。これを独自のライブラリで設定できるようにしたいと思います。

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

trace - トランザクションが DTC にエスカレートされる理由を追跡する

System.Transaction TrasactionScope が DTC にエスカレートされている理由を正確に判断する方法はありますか? トランザクションをエスカレートしているように見えるコンポーネントの 1 つにぶつかりましたが、他のすべてのコンポーネント (一見似ているように見えます) はエスカレーションを行いません。

エスカレーションの理由に関する情報は提供されていますか? また、それらをどのように見つけて観察することができますか? SQL プロファイラ? ログファイル?それとも、これで運が悪いのですか?

更新: 情報を得るために SQL Server 2005 に対して実行しています

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

c# - Java トランザクション API と .NET System.Transactions

私は、JTA (Java Transactions API) と .NET の対応する System.Transactions の間のさまざまな動作を分析しています。この 2 つの間ではアプローチがまったく異なります。Transactions実際、Java のバージョンの Transactions はどちらかというと仕様のように見え、定義された、TransactionManagerおよびその他のインターフェースのいずれかを実装する義務は開発者に委ねられています。.NET にはより具体的な実装があり、開発者が独自のTransactionオブジェクトを定義することはできませんが、トランザクションの有効期間中に管理されるリソースを処理するためのインターフェイスを提供します (Java は同じ目的でいくつかの XTA* インターフェイスを提供します)。

  • JTA を使用する Java コードを .NET に移植する機会があった人がいるかどうか、また、主な違いに気付いた人がいるかどうか疑問に思っています。

  • さらに、 (JTAで)TransactionManager.setRollbackOnly反対の振る舞いを誰かが明確にしてくれますか?TransactionManager.rollback.NET バージョンには、Transaction.Rollbackより必須のメソッドだけがあります。

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

c# - トランザクションファイルシステムアクセス用の.net永続リソースマネージャー

C#でのSystem.Transactions名前空間の使用に頭を悩ませようとしています。リソースマネージャーの使用に関するMSDNのドキュメントをいくつか見つけましたが、それは揮発性のメモリ内リソースマネージャーのみを詳細にカバーしています(Transactionalなど)。基本的に、Transactional <>のように、TransactionScope内で使用できるものを探していますが、ディスク上のファイルの書き込み/変更/削除に使用します。このようなものが標準ライブラリに存在しますか?NTFSにはトランザクションファイルシステムアクセスを許可するための「TxF」があることを読みました。これを利用する何かを.netで見つけることを期待していました。おそらく私は自分自身を実装する必要がありますか?

0 投票する
5 に答える
11253 参照

c# - SQL Server 2005 で System.Transactions を使用した場合の TransactionInDoubtException

この投稿の根底にある質問は、「プロモーションされていない LTM トランザクションが疑わしいのはなぜですか?」ということです。

System.Transactions.TransactionInDoubtException が発生しましたが、その理由を説明できません。残念ながら、この問題を再現することはできませんが、トレース ファイルによると発生します。私は SQL 2005 を使用しており、1 つのデータベースに接続し、1 つの SQLConnection を使用しているため、プロモーションが行われるとは考えていません。エラー メッセージはタイムアウトを示します。ただし、タイムアウト メッセージが表示されることもありますが、例外は、トランザクションが未確定ではなく中止されたことです。これは、処理がはるかに簡単です。

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

何か案は?なぜ私は doubpt に入ってしまったのでしょうか?

詳細については編集

私は実際にはまだこれに対する答えを持っていません。私が気付いたのは、トランザクションが実際には部分的にコミットされているということです。1 つのテーブルは挿入されますが、もう 1 つのテーブルは更新されません。コードは非常にトレースされており、何かを見逃す余地はあまりありません。

取引が促進されたかどうかを簡単に確認できる方法はありますか。スタック トレースから確認できますか? SIngle フェーズ コミット (strack トレースにあります) は、昇進していないことを示しているようですが、何かが足りないのかもしれません。昇進していない場合、どうして疑わしいのでしょうか。

パズルのもう 1 つの興味深いピースは、現在のトランザクションのクローンを作成することです。この問題の回避策としてこれを行います。 http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=914869&SiteID=1

残念ながら、この問題が解決したかどうかはわかりません。クローンの作成が問題を引き起こしている可能性があります。ここに関連するコードがあります

ありがとう

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

f# - ここでは、ネストされたメモ化に沿った何かが必​​要ですか?

System.Transactionsは、同じデータベースへの複数の接続を含むトランザクションをDTCにエスカレートすることで有名です。以下のモジュールとヘルパークラスはConnectionContext、同じデータベースに対する複数の接続要求が同じ接続オブジェクトを返すようにすることで、これを防ぐことを目的としています。これは、ある意味でメモ化ですが、メモ化されるものは複数あり、2番目は最初のものに依存しています。このモジュールで同期および/または可変状態(おそらくメモ化を使用)を非表示にする方法、またはより機能的なスタイルで書き直す方法はありますか?

(Transaction.Currentはであるため、接続文字列で接続を取得するときにロックがないことは何の価値もありませんThreadStatic。)

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

c# - MSDTC がクライアント マシンを分散トランザクションに参加させようとする

MSDTC によって記録された次の断続的な警告が表示されます。

呼び出し元がトランザクションをリモート システムに伝達しようとしましたが、マシン 'X' で MSDTC ネットワーク DTC アクセスが現在無効になっています。MS DTC 構成設定を確認してください。

ただし、マシン X では MSDTC が設計上無効になっています。これはクライアント マシンであり、トランザクションに参加するビジネスはありません。

  • TCP 経由で WCF サービスをホストする複数の Windows サービス エンドポイント
  • 下にある単一の SQL Server 2005 インスタンス
  • Linq から SQL へ
  • リモート クライアントが WCF/TCP 経由でイベント コールバックを受信する

この問題は再現が難しく、通常はサービスの再起動後に発生します。クライアント マシンへのコールバックがトランザクションのコンテキスト内で発生していると思われます。

誰かが同様の問題を見たのだろうか??

ケン

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

c# - .net が TransactionScopeOption でネストされたトランザクションを許可する方法

Oracle & sql サーバー データベースではネストされたトランザクションが許可されていないことを知りました。では、C# で transactionscopeoption を使用してネストされたトランザクションを実行するにはどうすればよいでしょうか?

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

.net - System.Transactionsの実用的な使い方は何ですか?

System.Transactions名前空間を見たことがありますが、実際にこの名前空間を使用してRDMBSを作成できますか?

しかし、いくつかの例を見たとき、System.Transactionsが単純な試行を超えて成功/失敗の結果を得る方法を理解していませんか?

これはMSDNのWebサイトの例です。非常に単純かもしれませんが、このサンプルの利点を理解できません。次のサンプルの単純なtry/catchとトランザクションスコープの違いを教えてもらえますか。

RDBMSを作成する(独自のRDMBSを作成する)ことになっている場合、実行する操作のディスクに大量のログを書き込む必要があることを理解しています。最後に、ロールバックの場合はそれらの操作を元に戻しますが、ここには何もありません。何かを元に戻すことについて。

上記の例では、何をコミットしていますか?SQLクライアントライブラリはすべて正しく機能すると思いますか?これは、System.IO.StringWriterにすべての成功テキストまたはすべての失敗テキストが含まれることを意味しますか?または、TransactionScopeのスコープ間にロックはありますか?