何时使用扩展存储过程而不是用户定义的存储过程?扩展存储过程和clr存储过程的优点是什么
4 回答
恕我直言:从来没有。扩展程序已被弃用很长时间,它们当然不应该出现在任何未来的开发计划中。
每当您发现自己想要使用现有的扩展过程、通过 调用命令行内容xp_cmdshell
或以其他方式在 SQL Server 边界之外操作时,都应该考虑使用 CLR。但是,在很多情况下,您还应该首先考虑是否真的需要在 SQL Server 中执行任务。
还有一些 CLR 擅长于 SQL Server 中的计算过程的用例,例如拆分字符串,但即使在那里,我们也可以有更好的不涉及 CLR 的解决方法。
从 SQL Server 2005+ 开始,不要使用扩展存储过程,因为它们已被弃用,而且写得不好的存储过程可能会乱涂并损坏属于 SQL Server 的其他内存。
我只会考虑 CLR 过程,如果它需要做一些 CPU 密集型的事情,这些事情会从编译代码中受益,或者通过访问 CLR 库(例如System.Text.RegularExpressions
)更容易实现要求。不适用于普通数据访问代码,因为这在 TSQL 中更有效。
从SQL Server的下一个版本开始,CLR 的用例可能会更少
今天,SQL Server 的查询处理器将查询和存储过程编译成一组数据结构,这些数据结构由 SQL Server 查询处理器中的解释器进行评估。使用 Hekaton,T-SQL 存储过程中的查询和过程逻辑直接编译成机器代码,并在编译时应用了积极的优化。这允许存储过程以本机代码的速度执行。
例如,添加 csv 导出、pgp 加密、http 或soap 调用。基本上是为了扩展 sql server,这样您就可以在其中运行更多的业务流程需求,而不是使用外部应用程序。