我想知道什么时候需要在SQL Server中使用CLR功能。
有人说CLR主要用于完成任务,而不是 可能由T-SQL。但我无法找到一个很好的例子,因为T-SQL未能给我确切的输出。
有人可以给我一个通过T-SQL无法完成的确切示例吗?
样品将非常感谢!
答案 0 :(得分:7)
询问SQLCLR 何时是错误的思考方式。像大多数其他技术一样,这是完成某些任务和/或解决某些问题的一种方法,但总会有解决方法。真正的问题是何时使用SQLCLR good fit 来解决特定问题。从这个意义上讲,有一些事情要么在SQLCLR中更容易做,要么就是在T-SQL中无法完成。
我在以下文章Stairway to SQLCLR Level 1: What is SQLCLR?中发布了一个相当全面的SQLCLR功能列表(需要免费注册)。由于该网站需要注册,甚至免费注册,我已经在下面复制了该列表。有关每个要点的更详细说明和一些其他信息,请参阅该链接文章。
只能在SQLCLR中完成
在SQLCLR中更容易
<强>性能强>
比较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(需要免费注册的站点)的各种文章中的其他示例: