何时使用扩展存储过程而不是用户定义的存储过程

时间:2013-01-22 11:55:02

标签: sql-server-2008

何时使用扩展存储过程而不是用户定义的存储过程? 什么是扩展存储过程和clr存储过程的优点

4 个答案:

答案 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,这样你就可以在其中运行更多的业务流程需求,而不是使用外部应用程序。