2010-09-01 123 views
0

我們需要從SQL Server 2008訪問一個定製的ATL COM服務器。理想情況下,我們希望COM服務器位於一臺單獨的機器上,因爲它是大型軟件應用程序的一部分。我知道SQL提供的COM/OLE自動化存儲過程(sp_OAXXXX),但他們似乎不接受用於遠程調用的計算機/服務器名稱。SQL Server 2008和COM服務器編程

是否有可能使用基於C#的CLR存儲過程實現此目標?還有其他方法嗎?我們也有COM服務器的java包裝,所以遠程批處理文件是一個選項?我期待聽到任何可能遇到過類似問題的人的消息。

感謝, 山姆

+2

這真的是一個壞主意。抱歉。爲什麼不能在其他地方使用COM? – gbn 2010-09-01 19:10:29

+0

因爲這是一個SSRS應用程序 – 2010-09-01 19:12:23

+0

Java包裝不會成爲此解決方案的一部分。我刪除了java標籤。沒有理由需要Java來完成遠程批處理文件,而且這些技術都不會比Java更好地使用Java。 – 2010-09-01 19:15:13

回答

0

在由sp_OACreate賽道,你可以捆綁你的COM服務器到COM +的遠程服務器上,然後導出proxy MSI,然後你就可以在SQL Server上安裝(也到COM + ,並配置遠程服務器信息)。這樣可以減輕DCOM的恐慌。

但根據其他海報,從SQL調用遠程COM服務器將是最後的手段。

+0

體系結構我同意從SQL服務器調用COM服務器是一個不好的舉措。但我的手被捆綁。我很好奇聽到你/其他人在勸阻使用來自SQL Server的COM時想到的 – 2010-09-02 17:45:19

0

以下是一種方法:您可以使用WCF或asmx創建SOAP Web服務來封裝COM服務器接口。創建一個CLR程序集並將Web服務的Web引用添加到程序集。然後可以調用COM服務器上的方法作爲Web服務調用。您將需要使用EXTERNAL_ACCESS權限構建和運行SQLCLR程序集來執行此操作。這種方法的優點是非常簡單,並且可以很容易地爲Web服務獨立設置測試框架。