Microsoft 在 SQL Server 2005 中增加了使用 .Net CLR 进行存储过程的功能。是否有人为此使用 CLR?如果有,原因是什么?如果没有,原因是什么?
答案1
你可能会得到更好的答案StackOverflow.com。 这里有一个链接到 SO 搜索这将引发许多与 SQL 和 CLR 相关的有趣问题。
话虽如此,我们还是使用它。在决定 a) 启用 CLR 和 b) 选择代码之前,您需要注意一些问题。从 dba 的角度来看,这里有一篇 technet 文章谈到了CLR 集成安全讨论了很多内容。文章中的具体主题涉及:
- CLR 集成代码访问安全性
- 主机保护属性和 CLR 集成编程
- CLR 集成安全性中的链接
- 模拟和 CLR 集成安全
- 允许部分信任的呼叫者
- 应用程序域和 CLR 集成安全性
答案2
我用它来创建一份报告,该报告调用存储过程并自动将结果写入文本文件。它基本上取代了 SQL 报告服务中的“另存为文本文件”导出功能……我们喜欢在这里培养懒惰的用户。
答案3
从学术角度来看,这听起来比实际情况要好。在生产环境中——至少在我们的案例中——它很快就变成了一场噩梦。我们使用基于 DBGhost 的 DB 升级过程,CLR 一直阻碍着我们。我们现在像躲避瘟疫一样躲避它。
答案4
不知道您是否还对这个问题感兴趣,但是……是的,我们已经使用 CLR 为 SQL Server 构建了一个完整的金融、统计、数学、工程和字符串函数库 - 总共有 450 个单独的函数,并且还在不断增加。我们的主要动机是将逻辑从应用程序层移到 DBMS:减少网络开销、提高处理速度并使用更好的数据。当然,也是为了减少那些(臭名昭著的)Excel 剪切/粘贴灾难。在某些情况下,您可能在 T-SQL 中完成工作,但调试可能会让您发疯。还有一些情况下,如果没有 CLR,这些功能根本无法实现。