Sql server 2008 SQL Server 2008的CLR程序集有哪些限制?

Sql server 2008 SQL Server 2008的CLR程序集有哪些限制?,sql-server-2008,clr,Sql Server 2008,Clr,我正在计划一些计算量相当大的报告,我认为最好将其传输到加载到Microsoft SQL Server的自定义.NET程序集。将使用此功能的公司将只使用SQL Server企业版,因此功能支持没有问题 问题是: 这真的是个好主意吗? 我希望导出此功能,因为我希望能够使用以下功能: 多线程(线程数将是已处理实体之间的最小值,以及配置文件中设置的最大值。我不知道应该指定的任何其他上限。) 非托管代码(用于流处理的C++库) 有时甚至是COM互操作或shell命令,尽管这种可能性较小 它们能正常工作


我正在计划一些计算量相当大的报告,我认为最好将其传输到加载到Microsoft SQL Server的自定义.NET程序集。将使用此功能的公司将只使用SQL Server企业版,因此功能支持没有问题

问题是:
这真的是个好主意吗?
我希望导出此功能,因为我希望能够使用以下功能:

  • 多线程(线程数将是已处理实体之间的最小值,以及配置文件中设置的最大值。我不知道应该指定的任何其他上限。)
  • 非托管代码(用于流处理的C++库)
  • 有时甚至是COM互操作或shell命令,尽管这种可能性较小

它们能正常工作吗?在我的情况下,有什么限制我应该知道吗?

您列出的所有内容都有一些限制。主机保护属性允许访问创建线程,但禁止访问Thread.Join等。请阅读

现在的问题是“你应该这样做吗”?我认为这种方法不太合理,因为它会给数据库服务器带来很大的处理负载,如果需要,很难扩展。我认为更好的方法是向SQLServerReportingServices添加自定义程序集,并让处理在那里进行。如果遇到可伸缩性问题,可以添加其他reporting services计算机


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

您是在寻找作为查询结果运行的代码,还是只作为后台进程运行的代码?它将用作SQL函数,返回单个值或填充表,但它将引用并使用系统中其他应用程序正在使用的业务逻辑模块。我希望在此CLR程序集中包含一组接口(来自业务逻辑模块),并根据配置文件中给定的路径动态包含业务逻辑。然后,应在业务逻辑模块内提取和处理数据。看起来很复杂,但我不知道如何在不冗余的情况下实现它。