何时使用扩展存储过程而不是用户定义的存储过程? 什么是扩展存储过程和clr存储过程的优点
答案 0 :(得分:0)
Extended stored procedures允许您使用编程语言(如C。
)创建自己的外部例程基本上,非SQL的东西。显然,正常的存储过程都是关于SQL的。
值得注意以下MSDN:
将在Microsoft SQL的未来版本中删除此功能 服务器。避免在新的开发工作中使用此功能,并计划 修改当前使用此功能的应用程序。使用CLR 相反,整合。
所以它应该是
何时使用CLR integration而不是扩展存储过程?
微软的答案几乎总是如此:
答案 1 :(得分:0)
从SQL Server 2005+开始,不要使用扩展存储过程,因为它们已被弃用,编写得不好的人可能会乱写并破坏属于SQL Server的其他内存。
我只考虑CLR程序,如果它需要做一些CPU密集型的事情,这将从编译代码中受益,或者通过访问CLR库(例如System.Text.RegularExpressions
)更容易实现。不适用于普通的数据访问代码,因为它在TSQL中更有效。
从next version of SQL Server开始,CLR的用例可能更少
今天SQL Server的查询处理器编译查询并存储 将过程转换为由a评估的一组数据结构 SQL Server的查询处理器中的解释器。随着Hekaton,查询和 T-SQL存储过程中的过程逻辑直接编译成 在编译时应用积极优化的机器代码 时间。这允许存储过程以速度执行 本地代码。
答案 2 :(得分:0)
每当您发现自己想要使用现有的扩展过程,通过xp_cmdshell
调用命令行内容或以其他方式在SQL Server边界之外操作时,都应该考虑使用CLR。但是在很多这种情况下,您还应该考虑是否确实需要首先在SQL Server中执行任务。
还有一些用例,其中CLR在SQL Server中的计算过程中表现优异,例如splitting strings,但即便如此,我们也可以better workarounds that don't involve CLR。
答案 3 :(得分:0)
例如,添加csv导出,pgp加密,http或soap调用。基本上是为了扩展sql server,这样你就可以在其中运行更多的业务流程需求,而不是使用外部应用程序。