1

C# クラス ライブラリにワークフローのようなアプリケーションのビジネス ロジックがありますが、月末にライブラリ内の特定のプロセスを呼び出す必要があります。このスケジュールされた実行を呼び出す理想的なメカニズムは、Sql サーバー エージェントを使用することだと思いました。 (SQLジョブが望ましいですが、絶対に必要な場合はSSIS地獄に行くことさえできますが)、問題はSQLジョブからアプリケーションライブラリのプロセスを呼び出す方法ですか?

アプリケーション ライブラリは asp.net ページからも使用されるため、通常、入力データベースと出力データベースが構成された Web アプリケーション コンテキスト (web.config) があります。

ステップが多かれ少なかれあることを理解しています

1) クラス ライブラリを SQL Server CLR アセンブリに埋め込み、強力なキー署名をしてデプロイする 2) ライブラリを呼び出す

私がはっきりしていないのは、そのような CLR アセンブリを展開すると、Web アプリケーションのコンテキストがどうなるかということです。適切な app.config を使用して CLR をデプロイするにはどうすればよいですか? 接続文字列を変更する必要がある場合、CLR を再デプロイする必要がありますか?

また、CLRはそれを呼び出しているデータベースに接続する必要があるため(テーブルの読み取りと書き込みの目的で)、確信が持てませんが、自己呼び出しやそのようなことを避けるために、特に注意する必要があると思います。

4

1 に答える 1

1

まず、この投稿は「use SSIS」で終わります:-P

ライブラリに System.Web.dll へのリンクが含まれている限り、それを SQLCLR アセンブリとして SQL Server に登録できるとは思えません。SQLCLR アセンブルは非常に制限されており、参照を含めることはできません。

ビジネス ロジックのフロントエンド固有の部分を別のプレゼンテーション レイヤー ライブラリに移動できます。これは一般に、Web アプリケーション コンテキストのようにビジネス ロジックとプレゼンテーション クラスを混在させるよりも優れたソリューションです。その後、アセンブリを SQL Server に展開することができます。

これで、ビジネス オブジェクトを編成する .NET ストアド プロシージャを含む 2 つ目の SQLCLR ライブラリを作成できるようになりました。

ただし、ここでは SQLCLR の利点はあまりわかりません。ソース コードを大幅に変更する必要があり、アプリケーション全体にいくつかの制限が生じます。

私の個人的な好みは、 どちらかが SSIS パッケージを使用することです。ここで、他の DLL を参照し、その機能を使用できます。または、SQL エージェントによって開始される単純な .NET コンソール アプリケーションを記述します。どちらの場合も、実装はほぼ同じです。

SQLCLR は、可能性のある (そして示唆に富む) T-SQL 機能の壁にぶつかる、純粋にデータベース固有のタスクを処理するように特に設計されています。

于 2010-07-22T18:40:19.053 に答える