2010-12-13 22 views
2

サードパーティサービス(SQL Serverインスタンスと同じサーバー上にホストされている)に接続するSQL Server CLRユーザー定義関数を作成しようとしています。 WCFの名前付きパイプまたはTCPをこのような状況で動作させる方法はありますか?私が仲介サービスを提供する場合、これを行うためのより良い方法はありますか?SQL Serverプロジェクトからのプロセス間通信

答えて

4

SQLCLRにIPCを実装しないでください。 CLRでホストされているSQLサーバーはSQL threading primitivesを使用するため、SQLワーカースレッドとスケジューラが枯渇することになります。

SQL Server以外のプロセスからすべてのIPCを実行します。ストアドプロシージャとトリガのSQLジョブからこのプロセスと通信する必要がある場合は、データベース内のキューイングを使用します(Tables as QueuesまたはService Broker)。

+0

なぜIPCが他のどのようなSQLCLRの使用より悪いのでしょうか? – Eclipse

+0

これは、現在のプロセス(sqlservr.exe)が他のプロセス応答を待機するのをブロックするためです。 SQLは協調ユーザーモードのマルチスレッド環境であるため、これらの外部ブロックはすべてのSQL処理を停止します。 –

+0

IPCがかかる時間の問題ですか? – Eclipse