SQLServer CLR比T-SQL有什么优势?使用.NET语法比T-SQL更容易吗?我看到你可以定义用户类型,但我不清楚为什么那样更好.例如,您可以定义电子邮件类型,它将具有前缀属性和域属性.然后,您可以搜索域或前缀或两者.但是,我没有看到与添加一个名为prefix的列和一个名为domain并且单独搜索它们的列有什么不同.也许有人有现实世界的理由为什么这会更好.
我将给出一个很好的例子:CLR有一个内置的RegEx对象,它在SQL Server中非常缺乏.现在编写函数来执行基于正则表达式的验证约束/修复是微不足道的.
不同的目的.CLR存储过程对于编写高度过程代码或使用无法从T-SQL访问的系统工具有益的事情非常有用.虽然没有固有的原因导致人们无法编写应用程序sprocs,但通常你不会将CLR sprocs视为编写应用程序sprocs的另一种语言.通常,CLR sproc的大多数用途都是出于系统目的而不是应用程序组件,尽管这绝不是一个硬性规则.
CLR集成层确实提供了一些不能直接从T-SQL存储过程中获得的工具,例如自定义聚合函数.它还提供对.Net库的访问,这对于访问T-SQL不支持的功能可能很有用.
T-SQL做传统的数据库工作,并与查询优化器集成,因此它仍然最适合面向集合的数据库代码.CLR sprocs有API钩子来向查询优化器提供信息,但这增加了一些复杂性.
还可以使用CLR集成来定义T-SQL代码可访问的函数.在某些情况下,这些比T-SQL函数更快,内存效率更高.关于CLR集成的Wrox新闻书在一定程度上讨论了这一点.
您还可以例如从SQLCLR方法调用外部Web服务 - 在T-SQL中不完全可能:-)
渣