問題タブ [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.
transactions - SQL Server 2000 および System.Transactions.TransactionScope()
SQL2000 で TransactionScope() を使用して LIGHTWEIGHT トランザクションを作成することは可能ですか? または、そうでない場合、CommitableTransaction および/または同様のものを使用した回避策はありますか?
したがって、基本的には、「SQL2000 でローカルから 1 サーバーへのトランザクションが必要な場合は、TransactionScope() を使用しないでください」というのが答えです。
c# - 「操作はトランザクションの状態に対して無効です」エラーとトランザクションスコープ
SELECTステートメントを含むストアドプロシージャを呼び出そうとすると、次のエラーが発生します。
操作はトランザクションの状態に対して無効です
これが私の呼び出しの構造です:
トランザクション内で同じデータベースへの別の接続を作成することに問題がありますか?
linq-to-sql - Sql Server 2000 に対する TransactionScope エラー - パートナー トランザクション マネージャーがリモート/ネットワーク トランザクションのサポートを無効にしました
Sql 2000 データベースに対する Linq-to-Sql アクションの単純なトランザクションを設定しようとしています。TransactionScope を使用すると、次のようになります。
ただし、次のエラーが発生し続けます。
パートナー トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。(HRESULT からの例外: 0x8004D025)
しかし、従来のトランザクションを使用してトランザクションをセットアップすると、問題なく動作します。したがって、これは正常に機能します:
TransactionScope が、私の 2 番目の実装とは裏で何か違うことをしているのだろうかと思っています。そうでない場合、TransactionScope を使用しないと何が失われますか? また、エラーの原因に関するガイダンスも役立ちます。MSDTC が SQL サーバーとクライアント マシンの両方で実行されていることを確認しました。
nunit - これは安全ですか?- NUnit 基本クラスは、TransactionScope を開いてロールバックします
私は、SetUp フェーズ中に TransactionScope を開き、ティアダウン中にトランザクションをロールバックする NUnit テスト フィクスチャの基本クラスを作成するとよいと考えていました。このようなもの:
これは良い考えだと思いますか?
明らかに、データベースは単なるテスト データベースであり、ライブ データベースではありませんが、単体テストからのジャンク データでいっぱいになると、やはり面倒です。
大量のデータ アクセスを伴う単体テストを実行するとき、他の人は何をしますか?
c# - TransactionScope がトランザクションをロールバックしない
これが私のトランザクション スコープ ソース コードの現在のアーキテクチャです。3 番目の挿入は .NET 例外 (SQL 例外ではない) をスローし、前の 2 つの挿入ステートメントをロールバックしていません。私が間違っていることは何ですか?
編集: insert2 と insert3 から try/catch を削除しました。また、insert1 の try/catch から例外処理ユーティリティを削除し、"throw ex" を配置しました。それでもトランザクションはロールバックされません。
編集 2: Insert3 メソッドに try/catch バックを追加し、catch ステートメントに「スロー」を追加しました。それでもトランザクションはロールバックされません。
更新:私が受け取ったフィードバックに基づいて、「SqlHelper」クラスは SqlConnection オブジェクトを使用してデータベースへの接続を確立し、次に SqlCommand オブジェクトを作成し、CommandType プロパティを「StoredProcedure」に設定して、SqlCommand の ExecuteNonQuery メソッドを呼び出します。
また、Transaction Binding=Explicit Unbind を現在の接続文字列に追加しませんでした。次のテストで追加します。
transactions - 取引範囲
トランザクション スコープはどのように機能しますか? 別のコンテキストが既に使用されていることをどのように認識し、コードに別の種類のスコープを実装するにはどうすればよいでしょうか。
私は主に vb.net の開発者ですが、c# を記述すれば読むことができます。
上記が曖昧すぎる場合:
system.transactions の機能とその使用方法を理解しています。私が知りたいのは、system.transactions スコープと同じ方法でそれを処理できるコードをラップできる、同様の独自のライブラリを作成する方法です。これをキャッシング モデルで使用する予定であり、大幅に強化されます。たとえば、トランザクションスコープが親スコープがあり、それにアタッチできること、またはコミットをより高いレベルまたはより高い連絡先で行う必要があることをどのように認識するかについての詳細を探しています。
たとえば、次のものがあれば
スコープ 1 はコミットされず、スコープ 2 もスコープ 3 もコミットされません。これは、それらすべての親がスコープ 1 のコンテキストであるためです。これを独自のライブラリで設定できるようにしたいと思います。
c# - TransactionScope はどのようにトランザクションをロールバックしますか?
いくつかのオブジェクトをデータベースに挿入し、メソッドがそれらのオブジェクトを取得するかどうかを確認する統合テストを書いています。
私のデータベースへの接続はNHibernateを介しています...そして、そのようなテストを作成する私の通常の方法は、次のことを行うことです:
しかし、私は最近、明らかにこの目的に使用できるTransactionScopeについて知りました...
私が見つけたコード例は次のとおりです。
txScope.Complete()
挿入されたデータがロールバックされる行を含めないと、私は信じています。しかし、残念ながら、それがどのように可能であるかはわかりません...オブジェクトは、オブジェクトとオブジェクトのトランザクションをデータベース上でどのようtxScope
に追跡しますか。deptAdapter
empAdapter
ここで少し情報が不足しているように感じます...を使用してコードを囲むことで、 BeginTransaction()
and ) 呼び出しを本当に置き換えることができますか?RollbackTransaction(
TransactionScope
TransactionScope
そうでない場合、トランザクションをロールバックするためにどのように機能しますか?
sharepoint - SharePoint 2007: トランザクション内で一連の操作を実行するにはどうすればよいですか?
トランザクション内の SharePoint コンテキストで一連の操作を実行する方法を知りたいです。たとえば、次のようなことができるようになりたいです。
OOTB API ではこれが不可能であることはわかっていますが、誰かがこれを達成する方法を考え出さなければなりません。トランザクションを処理するためにデータベース接続への参照を取得することは可能ですか? または他のアイデアはありますか?
.net - .Net では、デフォルトのアプリケーション全体の分離レベルを指定できますか?
オブジェクトを使用している場合、トランザクション オプションを使用しTransactionScope
て分離レベルを指定できます。
何も指定されていない場合に使用されるデフォルトの分離レベルは?
によって使用されるアプリケーション全体のデフォルトの分離レベルを設定することは可能TransactionScope
ですか?
sql-server - NOLOCKでADO.NET TransactionScopeとExecuteCommandを使用する大量のサイト、READ UNCOMMITTEDを直接?
Omar のブログでこの興味深い記事を読んでください。Linq to SQL は、コミットされていない読み取りを使用してトランザクションのデッドロックとクエリのタイムアウトの問題を解決します。
ここで解決しようとしている問題は、SQL の意味から、NOLOCK で Select ステートメントを使用するか、SET TRANSACTION LEVEL READ UNCOMMITTED を使用する必要があることです。そうしないと、DB の大量の行がロックされ、エラーが発生します。Omar が使用しているテクノロジは Linq2Sql です。問題は、C# データ アクセス コードでこれをどのように実現して、上記のことが起こらないようにするかということです。
基本的に、この投稿では、Omar は実際のサイトで作業し、SqlProfiler などのツールを使用してテストすることで解決策にたどり着きますが、Javed Hasan は MSDN ドキュメントや Scott Hanselman のブログ投稿などを使用して解決策にたどり着きます。
Omar は、次の使用を提案しています。
ジャベド・ハサンが提案するのに対し
StatckOverflow のようなボリュームの多いサイトで、この特定の問題について皆さんが何をしたか、またはこの点に関してジェフとその関係者が何をしたかを知りたいです。
編集: 最初の投稿を読んだ後、Omar の投稿でいくつか指摘したいことがあります。
- 彼は彼のアプローチで接続の問題に遭遇しましたが、彼はそれを解決しました。彼の投稿を参照してください。
- さらに重要なことに、彼は ADO.NET トランザクションの使用方法を試し、Scott Hanselman が彼のブログに書いたことを試してみたと述べましたが、大量のサイトでは機能せず、パフォーマンスがかなり低下します。Omar 氏は次のように述べています。量のウェブサイト。」