次の方法で共有


マネージ コードを使用したデータベース オブジェクトの作成の利点

Transact-SQL プログラミング言語のほかにも、.NET Framework 言語を使用して、データベース オブジェクトを作成し、SQL Server データベースのデータの取得と更新を行うことができます。 Visual Basic プロジェクトまたは Visual C# プロジェクトでは、ストアド プロシージャ、トリガー、集計、ユーザー定義関数、およびユーザー定義型を作成できます。 マネージ コードで記述したデータベース オプションは、SQL Server 共通言語ランタイム オブジェクト (SQL CLR オブジェクト) とも呼ばれます。

注意

既定では、SQL Server で共通言語ランタイム (CLR) 統合機能が無効になっているので、 SQL Server プロジェクト項目を使用するには、CLR 統合機能を有効にする必要があります。 そのため、sp_configure ストアド プロシージャの clr enabled オプションを使用します。 詳細については、Microsoft Web サイトの「clr enabled オプション」を参照してください。

次に、Transact-SQL の代わりに .NET Framework 言語を使用する利点の概要を示します。

  • プログラミング モデルの強化   .NET Framework 言語には、これまで SQL Server 開発者が利用できなかった構成要素と機能が用意されています。

  • 安全性とセキュリティの強化   マネージ コードは共通言語ランタイム環境で動作し、データベース エンジンでホストされます。 これにより、旧バージョンの SQL Server で利用できた拡張ストアド プロシージャに比べ、.NET Framework データベース オブジェクトの安全性が向上し、セキュリティが強化されています。 Visual Basic または Visual C# で作成したデータ オブジェクトを使用すると、これらの言語のコード アクセス セキュリティが SQL Server のユーザーに基づくアクセス許可と組み合わされます。

  • ユーザー定義型とユーザー定義集計   ユーザー定義型とユーザー定義集計は、SQL Server のストレージ機能とクエリ機能を強化する 2 つのマネージ データベース オブジェクトです。

  • 共通の開発環境   データベース開発が、Microsoft Visual Studio 開発環境に統合されています。 開発者は、データベース オブジェクトとスクリプトの開発およびデバッグを行う際に、中間層またはクライアント層の .NET Framework コンポーネントとサービスの記述に使用するものと同じツールを使用できます。

  • パフォーマンスの向上   データベースの各行に対して数値演算を実行する関数など、いくつかの関数は、Transact-SQL で記述されたインタープリター コードに比べ、Visual Basic プロジェクトや Visual C# プロジェクトからビルドするコンパイル済みアセンブリでより優れたパフォーマンスを示します。 たとえば、整数演算を実行する関数などで特にパフォーマンスが向上します。 ただし、データへのアクセスのみを行うストアド プロシージャではパフォーマンスは向上しません。

  • 高機能な言語   Visual Basic または Visual C# には、Transact-SQL では利用できない機能があります。たとえば、配列、高度な例外処理、コードの再利用性などです。

  • コードの再利用性   マネージ アセンブリのライブラリを、Transact-SQL のスクリプトに比べてより簡単に作成して配布できます。

  • 拡張を用いたVisual BasicまたはVisual C#を使用して作成することはできません 2 つのデータベース オブジェクトを作成することができますTransact-SQL:集計、ユーザー定義型。

  • 既存のスキルの利用   従来データベース オブジェクトの作成に適用されてきた言語と開発環境に関するスキルを活用したり拡張したりできます。

  • 開発経験の拡充   SQL Server のプロジェクト テンプレートを使用してデータベース オブジェクトを開発すると、プロジェクト システムと完全に統合できます。 これには、ビルド、デバッグ、複数のサーバーへの配置も含まれます。

  • 安定性と信頼性   Visual Basic または Visual C# を使用して作成したデータベース オブジェクトは、拡張ストアド プロシージャで作成した場合に比べて安全性、安定性、堅牢性、および信頼性が向上します。拡張ストアド プロシージャでは、サーバーのパフォーマンスと信頼性を低下させるメモリ リークなどの問題が発生する可能性があります。 Visual Basic または Visual C# で作成したストアド プロシージャを実行するとき、メモリ管理とスレッド処理は、ストアド プロシージャによって実行されないので、より確実に処理されます。

