結果セット サンプルの Readme
[このトピックはプレリリース版のドキュメントであり、今後のリリースでは変更される場合があります。空のトピックがプレースホルダーとして含まれています。ご注意 : マイクロソフトでは、より多くのコンテンツを日本語で提供できるよう、機械翻訳などの方法によってローカライズされたドキュメントを提供する場合があります。このプレリリース版の一部のコンテンツはそのような方法によってローカライズされたものです。私たちマイクロソフトは、このような方法でローカライズされたものが必ずしも最適ではなく、語彙、構文、文法における誤りを含む可能性を認識しています。このコンテンツの最終版は、従来の方法によるローカライズで行われ、その品質は旧版と同等のものになります。]
このサンプルは、SQL Server 2005 および SQL Server 2008 でのみ動作します。SQL Server 2005 より前のバージョンでは動作しません。
新しい接続を開いたりすべての結果をメモリに読み取らずに、クエリの結果を読みながらコマンドを実行することができると便利な場合があります。ADO.NET 2.0 の複数のアクティブな結果セット (MARS) 機能は、その実行を支援するテクノロジです。現在、MARS は、サーバー側プログラミングに使用されるインプロセス プロバイダには実装されていません。この制限に対処するために、サーバー側カーソルを使用することができます。このサンプルでは、サーバー側プログラミングで MARS がサポートされないことに対処するための、サーバー側カーソルの使用方法を示します。
注意
サーバー側カーソルの使用はサーバー リソースを多く消費するため、Microsoft SQL Server のクエリ オプティマイザがクエリのパフォーマンスを向上できなくなる場合があります。そのため、可能な場合は必ずコードを書き直して JOIN を使用するようにしてください。
このクラスの API は、結果セット内を前後に移動できる点を除いてデータ リーダーと同じであるため、結果セットが開かれている場合でも他のコマンドを接続上で実行することができます。
この実装は非常に単純化されているため、このサンプルを簡単に理解することができます。より効率的な実装を行うと、複数の行がフェッチされるため、データベースにかかるフェッチ行あたりの負荷を回避することができます。
このクラスを使用すると、クエリの結果すべてをデータセットに設定する場合に比べ、メモリの使用量を圧倒的に少なくすることができます。このことは、サーバー側プログラミングで非常に重要です。
また、このサンプルでは、AllowPartiallyTrustedCallers 属性を使用して、ResultSet アセンブリが他のアセンブリから安全に呼び出されるライブラリであることを指定する方法を示します。この方法はやや複雑ですが、unsafe
権限を使用して呼び出し側のアセンブリを登録する方法よりはるかに安全性に優れています。このサンプルでは、呼び出し側のアセンブリを safe
として登録することで、そのアセンブリがサーバー外部のリソースに与える影響が制限されるため、サーバーの整合性が維持されます。
インストール ディレクトリ :
C:\Program Files\Microsoft SQL Server\100\Samples\Engine\Programmability\CLR\ResultSet\
SQL Server のサンプルやサンプル データベースを表示したり使用したりするには、まずそれをダウンロードしてインストールする必要があります。詳細については、「SQL Server のサンプルとサンプル データベースのインストールに関する注意点」を参照してください。
シナリオ
Jane は Adventure Works Cycles の開発者です。すべてのデータがサーバー側クエリから返される前に、データの読み取りとその他の操作を実行するソフトウェアを作成する必要があります。
言語
Transact-SQL、Visual C#、および Visual Basic。
機能
ResultSet サンプルは、SQL Server の次の機能を使用します。
アプリケーション エリア | 機能 |
---|---|
全体 |
CLR、サーバー側カーソル、Transact-SQL |
前提条件
このサンプルを実行する前に、次のソフトウェアがインストールされていることを確認してください。
- SQL Server または SQL Server Express。SQL Server Express は、SQL Server Express ドキュメントとサンプルの Web サイトから無償で入手できます。
- AdventureWorks2008R2 データベース。SQL Server デベロッパー Web サイトから入手できます。
- SQL Server データベース エンジン サンプル。SQL Server デベロッパー Web サイトから入手できます。
- .NET Framework SDK 2.0 または Microsoft Visual Studio 2005。.NET Framework SDK は無償で入手できます。詳細については、「.NET Framework ドキュメントのインストール」を参照してください。
サンプルのビルド
強力な名前のキー ファイルをまだ作成していない場合は、次の指示に従ってキー ファイルを生成してください。
厳密な名前のキー ファイルを生成するには
Microsoft Visual Studio 2005 コマンド プロンプトを開きます。[スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK 2.0] をポイントします。次に、[SDK コマンド プロンプト] をクリックします。
-- または --
Microsoft .NET Framework コマンド プロンプトを開きます。[スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK 2.0] をポイントします。次に、[SDK コマンド プロンプト] をクリックします。
ディレクトリの移動コマンド (CD) を使用して、コマンド プロンプト ウィンドウの現在のディレクトリから、サンプルがインストールされているフォルダーに移動します。
注意
サンプルが配置されているフォルダーを調べるには、[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server]、[マニュアルとチュートリアル] の順にポイントして、[サンプル ディレクトリ] をクリックします。既定のインストール場所を使用している場合、サンプルは <system_drive>:\Program Files\Microsoft SQL Server\100\Samples にあります。
コマンド プロンプトで、次のコマンドを実行してキー ファイルを生成します。
sn -k SampleKey.snk
注意
厳密な名前のキー ペアの詳細については、MSDN の .NET Development Center にある「Security Briefs: Strong Names and Security in the .NET Framework」を参照してください。
ResultSet サンプルをビルドするには
Visual Studio 2005 および提供されている Visual Studio ソリューションを使用するか、.NET Framework SDK 2.0 に含まれている Microsoft MSBuild を使用して、サンプルをコンパイルします。コマンド プロンプトで、次のようなコマンドを実行します。
msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\ResultSet.sln
AdventureWorks データベースがインストールされていることを確認します。
既定の場所に SQL Server データベース エンジン サンプルをインストールしなかった場合、サンプルのインストール先が参照されるように、Scripts\InstallCS.sql スクリプトの CREATE ASSEMBLY 部のパスを変更します。
使用している SQL Server インスタンスの管理者でない場合は、インストールを完了するために CreateAssembly 権限が管理者から付与されている必要があります。
Visual C# プロジェクトと Visual Basic プロジェクトのどちらをコンパイルしたかに応じて、SQL Server Management Studio でファイル scripts\installCS.sql または scripts\installVB.sql を開きます。ファイルに含まれているスクリプトを実行するか、コマンド プロンプト ウィンドウで次のようなコマンドを実行します。
sqlcmd -E -I -i Scripts\InstallCS.sql
サンプルの実行
ResultSet サンプルを実行するには
Management Studio で scripts\test.sql ファイルを開き、ファイルに含まれているスクリプトを実行します。または、コマンド プロンプト ウィンドウで次のコマンドを実行します。
sqlcmd -E -I -i Scripts\test.sql
サンプルの削除
ResultSet サンプルを削除するには
SQL Server Management Studio で scripts\cleanup.sql ファイルを開き、ファイルに含まれているスクリプトを実行します。または、コマンド プロンプト ウィンドウで次のコマンドを実行します。
sqlcmd -E -I -i Scripts\cleanup.sql
備考
このサンプルを正しく機能させるためには、SQL Server または SQL Server Express の CLR を有効にする必要があります。
サンプルは、演習目的で利用するためにのみ提供されています。サンプルを運用環境で使用することは想定されていないため、運用環境でのサンプルのテストは行われていません。Microsoft では、これらのサンプルに関する製品サポート サービスを提供していません。システム管理者の承認を得ることなく、サンプル アプリケーションやサンプル アセンブリを、運用中の SQL Server データベースやレポート サーバーに接続したり、これらのデータと共に使用することは避けてください。