次の方法で共有


CLR データベース オブジェクトをデプロイする

適用対象:SQL Server

配置は、完了したアプリケーションまたはモジュールを別のコンピューターにインストールし、実行するために配布するプロセスです。 Visual Studio を使用すると、共通言語ランタイム (CLR) データベース オブジェクトを開発し、テスト サーバーに配置できます。 または、マネージド データベース オブジェクトは、Visual Studio ではなく、.NET Framework 再配布ファイルを使用してコンパイルすることもできます。 コンパイル後、VISUAL Studio または Transact-SQL ステートメントを使用して、CLR データベース オブジェクトを含むアセンブリをテスト サーバーに配置できます。

CLR メソッドがテスト サーバーでテストおよび検証されると、デプロイ スクリプトを使用して実稼働サーバーに配布できます。 デプロイ スクリプトは、手動で生成することも、SQL Server Management Studio を使用して生成することもできます (この記事の後半で説明します)。

CLR 統合機能は、SQL Server では既定で無効になっており、CLR アセンブリを使用するには有効にする必要があります。 詳細については、「CLR 統合を有効にする」を参照してください。

アセンブリをテスト サーバーに配置する

Visual Studio を使用し、CLR 関数、プロシージャ、トリガー、ユーザー定義型 (UDT)、またはユーザー定義集計 (UDA) を開発したり、これらをテスト サーバーに配置することができます。 これらのマネージド データベース オブジェクトは、.NET Framework 再配布ファイルに含まれる csc.exe や vbc.exe などのコマンド ライン コンパイラによりコンパイルすることもできます。 Visual Studio 統合開発環境は、SQL Server 用のマネージド データベース オブジェクトを開発するために必要ありません。

すべてのコンパイラ エラーおよび警告が解決されていることを確認してください。 CLR ルーチンを含むアセンブリは、Visual Studio または Transact-SQL ステートメントを使用して SQL Server データベースに登録できます。

Note

リモート開発、デバッグ、開発に Visual Studio を使用するには、SQL Server インスタンスで TCP/IP ネットワーク プロトコルを有効にする必要があります。 サーバーで TCP/IP プロトコルを有効にする方法の詳細については、「クライアント プロトコルの構成」を参照してください。

Visual Studio を使用してアセンブリを配置する

  1. [ビルド] メニュー [プロジェクト名のビルド <>選択して、プロジェクト ビルドします。

  2. アセンブリをテスト サーバーに配置する前に、すべてのビルド エラーおよび警告を解決します。

  3. Build メニューから Deploy を選択します。 その後、アセンブリは、VISUAL Studio で SQL Server プロジェクトが最初に作成されたときに指定された SQL Server インスタンスとデータベースに登録されます。

Transact-SQL を使用してアセンブリを配置する

  1. .NET Framework に含まれるコマンド ライン コンパイラを使用して、ソース ファイルからアセンブリをコンパイルします。

  2. C# ソース ファイルの場合:

    csc /target:library C:\helloworld.cs

  3. Visual Basic ソース ファイルの場合:

    vbc /target:library C:\helloworld.vb

これらのコマンドは、ライブラリ DLL のビルドを指定する /target オプションを使用して C# または Visual Basic コンパイラを起動します。

  1. アセンブリをテスト サーバーに配置する前に、すべてのビルド エラーおよび警告を解決します。

  2. テスト サーバーで SQL Server Management Studio を開きます。 適切なテスト データベース (AdventureWorks2022など) に接続された新しいクエリを作成します。

  3. 次の Transact-SQL をクエリに追加して、サーバーにアセンブリを作成します。

    CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE;

  4. その後、プロシージャ、関数、集計、ユーザー定義型、またはトリガーを SQL Server のインスタンスに作成する必要があります。 HelloWorld アセンブリに Procedures クラスの HelloWorld という名前のメソッドが含まれている場合は、次の Transact-SQL をクエリに追加して、sql Server で hello というプロシージャを作成できます。

    CREATE PROCEDURE hello AS
    EXTERNAL NAME HelloWorld.Procedures.HelloWorld;
    

SQL Server でさまざまな種類のマネージド データベース オブジェクトを作成する方法の詳細については、次を参照してください。

  • CLR ユーザー定義関数 を する
  • CLR ユーザー定義集計 を する
  • CLR ユーザー定義型の
  • CLR ストアド プロシージャ を する
  • CLR トリガーの

アセンブリを運用サーバーに配置する

CLR データベース オブジェクトは、テスト サーバーでテストおよび検証されると、実稼働サーバーに配布できます。 マネージド データベース オブジェクトのデバッグの詳細については、「CLR データベース オブジェクトをデバッグする方法」を参照してください。

マネージド データベース オブジェクトの配置は、通常のデータベース オブジェクト (テーブル、Transact-SQL ルーチンなど) と似ています。 CLR データベース オブジェクトを含むアセンブリは、配置スクリプトを使用して別のサーバーに配置できます。 デプロイ スクリプトは、Management Studio の スクリプトの生成 機能を使用してビルドできます。 デプロイ スクリプトは、手動でビルドすることも、スクリプトの生成 を使用してビルドしたり、手動で変更したりすることもできます。 デプロイ スクリプトをビルドしたら、SQL Server の他のインスタンスで実行して、マネージド データベース オブジェクトをデプロイできます。

スクリプトの生成を使用してデプロイ スクリプトを生成する

  1. Management Studio を開き、デプロイするマネージド アセンブリまたはデータベース オブジェクトが登録されている SQL Server インスタンスに接続します。

  2. オブジェクト エクスプローラーで、<サーバー名>Databases ツリーを展開します。 マネージド データベース オブジェクトが登録されているデータベースを右クリックし、 Tasksを選択し、 Generate Scripts を選択します。 スクリプト作成ウィザードが開きます。

  3. リスト ボックスからデータベースを選択し、[次へ]選択します。

  4. スクリプト オプションの選択 ペインで、[次へ]選択するか、オプションを変更して、[次 ] を選択します。

  5. [ Choose オブジェクトの種類 ペインで、デプロイするデータベース オブジェクトの種類を選択します。 [次へ] を選択します。

  6. [ Choose オブジェクトの種類 ] ウィンドウで選択したすべてのオブジェクトの種類に対して、 Choose <type> ペインが表示されます。 このペインでは、指定したデータベースに登録されているデータベース オブジェクトの種類のすべてのインスタンスから、いずれかのオブジェクトを選択できます。 1 つ以上のオブジェクトを選択し、[次へ]選択します。

  7. 出力オプション ペインは、目的のデータベース オブジェクトの種類がすべて選択されると表示されます。 [ファイル Script] を選択し スクリプトのファイル パスを指定します。 [次へ] を選択します。 選択内容を確認し、[完了]選択します。 配置スクリプトが指定したファイル パスに保存されます。

デプロイ後のスクリプト

配置後スクリプトの実行が可能です。

配置後スクリプトを追加するには、Visual Studio のプロジェクト ディレクトリに postdeployscript.sql というファイルを追加します。 たとえば、ソリューション エクスプローラーでプロジェクトを右クリックし、[既存の項目の追加選択します。 ファイルは、Test Scripts フォルダーではなく、プロジェクトのルートに追加してください。

配置を選択すると、プロジェクトの配置後に Visual Studio によってこのスクリプトが実行されます。