マネージ コードでの SQL Server オブジェクトの作成

通常、データベース オブジェクトを定義する場合、Transact-SQL プログラミング言語を使用します。 ただし、.NET Framework 言語を使用して、ストアド プロシージャやトリガーなどのデータベース オブジェクトの定義、および SQL Server データベースのデータの取得や更新を行うこともできます。 これらのオブジェクトは、SQL Server 共通言語ランタイム オブジェクト (SQL CLR オブジェクト) とも呼ばれます。

データベース オブジェクトを作成するには、SQL Server プロジェクトを作成して、必要な項目をプロジェクトに追加し、これらの項目にコードを追加します。 その後で、プロジェクトをアセンブリにビルドし、SQL Server に配置します。

注意

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

ビルド、配置、およびデバッグ

プロジェクトをビルドすると、アセンブリにコンパイルされ、プロジェクトでの参照やデバックが可能なデータベースに配置できます。

注意

ビルド、配置、およびデバッグの 3 つの別個の手順を実行する代わりに、[開始] コマンド (F5 キー) または [デバッグなしで開始] コマンド (CTRL+F5 キー) を使用してアセンブリをビルドし、データベースに配置して、データベース オブジェクトをデバッグできます。 F5 キーまたは Ctrl + F5 キーを使用する場合、SQL CLR データベース プロジェクトをスタートアップ プロジェクトとして設定する必要があります。 詳細については、「方法 : スタートアップ プロジェクトを設定する」を参照してください。

オプションで Transact-SQL ステートメントを PreDeployScript.sql および PostDeployScript.sql に追加することもできます。 SQL CLR データベース プロジェクトを配置する前または後に、データベースで操作を実行する必要がある場合、この処理を実行する方法もあります。

データベース オブジェクトをデバッグするには、Test.sql スクリプトに Transact-SQL コードを追加しておく必要があります。または、プロジェクトを配置したデータベースに接続している Transact-SQL エディターのインスタンスに、同じ Transact-SQL コードを追加することもできます。 スクリプトは、データベース オブジェクトを起動してテストするために必要なアクションをデータベースで実行するので、デバッグで重要な役割を果たします。 SQL CLR データベース プロジェクトに複数のデータベース オブジェクトが含まれる場合、スクリプトに Transact-SQL コードを含めて、デバッグ対象の各データベース オブジェクトを実行します。

このデバッグ スクリプトの要件は、Windows フォーム プロジェクトなど、独立した実行可能プログラムを作成および実行するプロジェクトとは異なります。 その理由は、データベース オブジェクトが、データベースの操作または呼び出しに対する応答でのみ実行されるためです。 たとえば、トリガーは、テーブルに新しい行が挿入されるとアクティブにされます。 そのため、トリガーをアクティブにするには、スクリプトでテーブルに新しい行を挿入する必要があります。 トリガーの実行結果は、Visual Studio の [出力] ウィンドウに表示されるので、トリガーが正しく実行されているかどうかを確認できます。

重要

SQL CLR アセンブリを配置またはデバッグするための適切なアクセス許可が必要です。 詳細については、「Visual Studio のデータベース機能に必要なアクセス許可」を参照してください。

各データベース オブジェクト型のサンプル コードは、各データベースの種類のトピックに記載されています。

データベース オブジェクトのデバッグ

データベース オブジェクトをデバッグすると、アセンブリがビルドされ、データベースに配置されて、デバッグされます。 以前にビルドされて配置されたデータベース オブジェクトをデバッグする場合、前回のデータベース オブジェクトのビルド後にそのプロジェクトが変更されているときだけ、アセンブリが再度ビルドされます。 アセンブリは、必ずデータベースから削除され、再度コピーされます。 詳細については、「マネージ コードを使用するデータベース オブジェクトのデバッグ (SQL CLR デバッグ)」を参照してください。

リモート デバッグを有効にするには

  1. ソリューション エクスプローラーで、リモート デバッグを有効にする SQL CLR プロジェクトを右クリックし、[プロパティ] をクリックします。

  2. [配置] タブをクリックします。

  3. [コードの配置] をクリックします。

  4. [ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。

データベース オブジェクトをデバッグするには

  1. ソリューション エクスプローラーでソリューションをクリックします。

  2. [デバッグ] メニューの [開始] をクリックします。

  3. [出力] ウィンドウの [出力元の表示] の一覧で [データベース出力] をクリックして、結果を表示します。

一般的なタスク

一般的なタスク

関連する参照先

SQL CLR データベース プロジェクトの詳細をご確認ください。開発の利点についてお読みください。NET Framework データベース オブジェクトのSQL Serverでマネージ コードを使用します。マネージ コードと比較していくつかの利点がTransact-SQL。

実践的な練習を得る。作成、展開、およびストアド プロシージャを定義するマネージ コードを使用して、プロジェクトをテストする方法に慣れるにチュートリアルを実行します。

SQL CLR データベース プロジェクトを作成します。プロジェクトを作成Visual BasicまたはVisual C#を定義するデータベース オブジェクトの定義が含まれます。

SQL CLR データベース プロジェクトに項目を追加します。最初の作成時、SQL Serverプロジェクトへの参照とアセンブリ情報のみが含まれています。 データベース オブジェクトを作成するには、プロジェクトに項目を追加してから、コードを項目に追加します。 ストアド プロシージャ、集計、トリガー、ユーザー定義関数、およびユーザー定義型を追加できます。 各 SQL Server プロジェクトおよび含まれる各オブジェクトに属性を適用する必要があります。

1 つのプロジェクトに複数のオブジェクトを定義できます。 各オブジェクトを独立して更新する必要がある場合や、結果のアセンブリを配置するデータベースで使用されていないオブジェクトもある場合などに、複数のプロジェクトを利用できます。

SQL Server にアセンブリを展開してテストします。プロジェクトの作成、アイテムを追加、これらの項目にコードを追加した後、結果のアセンブリを展開する必要があります、SQL Server、定義されているオブジェクトを使用する前に。 SQL Server プロジェクトに別の SQL Server プロジェクトの 1 つまたは複数のオブジェクトへの参照が含まれる場合、最初のプロジェクトで Deploy コマンドを使用して、2 番目の (参照される) プロジェクトを配置することはできません。 アセンブリを配置すると、テスト スクリプトを実行して簡単なテストを実行します。

デバッグ展開します。NET Framework データベース オブジェクト:データベース オブジェクトを対象に機能している場合を識別して修正するには、そのオブジェクトをデバッグすることができますコードの欠陥。

参照

  • System.Data
    System.Data 名前空間について説明し、関連するクラスの一覧を示します。

  • System.Data.Sql
    System.Data.Sql 名前空間について説明し、関連するクラスの一覧を示します。

  • System.Data.SqlTypes
    System.Data.SqlTypes 名前空間には、SQL Server 2005 内のネイティブ データ型用のクラスが用意されています。

  • Microsoft.SqlServer.Server
    Microsoft.SqlServer.Server 名前空間について説明し、関連するクラスの一覧を示します。

関連するシナリオ

  • **参照は、チーム環境でのデータベースを開発します。NET Framework データベース オブジェクト:**追加の機能を使用することができますVisual Studioリスクの軽減、チーム環境では、データベース アプリケーションの開発をスピードアップします。データベース プロジェクトのデータベース スキーマを定義し、プロジェクトをバージョン管理し、データベース単体テストを作成して目的の動作を検証できます。