为什么要使用CLR存储过程?CLR存储过程有哪些重要性或者只能使用CLR存储过程的例子吗?
为什么要使用CLR存储过程?CLR存储过程有哪些重要性或者只能使用CLR存储过程的例子吗?
想象一下,你想使用正则表达式在SQL Server中验证一些数据字段。直到今天,在仅仅使用T-SQL代码的情况下,这几乎是不可能的,即使是在SQL Server 2008 R2中也是如此。
然而,借助CLR存储过程或存储函数的帮助,这将变得非常简单。
T-SQL在操作数据集方面非常强大 - 可以用它来实现这一点。
CLR在其他领域非常强大,比如字符串和日期操作,调用外部服务(WCF、Web服务)等。
因此,T-SQL存储过程和CLR存储过程是一个良好的互补 - 每个都解决了另一个不擅长的特定一组挑战。
有一些事情在SQL Server中无法完成(或在某些情况下不如托管代码好)。
inserted
和 deleted
表)OPENQUERY
/ OPENROWSET
)OPENQUERY
/ OPENROWSET
)DataAccess = None
,则可以在并行执行计划中使用,而 T-SQL UDF 则会阻止并行计划PRINT
和 RAISERROR
并且 severity = 0 到 10)-- 我在文章中忘记提到这个了 ;-)。如果你想:
这种情况下,您可以使用CLR过程。我没有立即想到一个例子,但应该可以想象一个。
-- 编辑:
一个想象的例子可能是将数据转换为数据仓库类型结构。在这种情况下,您可能希望重新格式化并运行一些分析。然后可以在CLR中进行操作。(我不是在建议这正是我要做的事情,但可以考虑)。
如果您想进行一些非常规的数学计算,或者调用外部网络服务等操作,您无法在T-SQL中完成,这时候使用.NET存储过程或函数将会非常有帮助。
您还可以使用CLR过程编写聚合函数,这是T-SQL无法实现的。
当然,对于数据操作而言,T-SQL存储过程的性能更佳,编写也更容易。