CLR程序集在SQL Server 2008中有哪些限制?

4
我正在计划一些需要大量计算的报告,我认为最好将它们转移到加载到Microsoft SQL Server的自定义.NET程序集中。将使用此功能的公司仅使用SQL Server Enterprise版本,因此不会有功能支持方面的问题。
我的问题是: 这实际上是一个好主意吗? 我希望导出此功能,因为我想能够使用以下功能:
- 多线程(线程数将是处理实体之间的最小值和配置文件中设置的最大数目。我不知道我应该指定的任何其他上限。) - 未管理代码(用于流处理的C++库) - 有时甚至需要COM互操作或shell命令,尽管这种情况较少发生。
它们能正常工作吗?在我的情况下是否有任何限制?

你是在寻找作为查询结果运行的代码,还是后台进程? - Gabe
它将被用作一个SQL函数,它将返回单个值或填充一个表,但它将引用和使用业务逻辑模块,该模块正在系统中的其他应用程序中使用。我想在这个CLR程序集中包含一组接口(来自业务逻辑模块),并从配置文件中给出的路径动态地包含业务逻辑。然后应在业务逻辑模块内提取和处理数据。看起来很复杂,但我没有其他办法使其不冗余。 - Alex
1个回答

2

您列出的所有内容都是有限制的可能性。Host Protection Attributes允许访问创建线程,但禁止访问Thread.Join等。在MSDN上阅读更多相关信息。

现在的问题是“你应该这样做吗?”我认为这种方法并不是很可靠,因为它会给数据库服务器带来巨大的处理负担,如果需要扩展,将非常难以实现。我认为更好的方法是向SQL Server Reporting Services添加自定义程序集,并让处理过程在那里发生。如果遇到可扩展性问题,可以添加额外的报表服务机器。

在Reporting Services中加载的程序集中没有方法和类的限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接