0

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

4

4 回答 4

0

恕我直言:从来没有。扩展程序已被弃用很长时间,它们当然不应该出现在任何未来的开发计划中。

每当您发现自己想要使用现有的扩展过程、通过 调用命令行内容xp_cmdshell或以其他方式在 SQL Server 边界之外操作时,都应该考虑使用 CLR。但是,在很多情况下,您还应该首先考虑是否真的需要在 SQL Server 中执行任务。

还有一些 CLR 擅长于 SQL Server 中的计算过程的用例,例如拆分字符串,但即使在那里,我们也可以有更好的不涉及 CLR 的解决方法

于 2013-01-22T12:11:48.020 回答
0

扩展存储过程允许您使用诸如 C 之类的编程语言创建自己的外部例程。

基本上,非 SQL 的东西。显然,普通的存储过程都是关于 SQL 的。

值得注意的是MSDN中的以下内容:

此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。请改用 CLR 集成。

所以应该是

何时使用CLR 集成而不是扩展存储过程?

微软的回答几乎是:几乎总是!

于 2013-01-22T11:57:31.137 回答
0

从 SQL Server 2005+ 开始,不要使用扩展存储过程,因为它们已被弃用,而且写得不好的存储过程可能会乱涂并损坏属于 SQL Server 的其他内存。

我只会考虑 CLR 过程,如果它需要做一些 CPU 密集型的事情,这些事情会从编译代码中受益,或者通过访问 CLR 库(例如System.Text.RegularExpressions)更容易实现要求。不适用于普通数据访问代码,因为这在 TSQL 中更有效。

SQL Server的下一个版本开始,CLR 的用例可能会更少

今天,SQL Server 的查询处理器将查询和存储过程编译成一组数据结构,这些数据结构由 SQL Server 查询处理器中的解释器进行评估。使用 Hekaton,T-SQL 存储过程中的查询和过程逻辑直接编译成机器代码,并在编译时应用了积极的优化。这允许存储过程以本机代码的速度执行。

于 2013-01-22T11:58:08.090 回答
0

例如,添加 csv 导出、pgp 加密、http 或soap 调用。基本上是为了扩展 sql server,这样您就可以在其中运行更多的业务流程需求,而不是使用外部应用程序。

于 2017-01-01T18:43:23.523 回答