CLR データベース オブジェクトの配置
適用対象: SQL サーバー
配置は、完了したアプリケーションまたはモジュールを別のコンピューターにインストールし、実行するために配布するプロセスです。 Microsoft Visual Studio を使用すると、共通言語ランタイム (CLR) データベース オブジェクトを開発し、テスト サーバーに配置できます。 また、マネージド データベース オブジェクトは、Visual Studio ではなく Microsoft .NET Framework 再配布ファイルを使用してコンパイルすることもできます。 コンパイル後、VISUAL Studio または Transact-SQL ステートメントを使用して、CLR データベース オブジェクトを含むアセンブリをテスト サーバーに配置できます。 Visual Studio .NET 2003 は、CLR 統合プログラミングまたは配置には使用できない点に注意してください。 SQL Server には .NET Framework がプレインストールされていますが、Visual Studio .NET 2003 では .NET Framework 2.0 アセンブリを使用できません。
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
リモート開発、デバッグ、開発に Microsoft Visual Studio を使用するには、SQL Server インスタンスで TCP/IP ネットワーク プロトコルを有効にする必要があります。 サーバーで TCP/IP プロトコルを有効にする方法の詳細については、「クライアント プロトコルの構成」を参照してください。
Visual Studio を使用してアセンブリを配置するには
Build メニューから Build<project name> を選択してプロジェクトをビルドします。
アセンブリをテスト サーバーに配置する前に、すべてのビルド エラーおよび警告を解決します。
Build メニューから Deploy を選択します。 その後、アセンブリは、SQL Server プロジェクトが Visual Studio で最初に作成されたときに指定された SQL Server インスタンスとデータベースに登録されます。
Transact-SQL を使用してアセンブリを配置するには
.NET Framework に含まれるコマンド ライン コンパイラを使用して、ソース ファイルからアセンブリをコンパイルします。
Microsoft Visual C# ソース ファイルの場合:
csc /target:library C:\helloworld.cs
Microsoft Visual Basic ソース ファイルの場合:
vbc /target:library C:\helloworld.vb
これらのコマンドは、ライブラリ DLL のビルドを指定する /target オプションを使用して Visual C# または Visual Basic コンパイラを起動します。
アセンブリをテスト サーバーに配置する前に、すべてのビルド エラーおよび警告を解決します。
テスト サーバーで SQL Server Management Studio を開きます。 適切なテスト データベース (AdventureWorks など) に接続して、新しいクエリを作成します。
次の Transact-SQL をクエリに追加して、サーバーにアセンブリを作成します。
CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE;
- その後、プロシージャ、関数、集計、ユーザー定義型、またはトリガーを 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 の他のインスタンスで実行して、マネージド データベース オブジェクトをデプロイできます。
"スクリプトの生成" 機能を使用して配置スクリプトを生成するには
Management Studio を開き、デプロイするマネージド アセンブリまたはデータベース オブジェクトが登録されている SQL Server インスタンスに接続します。
オブジェクト エクスプローラーで、<サーバー名>とDatabases ツリーを展開します。 マネージド データベース オブジェクトが登録されているデータベースを右クリックし、 Tasksを選択し、 Generate Scripts を選択します。 スクリプト作成ウィザードが開きます。
リスト ボックスからデータベースを選択し、 [次へ] をクリックします。
[スクリプト オプションの選択] ウィンドウで、[次へ] をクリックするかオプションを変更し、[次へ] をクリック。
[ Choose オブジェクトの種類 ペインで、デプロイするデータベース オブジェクトの種類を選択します。 次へ をクリックします。
[ Choose オブジェクトの種類 ] ウィンドウで選択したすべてのオブジェクトの種類に対して、 Choose <type> ペインが表示されます。 このペインでは、指定したデータベースに登録されているデータベース オブジェクトの種類のすべてのインスタンスから、いずれかのオブジェクトを選択できます。 1 つ以上のオブジェクトを選択し、[次へをクリックします。
出力オプション ペインは、目的のデータベース オブジェクトの種類がすべて選択されたときに表示されます。 [ファイル Script] を選択し スクリプトのファイル パスを指定します。 [次へ] を選択します。 選択内容を確認し、[ Finish をクリックします。 配置スクリプトが指定したファイル パスに保存されます。
配置後スクリプト
配置後スクリプトの実行が可能です。
配置後スクリプトを追加するには、Visual Studio のプロジェクト ディレクトリに postdeployscript.sql というファイルを追加します。 たとえば、ソリューション エクスプローラーでプロジェクトを右クリックし、[既存の項目の追加選択します。 ファイルは、Test Scripts フォルダーではなく、プロジェクトのルートに追加してください。
[配置] をクリックすると、プロジェクトの配置後に、このスクリプトが Visual Studio によって実行されます。