System.Transactions サンプル
更新 : 2005 年 12 月 5 日
System.Transactions サンプルは、System.Transactions 名前空間にあるマネージ API を使用してトランザクションを制御する方法を示しています。このサンプルで System.Transactions.TransactionScope クラスは、要求に応じるのに十分な在庫が存在する場合を除き、ある場所から別の場所への移動をアトミック レベルで行える程度の在庫が存在する場合に、在庫数が調整されないように、トランザクション境界を確立するために使用されています。分散トランザクションでの自動登録は、別のサーバーに格納された監査データベースに在庫の変更をログ記録する動作で示されています。
このサンプルは、メイン サンプル サーバーと監査サーバーの 2 台の物理コンピュータに分けてインストールする必要があります。
インストール ディレクトリは、drive:\Program Files\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\Transaction\ です。
シナリオ
Jane は Adventure Works Cycles の開発者です。Jane は、1 つのトランザクション内でのある場所から別の場所への在庫移動を一貫して追跡し、どんな在庫変更についても監査を行う必要があります。
言語
Transact-SQL、Visual C#、および Visual Basic。
機能
System.Transactions サンプルでは、SQL Server の次の機能を使用しています。
アプリケーション エリア | 機能 |
---|---|
全体 |
共通言語ランタイム (CLR)、トランザクション、分散トランザクション、ADO .NET、MSDTC |
前提条件
このサンプルを実行する前に、次のソフトウェアがインストールされていることを確認してください。
- Microsoft SQL Server 2005 または Microsoft SQL Server 2005 Express Edition (SQL Server Express)。SQL Server Express は、SQL Server 2005 Express Edition ドキュメントとサンプルの Web サイトから無償で入手できます。
- SQL Server 2005 に付属の AdventureWorks データベース。SQL Server デベロッパー Web サイトからも入手できます。
- SQL Server 2005 データベース エンジンのサンプル。これらのサンプルは SQL Server 2005 に含まれています。これらの最新バージョンは、SQL Server デベロッパー Web サイトからダウンロードできます。
- .NET Framework SDK 2.0 または Microsoft Visual Studio 2005。.NET Framework SDK は無料で入手できます。詳細については、「.NET Framework SDK のインストール」を参照してください。
- Microsoft 分散トランザクション コーディネータ (MSDTC)。MSDTC は、着信および発信のクライアント接続が許可されるように構成する必要があります。MSDTC は、このサンプルで使用する 2 台のサーバーにインストールして構成する必要があります。詳細については、コンポーネント サービスのドキュメントを参照してください。
このサンプルを実行する前に、次のコンポーネントを構成してください。
- どちらか一方のサーバーで Windows ファイアウォールが有効な場合は、両方のサーバーで、SQL Server 接続および MSDTC 接続が許可されるようにファイアウォールを構成します。詳細については、Windows ファイアウォールのマニュアルを参照してください。
- SQL Server セキュリティ構成ツールを使用して、監査サーバー上で SQL Server 2005 へのリモート アクセスを有効にします。
サンプルのビルド
まだ厳密な名前のキー ファイル ExternalSampleKey.snk を作成していない場合は、次の手順に従ってキー ファイルを生成します。
厳密な名前のキー ファイルを生成するには
Microsoft Visual Studio 2005 コマンド プロンプトを開きます。[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft Visual Studio 2005]、[Visual Studio Tools] の順にポイントして、[Visual Studio 2005 コマンド プロンプト] をクリックします。
または
Microsoft .NET Framework コマンド プロンプトを開きます。[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft .NET Framework SDK v2.0] の順にポイントして、[SDK コマンド プロンプト] をクリックします。
コマンド プロンプトでディレクトリ変更 (CD) コマンドを使用して、コマンド プロンプト ウィンドウの現在のフォルダを Samples フォルダに変更します。
メモ : サンプルが配置されているフォルダを調べるには、[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server 2005]、[マニュアルとチュートリアル] の順にポイントして、[サンプル ディレクトリ] をクリックします。既定のインストール場所を使用している場合、サンプルは <system_drive>:\Program Files\Microsoft SQL Server\90\Samples にあります。 コマンド プロンプトで、次のコマンドを実行してキー ファイルを生成します。
sn -k ExternalSampleKey.snk
重要 : 厳密な名前のキー ペアの詳細については、MSDN の .NET Development Center にある「Security Briefs: Strong Names and Security in the .NET Framework」を参照してください。
System.Transactions サンプルをビルドするには
CS\Transaction\InventoryMover.cs を編集し、文字列定数 auditConnectionString の値を変更して、このサンプルの監査情報を格納するサーバーに適切な名前を付けます。このサーバーは、このサンプルのメイン部分をインストールする際に使用する物理コンピュータとは別の物理コンピュータにする必要があります。SQL Server 認証を使用するテスト アカウントを監査サーバーで設定してから、このアカウントに指定したユーザー名とパスワードが指定されるように auditConnectionString を変更します。
Visual Studio 2005 および提供されている Visual Studio ソリューションを使用するか、.NET Framework SDK 2.0 に含まれている Microsoft MSBuild を使用して、サンプルをコンパイルします。コマンド プロンプトで、次のようなコマンドを実行します。
msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\Transaction.sln
AdventureWorks データベースがインストールされていることを確認します。
既定の場所に SQL Server エンジン サンプルをインストールしなかった場合、サンプルのインストール先が参照されるように、Scripts\InstallCS.sql スクリプトと Scripts\InstallVB.sql スクリプトの CREATE ASSEMBLY 部のパスを変更します。
使用している SQL Server インスタンスの管理者でない場合、インストールを完了するためには、CreateAssembly 権限が管理者から許可されている必要があります。
Visual C# プロジェクトと Visual Basic プロジェクトのどちらをコンパイルしたかに応じて、Microsoft Management Studio でファイル scripts\installCS.sql または scripts\installVB.sql を開きます。メイン サンプル サーバーと接続された状態でこのファイルに含まれているスクリプトを実行するか、メイン サンプル サーバーのコマンド プロンプト ウィンドウで次のようなコマンドを実行します。
sqlcmd -E -I -i Scripts\InstallCS.sql
Microsoft Management Studio で、scripts\installDB.sql ファイルを開きます。監査サーバーに接続された状態でこのファイルに含まれているスクリプトを実行するか、監査サーバーのコマンド プロンプト ウィンドウで次のようなコマンドを実行します。
sqlcmd -E -I -i Scripts\InstallDB.sql
サンプルの実行
System.Transactions サンプルを実行するには
Management Studio で scripts\test.sql ファイルを開きます。ファイルに含まれているスクリプトを実行するか、コマンド プロンプト ウィンドウで次のコマンドを実行します。
sqlcmd -E -I -i Scripts\test.sql
サンプルの削除
System.Transactions サンプルを削除するには
Management Studio で scripts\cleanup.sql ファイルを開きます。このファイルに含まれているスクリプトをメイン サンプル サーバーで実行するか、メイン サンプル サーバーのコマンド プロンプト ウィンドウで次のコマンドを実行します。
sqlcmd -E -I -i Scripts\cleanup.sql
Management Studio で scripts\cleanup.sql ファイルを開きます。このファイルに含まれているスクリプトを監査サーバーで実行するか、監査サーバーのコマンド プロンプト ウィンドウで次のコマンドを実行します。
sqlcmd -E -I -i Scripts\cleanupDB.sql
コメント
このサンプルを正しく機能させるためには、SQL Server 2005 または SQL Server Express の CLR を有効にする必要があります。
サンプルは、演習目的で利用するためにのみ提供されています。サンプルを運用環境で使用することは想定されていないため、運用環境でのサンプルのテストは行われていません。Microsoft では、これらのサンプルに関する製品サポート サービスを提供していません。システム管理者の承認を得ることなく、サンプル アプリケーションやサンプル アセンブリを、運用中の SQL Server データベースやレポート サーバーに接続したり、これらのデータと共に使用することは避けてください。