C# SQLServer2008与COM服务器编程

C# SQLServer2008与COM服务器编程,c#,sql-server,stored-procedures,sqlclr,C#,Sql Server,Stored Procedures,Sqlclr,我们需要从SQL server 2008访问自定义ATL COM服务器。理想情况下,我们希望COM服务器位于单独的机器上,因为它是大型软件应用程序的一部分。我知道SQL提供了sp_OAXXXX的COM/OLE自动化存储过程,但它们似乎不接受用于远程调用的计算机/服务器名称 是否可以使用基于C的CLR存储过程来实现这一点?还有其他方法吗?我们还有一个用于COM服务器的java包装器,所以远程批处理文件是一个选项?我期待着收到任何可能处理过类似问题的人的来信 谢谢, Sam在sp_OACreate轨

我们需要从SQL server 2008访问自定义ATL COM服务器。理想情况下,我们希望COM服务器位于单独的机器上,因为它是大型软件应用程序的一部分。我知道SQL提供了sp_OAXXXX的COM/OLE自动化存储过程,但它们似乎不接受用于远程调用的计算机/服务器名称

是否可以使用基于C的CLR存储过程来实现这一点?还有其他方法吗?我们还有一个用于COM服务器的java包装器,所以远程批处理文件是一个选项?我期待着收到任何可能处理过类似问题的人的来信

谢谢,
Sam

在sp_OACreate轨道上,您可以将COM服务器捆绑到远程服务器上的COM+,然后导出MSI,然后您可以将MSI安装到SQL server上的COM+,并配置远程服务器信息。通过这种方式,您可以减轻DCOM的恐怖


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

这里有一种方法:您可以使用WCF或asmx创建一个SOAP web服务来包装COM服务器接口。创建CLR程序集并将web服务的web引用添加到程序集。然后可以将COM服务器上的方法作为web服务调用进行调用。为此,您需要使用外部访问权限构建和运行SQLCLR程序集。这种方法的优点是非常简单,可以轻松地为web服务单独设置测试框架。

这真是个坏主意。很抱歉为什么不能在其他地方使用COM呢?java包装器不会成为这个解决方案的一部分。我删除了java标记。没有理由需要Java来做远程批处理文件,而且这些技术中没有一种能比其他技术更好地与Java一起工作。Erick,真的吗?是什么让您如此确信Java不是解决方案的一部分?我知道,我不需要Java来做远程批处理文件。我的意思是,因为COM服务器有一个Java包装器,所以我可以远程调用Java API think Java.exe。在本例中,对java.exe的调用将放在批处理文件中,以便SQL存储过程可以传递参数等。因此,在我的具体案例中,java肯定是最相关的。可能不是最好的方法,但这就是我在这里发布的原因:|从架构上来说,我同意从SQL server调用COM服务器是一个糟糕的举动。但是我的手被绑住了。我很想听听您/其他人在阻止从SQL Server使用COM时的想法