C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

--/--/-- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
タグ:
トラックバック(-) | コメント(-) | このエントリーを含むはてなブックマーク
2007/12/04 22:10
スポンサーサイト
2006/09/25 19:07
前に書いたTransactionScopeによる暗黙のトランザクションの実装や、COM+による自動トランザクションは、MSDTCというWindowsサービスを利用している。
これらのトランザクション実装は、MSDTCが起動されていないと正常に動作しない。

MSDTCは Distributed Transaction Coordinator という名前でWindowsサービスに登録されている。
MSDTCが起動されていない場合は、以下のようにしてMSDTCが自動で起動するよう設定する。


  1. [ コントロール パネル ] - [ 管理ツール ] - [ サービス ] を開く。

  2. サービスの [ Distributed Transaction Coordinator ] という項目を右クリックし、プロパティを開く。

  3. [ 全般 ]タブの中にある [ スタートアップの種類 ] を [ 自動 ] に変更する。

  4. [ 開始 ] ボタンをクリックする。

  5. [ OK ] ボタンをクリックする。


これで正常にトランザクション処理が行われる。

また、SQL Server 2005のドキュメントの [ 2.5.3 Windows で MS DTC が一部無効になっている ] という項目を見ると、MS DTCを完全に有効にする手順が記載されている。

分散トランザクションを使用するリンク サーバー、分散クエリ、およびリモート ストアド プロシージャが、この問題の影響を受ける場合があります。
このような問題を回避するには、SQL Server 2005 がインストールされているサーバーで MS DTC を完全に有効にする必要があります。

と書いてあるので、そういう問題に遭遇した場合は完全に有効にすればいい(遭遇しなきゃしなくていい)ってことかな。たぶん。
2006/09/15 23:28
.NET Frameworkでは、トランザクションの実装方法が複数存在する。
大きく分けると明示的なトランザクションと暗黙的なトランザクションに分かれる。
明示的なトランザクションはトランザクションの開始,コミット,ロールバックを明示的に行う管理方法。トランザクションの開始、終了が明確に決まる。
暗黙的なトランザクションはトランザクションの開始,コミット,ロールバックが暗黙的に行われる管理方法。既にトランザクションが開始されていたらそのトランザクションに参加(便乗)する、といったことが可能。

以下に、.NET Frameworkでのトランザクション実装方法を挙げる。

【 従来からあるトランザクション実装方法 】
従来からある方法として、データベーストランザクション,手動トランザクション,自動トランザクションがある。

[ データベーストランザクション ]
ストアドプロシージャ内でのトランザクション処理。
SQL Server 2005 なら、SQL CLRにより、C#やVB.NETなどの.NET言語で実装できる。
@IT:.NETエンタープライズWebアプリケーション開発技術大全 3.2 データベーストランザクション
データベース エンジンの .NET Framework プログラミング

[ 手動トランザクション ]
ADO.NETが提供する、明示的なトランザクション処理。
トランザクションの実行
@IT:.NETエンタープライズWebアプリケーション開発技術大全 3.3 マニュアルトランザクション
SqlTransaction クラス (System.Data.SqlClient)
OracleTransaction クラス (System.Data.OracleClient)
DbTransaction クラス (System.Data.Common) (.NET Framework2.0で新しく追加された。)

[ 自動トランザクション ]
COM+を利用した、暗黙的なトランザクション処理。
COM+を利用するには、ServicedComponentクラスを継承させる。また、アセンブリを厳密名で署名し、サービスコンポーネントとして登録する必要がある。
自動トランザクションと .NET Framework クラス
方法 : .NET Framework クラスで自動トランザクションを使用する
サービス コンポーネントの作成
@IT:.NETエンタープライズWebアプリケーション開発技術大全 3.4 自動トランザクション
System.EnterpriseServices 名前空間
ServicedComponent クラス (System.EnterpriseServices)
TransactionAttribute クラス (System.EnterpriseServices)


【 .NET2.0から提供される、System.Transactions名前空間 】
.NET2.0では、新しくSystem.Transactions名前空間(System.Transactions.dll)が追加された。主なクラスとして、明示的なトランザクションを提供するCommittableTransactionクラスと、暗黙的なトランザクションを提供するTransactionScopeクラスがある。
TransactionScopeの方が手軽で、CommittableTransactionよりもTransactionScopeを使用すべきである。
トランザクション アプリケーションの作成
System.Transactions で提供される機能
.NET Framework 2.0 の System.Transactions について
トランザクション管理の昇格
System.Transactions 名前空間

[ CommittableTransactionによる明示的なトランザクション ]
明示的なトランザクション処理。CommittableTransactionよりもTransactionScopeを使用すべき。
CommittableTransaction を使用した明示的なトランザクションの実装
CommittableTransaction クラス (System.Transactions)
Transaction クラス (System.Transactions)

[ TransactionScopeによる暗黙的なトランザクション ]
COM+による自動トランザクションよりも遥かに容易に実現できる、暗黙的なトランザクション処理。
トランザクション スコープを使用した暗黙的なトランザクションの実装
10 行でズバリ !! TransactionScope の利用 (C#)
Enterprise Service および COM+ トランザクションとの相互運用性
TransactionScope クラス (System.Transactions)
TransactionScopeOption 列挙体 (System.Transactions)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。