ストアド プロシージャとトリガー

ストアド プロシージャは、データベースの操作を実行するプログラミング ステートメントのプリコンパイルされたコレクションで、名前を付けて保存され、1 つの単位として処理されます。 ストアド プロシージャの詳細については、SQL Server のドキュメントを参照してください。

トリガーは、データ変更操作の 1 つ以上を使用して、指定したテーブル内のデータを変更した場合にアクティブ化ストアド プロシージャの特殊です。更新、挿入、または削除します。 データ定義言語 (DDL) ステートメントに応答して発生するデータベース レベルのトリガーを作成することもできます。 このようなトリガーは、データベース操作の監査や制御など、データベースに対する管理タスクを実行するのに使用できます。 トリガーの詳細については、SQL Server のドキュメントを参照してください。

Visual Basic および Visual C# の豊富な言語機能によって、ストアド プロシージャとトリガーの開発効率が向上します。特に、ビジネス ルールの適用が必要となる複雑な手順のロジックを実装する場合に効果的です。 また、.NET Framework には多くのライブラリが用意されています。 暗号化のさまざまな方法、豊富な数値演算ライブラリ、および Web サービス、ファイル、B-to-B 通信システムへの外部アクセスを管理するために用意されているライブラリはとりわけ重要です。

関数

関数は、1 つ以上の値を操作して 1 つのスカラー値または 1 つのテーブルを返します。 Transact-SQL プログラミング言語に用意されている関数の種類の詳細については、SQL Server のドキュメントを参照してください。

ストアド プロシージャやトリガーと同じように、関数の開発効率は、Visual Basic および Visual C# の豊富な言語機能を利用したり、.NET Framework に用意されている多くのライブラリにアクセスしたりすることによって向上します。

集計

集約関数は、テーブルにあるすべてのデータの集計に使用されます。 これらの関数は、一連の値について計算を実行し、単一のスカラー値を返します。 Transact-SQL プログラミング言語に用意されている集計関数の詳細については、SQL Server のドキュメントを参照してください。

これらの集約関数を補足するために、より複雑な算術関数を実行する新しい集計を定義できます。 たとえば、多数の行のデータについて計算を実行し、1 つの値を返すか、または連結文字列を作成することもできます。

ユーザー定義型

型はデータの性質を指定します。 SQL Server に用意されている一連のシステム データ型については、SQL Server のドキュメントを参照してください。

Visual Basic および Visual C# を使用して新しい型を定義すると、SQL Server に用意されている定義済みの型以外の型を使用できます。 郵便番号のような単純型を作成したり、クレジット カードのトランザクションから返される情報を解析するためのより複雑な型を作成したりできます。 また、ユーザー定義型を処理する際には、SQL クライアントと SQL Server の両方でデータを解釈して操作できます。ADO.NET を使用すると、SQL Server から型定義が含まれたアセンブリをダウンロードしたり、これを使用して SQL クライアントのデータを調べたりできます。

参照

処理手順

方法: SQL Server 共通言語ランタイム統合機能を使用するデータ オブジェクトのプロジェクトを作成する

方法: 共通言語ランタイム統合機能を使用して SQL Server ストアド プロシージャを作成および実行する

方法: 共通言語ランタイム統合機能を使用して SQL Server のトリガーを作成および実行する

方法: 共通言語ランタイム統合機能を使用して SQL Server の集計を作成および実行する

方法: 共通言語ランタイム統合機能を使用して SQL Server のユーザー定義関数を作成および実行する

方法: 共通言語ランタイム統合機能を使用して SQL Server のユーザー定義型を作成および実行する

チュートリアル : マネージ コードでのストアド プロシージャの作成

方法 : SQL CLR のストアド プロシージャをデバッグする

参照

SQL CLR データベース プロジェクトおよびデータベース オブジェクトの属性

概念

SQL Server の CLR 統合の概要 (ADO.NET)

マネージ コードを使用したデータベース オブジェクトの作成の利点