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

Rag*_*gul 0 sql sql-server sqlclr sql-server-2012

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

有人说CLR主要用于完成T-SQL无法完成的任务.但我无法弄清楚T-SQL的一个很好的例子未能给我我的确切输出.

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

样品将非常感谢!

Sol*_*zky 7

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

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

只能在SQLCLR中完成

在SQLCLR中更容易

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

性能

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

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

例子

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

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

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

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