c# – 使用CLR存储过程时的问题和解决方案?

我们正在我们的组织中浮动一个新的可扩展且以性能为中心的ASP.Net应用程序,该应用程序目前处于设计阶段.

经理们决定采取混合方式.他们决定广泛使用CLR存储过程,而T-SQL仅用于简单的数据操作.

我想从社区了解以下内容:

>在这么多CLR存储过程的后期是否会出现性能问题?
>如果您遇到任何性能问题,MS团队是否有可用的修复程序?

注意:我做了谷歌并发现了最可能的问题,但是没有找到前两个的分辨率.

>当SQL Server加载程序集时,它们会缓存在内存中.当O / S向SQL Server发出内存压力信号时,可能会运行显式垃圾回收,并且可以卸载程序集.如果频繁发生,这可能会导致性能问题.
>查询优化器无法准确计算SQL CLR代码,因为它不会查看代码实际执行的操作 – 这会影响执行计划.
> SQL CLR代码有时可以防止并行,因为它们通常是单线程的.有时这会影响性能.
<<虽然我在这里找到了解决方案,但是这里有一个 >

让我知道CLR存储过程的问题和修复.

最佳答案 我已经为SQL服务器完成了CLR程序集.这是痛苦的经历.您可以在此类CLR项目中使用许多限制.例如,使用第三方库和开源库是不可能的.有些lib不能只部署到SQL服务器.您只能使用有限的库.

第二个问题是部署和权限设置.如果DBA对数据库的策略非常有限,则无法将CLR程序集部署到数据库.

我的建议是将您的数据库组件编写为ASP.Net的库.它很容易,没有像SQL Server的CLR程序集那样的限制.

2008年,我在这个问题上写了一系列博客:SQL Sever Projects (1-4).您可以将它们作为参考.

点赞