マネージ コードを使用したデータベース オブジェクトの作成の利点
更新 : 2007 年 11 月
Transact-SQL プログラミング言語の他にも、.NET Framework 言語を使用して、データベース オブジェクトを作成し、Microsoft SQL Server 2005 データベースのデータの取得と更新を行うことができます。Visual Basic プロジェクト、Visual C# プロジェクト、または Visual C++ プロジェクトを使用すると、ストアド プロシージャ、トリガ、集計、ユーザー定義関数、およびユーザー定義型を作成できます。
メモ : |
---|
既定では、Microsoft SQL Server では共通言語ランタイム (CLR) 統合機能が無効になっており、SQL Server プロジェクト項目を使用するにはこの機能を有効にする必要があります。CLR 統合を有効にするには、sp_configure ストアド プロシージャの clr enabled オプションを使用します。詳細については、「CLR 統合の有効化」を参照してください。 |
次に、Transact-SQL の代わりに .NET Framework 言語を使用する利点の概要を示します。
プログラミング モデルの強化 .NET Framework 言語には、これまで SQL 開発者が利用できなかった構成要素と機能が用意されています。
安全性とセキュリティの強化 マネージ コードは共通言語ランタイム環境で動作し、データベース エンジンでホストされます。これにより、以前のバージョンの SQL Server で利用できた拡張ストアド プロシージャに比べ、.NET Framework データベース オブジェクトの安全性が向上し、セキュリティが強化されています。
ユーザー定義型とユーザー定義集計 ユーザー定義型とユーザー定義集計は、SQL Server のストレージ機能とクエリ機能を強化する 2 つの新しいマネージ データベース オブジェクトです。
共通の開発環境 データベース開発が、Microsoft Visual Studio 開発環境に統合されています。開発者は、データベース オブジェクトとスクリプトの開発およびデバッグを行う際に、中間層またはクライアント層の .NET Framework コンポーネントとサービスの記述に使用するものと同じツールを使用できます。
パフォーマンスの向上 データベースの各行に対して数値演算を実行する関数など、いくつかの関数は、Transact-SQL で記述されたインタープリタ コードに比べ、Visual Basic、Visual C#、または Visual C++ のプロジェクトからビルドするコンパイル済みアセンブリでより優れたパフォーマンスを示します。たとえば、整数演算を実行する関数などで特にパフォーマンスが向上します。ただし、データへのアクセスのみを行うストアド プロシージャではパフォーマンスは向上しません。
豊富な言語機能 Visual Basic、Visual C#、および Visual C++ には、配列、高度な例外処理、コードの再利用性など、Transact-SQL では利用できない機能が用意されています。
コードの再利用性 マネージ アセンブリのライブラリを、Transact-SQL のスクリプトに比べてより簡単に作成して配布できます。
機能の拡張性 Visual Basic、Visual C#、または Visual C++ を使用すると、Transact-SQL では作成できない、集計とユーザー定義型の 2 つのデータベース オブジェクトを作成できます。
既存のスキルの利用 従来データベース オブジェクトの作成に適用されてきた言語と開発環境に関するスキルを活用したり拡張したりできます。
開発経験の拡充 SQL Server のプロジェクト テンプレートを使用してデータベース オブジェクトを開発すると、プロジェクト システムと完全に統合できます。これには、ビルド、デバッグ、複数のサーバーへの配置も含まれます。
安定性と信頼性 Visual Basic、Visual C#、または Visual C++ を使用して作成したデータベース オブジェクトは、拡張ストアド プロシージャで作成した場合に比べて安全性、安定性、堅牢性、および信頼性が向上します。拡張ストアド プロシージャでは、サーバーのパフォーマンスと信頼性を低下させるメモリ リークなどの問題が発生する可能性があります。Visual Basic、Visual C#、または Visual C++ で作成したストアド プロシージャを実行するとき、メモリ管理とスレッド処理は、ストアド プロシージャによって実行されないので、より確実に処理されます。
セキュリティ Visual Basic、Visual C#、または Visual C++ で作成したデータベース オブジェクトを使用すると、これらの言語のコード アクセス セキュリティが SQL Server のユーザー ベースのアクセス許可と組み合わされます。
ストアド プロシージャとトリガ
ストアド プロシージャは、データベースの操作を実行するプログラミング ステートメントのプリコンパイルされたコレクションで、名前を付けて保存され、1 つの単位として処理されます。ストアド プロシージャの詳細については、SQL Server のドキュメントを参照してください。
トリガは、特殊なストアド プロシージャであり、1 つ以上のデータ変更操作 (UPDATE、INSERT、または DELETE) によって特定のテーブルのデータを変更するときにアクティブにされます。トリガの詳細については、SQL Server のドキュメントを参照してください。
Visual Basic、Visual C#、および Visual C++ の豊富な言語機能によって、ストアド プロシージャとトリガの開発効率が向上します。特に、ビジネス ルールの適用が必要となる複雑な手順のロジックを実装する場合に効果的です。また、.NET Framework には多くのライブラリが用意されています。暗号化のさまざまな方法、豊富な数値演算ライブラリ、および Web サービス、ファイル、B-to-B 通信システムへの外部アクセスを管理するために用意されているライブラリはとりわけ重要です。
関数
関数は、1 つ以上の値を操作して 1 つのスカラ値または 1 つのテーブルを返します。Transact-SQL プログラミング言語に用意されている関数の種類の詳細については、SQL Server のドキュメントを参照してください。
ストアド プロシージャやトリガと同じように、関数の開発効率は、Visual Basic、Visual C#、および Visual C++ の豊富な言語機能を利用したり、.NET Framework に用意されている多くのライブラリにアクセスしたりすることによって向上します。
集計
集約関数は、テーブルにあるすべてのデータの集計に使用されます。これらの関数は、一連の値について計算を実行し、単一のスカラ値を返します。Transact-SQL プログラミング言語に用意されている集約関数の詳細については、SQL Server のドキュメントを参照してください。
これらの集約関数を補足するために、より複雑な算術関数を実行する新しい集計を定義できます。たとえば、多数の行のデータについて計算を実行し、1 つの値を返すか、または連結文字列を作成することもできます。
ユーザー定義型
型はデータの性質を指定します。SQL Server に用意されている一連のシステム データ型については、SQL Server のドキュメントを参照してください。
Visual Basic、Visual C#、および Visual C++ を使用して新しい型を定義すると、SQL Server に用意されている定義済みの型以外の型を使用できます。郵便番号のような単純型を作成したり、クレジット カードのトランザクションから返される情報を解析するためのより複雑な型を作成したりできます。また、ユーザー定義型を処理する際には、SQL クライアントと SQL Server の両方でデータを解釈して操作できます。ADO.NET を使用すると、SQL Server から型定義が含まれたアセンブリをダウンロードしたり、これを使用して SQL クライアントのデータを調べたりできます。
参照
処理手順
方法 : CLR の SQL Server ストアド プロシージャを作成および実行する
方法 : CLR の SQL Server トリガを作成および実行する
方法 : CLR の SQL Server の集計を作成および実行する
方法 : CLR の SQL Server ユーザー定義関数を作成および実行する
方法 : CLR の SQL Server ユーザー定義型を作成および実行する
チュートリアル : マネージ コードでのストアド プロシージャの作成
方法 : SQL CLR のストアド プロシージャをデバッグする
概念
SQL Server の CLR 統合の概要 (ADO.NET)
マネージ コードを使用したデータベース オブジェクトの作成の利点
参照
SQL Server プロジェクトおよびデータベース オブジェクトの属性