回答:
SQL Serverに登録されているアセンブリへの参照のみを追加できます。登録されていない場合、「参照の追加」ダイアログには表示されません。
DLLを登録するために必要な手順がいくつかあります。まず、データベースを再構成する必要があります。
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;
これが完了すると、SQL ServerはCLR対応になります。次に、アセンブリを登録する必要があります。
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
この最後のスクリプトが正しく実行されると、アセンブリが登録され、参照の追加ダイアログに表示されます。
ただし、考慮する必要があるのは、SQL Server CLR構成のアプリケーションセキュリティです。
SAFE
を使用する必要がある例外的な状況でのみ、アセンブリを登録することをお勧めします。EXTERNAL_ACCESS
UNSAFE
Assembly.Load()
意図的に制限されているため、アセンブリを動的にロードしようとしないでください。UNSAFE
。context connection = true;
)行われたデータベースアクセスは、接続されたユーザーのコンテキストで実行されるため、そのライブラリがデータにどのようなアクセス権を持っているかを確認する必要があります。Visual StudioからSQL CLRアセンブリをインストールする代替案について質問していると思います。
Visual Studioにコードを含める必要はありません。
MSDNでのCLRデータベースオブジェクトの展開では、SQLステートメントや展開スクリプトなどのオプションについて詳しく説明しています。
Webページを取得してPDFに変換する非常に大きなサードパーティDLLを使用します。
PDFはファイル共有に保存され、データベースの場所とタイプが更新されます。
これは3段階のプロセスです。
サードパーティのDLLを使用してPDFを作成し、URLとFilePathをパラメーターとして受け入れ、PDFのサイズとページ数を返すコンソールアプリを作成します。
サーバーでコンソールアプリを呼び出すCLRストアドプロシージャを作成する
これをすべてCLRアプリを呼び出してPDFを作成する単一のストアドプロシージャにラップし、それに関するメタデータをデータベースに書き込みます。
私はこれが完璧ではないことを知っています、そしてあなたはトリガーの中でそんなにクレイジーなことをするべきではありません!
ここでは、サードパーティDLLをCLRで使用することについて質問がある他の人にのみ言及します。
私は、cmd.exeコンソールをスピンオフしてサードパーティDLLを実行することにより、すべてをインプロセスで実行するのではなく、クラッシュしてもSQL Serverに悪影響を及ぼさないことを期待しています。それが私が望んでいることです。
これが本当に悪いアプローチであるかどうか、そしてその理由をコメントしてください。