代码之家  ›  专栏  ›  技术社区  ›  Seibar

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

  •  8
  • Seibar  · 技术社区  · 17 年前

    有几个 tutorials 在web上,描述使用SQL Server 2005的CLR集成使用web服务。在大多数情况下,这个过程似乎相当复杂。我遇到了几个问题,包括需要更改数据库的信任级别,以及使用sgen工具创建静态XmlSerializer程序集;但我仍然没有让它正常工作。。。(我确定我只需要投入更多的时间和精力)

    在使用这种体系结构时,安全性、性能和维护意味着什么?这可能是一个相当频繁使用的过程,易于维护是相对重要的。

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

    3 回复  |  直到 17 年前
        1
  •  3
  •   Mitchel Sellers    17 年前

    我想你已经回答了你自己的问题,我个人发现任何调用Web服务的东西都更适合存在于SQL Server之外。复杂的情况、较高的信任级别,以及正如您所提到的,整个复杂的流程,使得它很难记录,也很难维护解决方案。

        2
  •  3
  •   Josef    17 年前

    简单的回答是,不,SQL CLR集成可能不值得这么麻烦。

    较长的答案有几点,首先是在数据库中编程CLR。如果使用得当,这是一个很好的工具,但它确实会增加内存消耗,如果使用不当,可能会导致性能问题。我在数据库中使用它来实现非常特殊的功能,比如添加RegEx功能,但它的使用非常谨慎,经过良好测试的代码可以尽可能避免出现很多问题。

    第二,正如你所指出的,你必须修改安全性,打开潜在的风险。

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

        3
  •  1
  •   terjetyl    17 年前

    我一直在做clr程序,在Exchange和AD上调用Web服务,我同意上面的帖子。它可以工作,但由于sql server内部CLR处理内存的特殊方式,我们很快就遇到了内存不足的问题。正如您可以想象的那样,对于小查询,性能是可以的,但根本不能扩展。

    一般来说,数据库性能决定了应用程序的性能,我认为如果不能完全控制自己的工作,那么在数据库中加入这样的逻辑是不可能的。

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