SQL Server 2008和COM服务器编程

问题描述:

我们需要从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

在由sp_OACreate赛道,你可以捆绑你的COM服务器到COM +的远程服务器上,然后导出proxy MSI,然后你就可以在SQL Server上安装(也到COM + ,并配置远程服务器信息)。这样可以减轻DCOM的恐慌。

但根据其他海报,从SQL调用远程COM服务器将是最后的手段。

+0

体系结构我同意从SQL服务器调用COM服务器是一个不好的举措。但我的手被捆绑。我很好奇听到你/其他人在劝阻使用来自SQL Server的COM时想到的 – 2010-09-02 17:45:19

以下是一种方法:您可以使用WCF或asmx创建SOAP Web服务来封装COM服务器接口。创建一个CLR程序集并将Web服务的Web引用添加到程序集。然后可以调用COM服务器上的方法作为Web服务调用。您将需要使用EXTERNAL_ACCESS权限构建和运行SQLCLR程序集来执行此操作。这种方法的优点是非常简单,并且可以很容易地为Web服务独立设置测试框架。