我们什么时候需要SQL Server中的CLR功能?

时间:2015-10-26 10:59:32

标签: sql sql-server sql-server-2012 sqlclr

我想知道什么时候需要在SQL Server中使用CLR功能。

  有人说CLR主要用于完成任务,而不是   可能由T-SQL。但我无法找到一个很好的例子,因为T-SQL未能给我确切的输出。

有人可以给我一个通过T-SQL无法完成的确切示例吗?

样品将非常感谢!

1 个答案:

答案 0 :(得分:7)

询问SQLCLR 何时是错误的思考方式。像大多数其他技术一样,这是完成某些任务和/或解决某些问题的一种方法,但总会有解决方法。真正的问题是何时使用SQLCLR good fit 来解决特定问题。从这个意义上讲,有一些事情要么在SQLCLR中更容易做,要么就是在T-SQL中无法完成。

我在以下文章Stairway to SQLCLR Level 1: What is SQLCLR?中发布了一个相当全面的SQLCLR功能列表(需要免费注册)。由于该网站需要注册,甚至免费注册,我已经在下面复制了该列表。有关每个要点的更详细说明和一些其他信息,请参阅该链接文章。

只能在SQLCLR中完成

在SQLCLR中更容易

  • 生成GUID
  • 生成随机数
  • 修改状态
  • 执行存储过程(在函数中 - 标量或TVF - 但它必须是只读的)

<强>性能

比较T-SQL和CLR对象之间的性能是一个更复杂的主题。首先,您实际上只能比较它们之间相同的功能。那么你必须考虑正在完成的逻辑类型,如果比较函数,逻辑是否在两种类型的代码中有效地完成 它是通过SET语句还是多行查询运行,依此类推。

对于哪种情况更适合基于CLR的对象,Microsoft有一些指导原则(Performance of CLR Integration)。如果您将使用SQLCLR对象,那么您至少应该知道这些信息。然而,这一切都归结为测试,这一切都是可测试的。我在2011年7月对这个主题进行了一些研究 在此发表了我的发现:https://www.simple-talk.com/sql/t-sql-programming/clr-performance-testing/

<强>实施例

有许多可以做的例子,例如:

  • 正则表达式
  • 文件系统功能
  • 网络/网络/网络服务相关
  • 字符串拆分
  • 自定义聚合
  • 导出数据
  • 等......

有关可以完成的事情的更全面的列表,请查看SQL#库(我是其作者),该库具有RegEx功能附带的免费版本等等。还有付费/完整版本,具有额外的文件系统,网络等功能。

SQL Server Central(需要免费注册的站点)的各种文章中的其他示例: