SQL Server 2005においてCLR記憶プロセスを作成する詳細な紹介


2005年以前のバージョンの作成記憶プロセスはすべてデータベースにTransact-SQL言語を書いて実現されましたが、現在はSQL Server 2005は他の対象向けの言語でCLRストレージを作成するのをサポートしています。このようにするメリットについて、公式には多くの説明があります。サーバーの中にtestデータベースがあると仮定して、データベースには構築userがあります。もう一つのテーブルtest 1があります。そしてsql登録ユーザーはtest_と言います。userは、このユーザをVSS 2005のデータベース接続のログインユーザに設定します。VSL 2005でプロジェクトを作成し、SQL Serverデータベース項目を分類し、プロジェクトに格納プロセスを追加します。続いて、このファイルの中で次のようにプロセスコードを作成します。

using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void SelectAll()
    {
        using (SqlConnection connection = new SqlConnection("context connection=true"))
        {
            connection.Open();
            SqlCommand command = new SqlCommand("SELECT * FROM [user].test1", connection);

            SqlContext.Pipe.ExecuteAndSend(command);
        }
    }
};

は上のコードを保存して、testProcesdure.csファイルと名づけます。続いて2つの方法があります。この保存プロセスをデータベースに追加したいです。1.NETのコマンドラインツールを開いて、testProcesdure.csをdllプログラムセットのtestProcesdure.dll csc/t:library/out:testProcesdure.dll testProcesdure.csにコンパイルして、データベース内のプログラムセットの右クリックメニューに「新しいプログラムセットを追加」をクリックして、編集したプログラムをブラウズします。このプログラムセットを追加して、sqlクエリを新規作成します。そこでは、CREATE PROCEDURE[user].SelectAllAS EXTERNAL NAME testProcedure.StredProcestres.SelectAllGOが上記のクエリ文を実行した後、データベースにCLRの保存プロセスを追加することに成功しました。上記のテスト記憶過程にはパラメータがありません。もしあれば、データベースに格納されているプロトタイプはCLR言語のプロトタイプと同じでなければなりません。この方法を用いてCLRC記憶プロセスを作成することを推奨します。2.VSを使って自動的にsqlのために格納プロセスを作成します。デバッグスクリプトを作成してプロジェクトに追加します。スクリプトは簡単に編集されたストレージプロセスを実行するだけでいいです。上の項目をコンパイルして作成して配置すればいいです。デバッグを開始して完成することもできます。VSは自動的にデータベースに対応するストレージプロセスを追加します。しかし、第一の方法はより柔軟で信頼性が高い。また、第2の方法を使用して、エラーが発生した場合、ユーザは格納プロセスsp_を実行できませんでした。enabale_sqldebugこれはおそらく次のような理由があります。
・接続問題。サーバーへの安定した接続が必要です。
•サーバに必要な権限がありません。SQL Server 2005でデバッグするには、Visual StudioのアカウントとSQL Serverに接続するためのアカウントは、syssadminキャラクターのメンバーでなければなりません。SQL Serverに接続するためのアカウントは、Windowsユーザーアカウント(Windows認証を使用している場合)か、ユーザIDとパスワードを持ったアカウント(SQL認証を使用している場合)です。
つまりそのtest_userはsyssadmin役でなければいけません。以上がCLR記憶プロセスを作成する全ての内容です。