【问题标题】:When do we need a CLR function in SQL Server?我们什么时候需要 SQL Server 中的 CLR 函数?
【发布时间】:2016-01-25 10:51:08
【问题描述】:

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

有人说CLR主要用来完成任务 可以通过 T-SQL。但是我想不出一个 T-SQL 没有给我确切输出的好例子。

谁能给我一个无法通过 T-SQL 完成的确切示例?

样品将不胜感激!

【问题讨论】:

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


【解决方案1】:

询问何时需要 SQLCLR 是错误的思考方式。与大多数其他技术一样,这是完成某些任务和/或解决某些问题的一种方式,但总会有变通方法。真正的问题是何时使用 SQLCLR 非常适合 解决特定问题。从这个意义上说,有一系列事情要么在 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(需要免费注册的站点)上的各种文章中的其他示例:

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 2020-10-19
    • 2019-07-17
    • 2013-01-23
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多