SQL Server - 使用CLR集成来使用Web服务

时间:2008-10-07 19:46:29

标签: sql-server web-services clr

网上有一些tutorials描述了使用SQL Server 2005的CLR集成来使用Web服务。最重要的是,这个过程看起来很复杂。我遇到了几个问题,包括需要更改数据库的信任级别,以及使用sgen工具创建静态XmlSerializer程序集;我仍然没有把它正常工作......(我确信我只需要花更多的时间和精力)

进入此类架构时,有哪些安全性,性能和维护含义?这可能是一个使用相当频繁的过程,易于维护相对重要。

我可以自由选择是将其作为UDF集成到SQL Server中,还是将它作为控制台/ Web应用程序的独立.NET库。 SQL CLR与外部程序集的集成是否值得麻烦?

3 个答案:

答案 0 :(得分:4)

简短的回答是,不,SQL CLR集成可能不值得。

更长的答案有几点,从数据库中编程CLR开始。如果使用得当,它是一个很好的工具,但它会增加内存消耗,如果操作不正确,可能会导致性能问题。我在我的数据库中使用它来获得非常专业的功能,例如添加RegEx功能,但是它的使用很少,经过充分测试的代码可以防止出现尽可能多的问题。

正如你所指出的那样,你必须修改安全性,开辟潜在的风险。

使用独立应用程序将数据加载到服务器中。你将拥有更多的控制权,更少的风险和更轻松的时间。

答案 1 :(得分:3)

我认为你已经回答了自己的问题,我个人发现,任何调用WebService的东西都更适合存在于SQL Server的外部。复杂性,信任级别提升,以及您提到的整体复杂过程使得难以记录并难以维护解决方案。

答案 2 :(得分:2)

我一直在做clr程序,它们在Exchange和AD上调用webservices,我同意上面的帖子。它工作正常,但我们很快遇到了内存不足的问题,因为在SQL Server内部的CLR中处理内存的特殊方式。您可以想象,对于小型查询,性能是可以的,但根本不能扩展。

通常,您的数据库性能决定了应用程序的性能,如果您无法完全控制自己正在做的事情,我认为将这样的逻辑放在数据库中是不可能的。

将CLR用于简单的文本操作和其他不依赖外部资源的计算。