2010-12-13 29 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 QueuesService Broker進行。

+0

爲什麼IPC會比SQLCLR的其他任何用途都差? – Eclipse 2010-12-14 00:16:36

+0

因爲它使當前進程(sqlservr.exe)阻塞等待其他進程響應。由於SQL是一種協作的用戶模式多線程環境,因此這些外部塊會停止所有SQL處理。 – 2010-12-14 00:23:56

+0

所以這是IPC花費的時間的問題? – Eclipse 2010-12-14 00:30:44