CLR函数调用远程SQL Server

时间:2011-03-03 00:16:21

标签: sql-server sqlclr

我是SQL Server CLR的新手。我知道我们应该在业务逻辑在SQL中实现复杂的情况下使用CLR。

我们在VB.NET中有很多函数来处理数据,例如标准化数据。我试图通过CLR实现它们。这些函数首先访问远程服务器以获取一些参考数据,然后在本地服务器上进行处理。

但无论我如何尝试,我都会遇到错误

  

System.NullReferenceException:未将对象引用设置为对象的实例。

或从远程服务器返回null。

我们可以在CLR例程中访问远程服务器吗?如果是,怎么样?

2 个答案:

答案 0 :(得分:3)

您可以访问.Net CLR 中的远程服务器,但实际上不应该

SQL服务器在协作式多任务环境中运行,即线程被信任以及时终止并完成其处理(以这种或那种方式)。如果您开始执行诸如调用远程方法(可能会导致长时间延迟)之类的事情,您可能最终会使SQL服务器工作线程挨饿,这最终会导致Bad Things发生。

另见this question

答案 1 :(得分:1)

是的,你可以。你可以使用正常的SqlCommand& .NET框架中的SqlConnection类可以这样做。=,如果远程服务器是SQL Server,我认为它是。

如果它们是Web服务器,是的,您可以使用Web服务。

旁注。你在CLR中做的非常小心,因为像CLR看起来很有吸引力你在SQL 2005下只有大约512MB的内存,并且通过添加一些启动参数你可以将它推到2Gb。请注意。

编辑:

根据您的评论,我建议使用链接服务器,然后在本地重新创建远程表,然后在本地服务器上加入它。

您必须确保在本地框中重新创建索引和键,并且对于speed -sake,在将记录插入表中后执行,否则在已填充的表上构建索引,将采取很长一段时间。