如何在SQL Server中预编译存储过程?

Pav*_*van 3 sql sql-server

早上好 !

有没有办法在SQL Server中预编译存储过程?我的要求是这样的..我有一些存储过程,编译比执行需要更多时间.所以我想预编译所有存储过程.在db服务器启动并运行时预编译它们会很不错.

任何有关这方面的想法都会非常有帮助!

谢谢和问候,帕万.

Car*_*lin 5

编写一个脚本,使用"SET FMTONLY ON"执行每个存储过程.

将编译该过程,但在执行期间不会对DB进行永久性更改.您不能将此用于使用临时表的过程(#table语法).

这就是Microsoft在Visual Studio中如何确定存储过程的输出应该是什么.


KM.*_*KM. 3

您可以强制重新编译,但直到下次运行时才会发生

EXEC SP_RECOMPILE YourProcedureName

更多信息在这里...

每次运行时强制它重新编译:
CREATE PROCEDURE YourProcedureNameWITH RECOMPILE .....

这次强制它重新编译:
EXEC YourProcedureName WITH RECOMPILE

这是一篇关于优化 SQL Server 存储过程以避免重新编译的好文章

还有另一个...

根据OP的评论进行编辑:

为什么你不第一次使用虚假数据手动运行它(在应用程序之外)(但不是那么虚假,执行计划很糟糕,谷歌:sql server参数欺骗和嗅探),这可以强制编译,然后运行一些sql 删除插入的内容。当用户第一次运行它时,它已经运行并被编译了。