2
我正嘗試創建一個連接到第三方服務(與SQL Server實例位於同一服務器上)的SQL Server CLR用戶定義函數。有沒有辦法讓WCF命名管道或TCP在這種情況下工作?如果我提供中介服務,是否有更好的方式來做到這一點?來自SQL Server項目的進程間通信
我正嘗試創建一個連接到第三方服務(與SQL Server實例位於同一服務器上)的SQL Server CLR用戶定義函數。有沒有辦法讓WCF命名管道或TCP在這種情況下工作?如果我提供中介服務,是否有更好的方式來做到這一點?來自SQL Server項目的進程間通信
不要在SQLCLR中實現IPC。託管CLR的SQL服務器使用SQL threading primitives,最終會導致SQL工作線程和調度程序捱餓。
從SQL Server以外的進程執行所有IPC。如果您需要從SQL作業(從存儲過程和觸發器)與此進程進行通信,請使用數據庫內排隊,可通過Tables as Queues或Service Broker進行。
爲什麼IPC會比SQLCLR的其他任何用途都差? – Eclipse 2010-12-14 00:16:36
因爲它使當前進程(sqlservr.exe)阻塞等待其他進程響應。由於SQL是一種協作的用戶模式多線程環境,因此這些外部塊會停止所有SQL處理。 – 2010-12-14 00:23:56
所以這是IPC花費的時間的問題? – Eclipse 2010-12-14 00:30:44