如何快速重新编译所有的存储过程

自己的一个写法,大概思路是从sys.Objects里取得所有的存储过程,然后拼动态字符串来使用sp_recompile重新编译所有的SP。

SELECT ROW_NUMBER() OVER(ORDER BY name) AS RID,'exec sp_recompile ''' + name +'''' AS Text
INTO #TEMP
FROM sys.objects WHERE TYPE = 'P'

DECLARE @MaxID INT
DECLARE @SQL VARCHAR(MAX)
SELECT @MaxID = MAX(RID) FROM #TEMP

WHILE (@MaxID IS NOT NULL)
BEGIN
	SELECT @SQL = Text
	FROM #TEMP
	WHERE RID = @MaxID

	--PRINT @SQL
	EXEC (@SQL)

	SELECT @MaxID = MAX(RID) FROM #TEMP WHERE RID < @MaxID
END

不知道还有没有什么更好的方法。

时间: 2024-10-14 09:19:18

如何快速重新编译所有的存储过程的相关文章

Linux下快速静态编译Qt以及Qt动态/静态版本共存

Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-opensource-src的tar包,到网上一查,乖乖,大部分人编译这个包居然花费了12-13个小时!但是,根据我在Windows下静态编译Qt的经验,其实这之中很多东西都是可以不用编译的,最终我大约用了40分钟编译完成了全部内容.如果你直接使用官方的sdk安装,那么你就已经有了一个动态库,现在你又通过源

Centos6.5-----nagios快速安装编译配置文档-全部虚拟环境

写这个文档的目的,就是为了方便 快捷的部署nagios,涉及到个人喜好的配置,大家自行修改,可以套用. 一.下载并安装所需软件 1,yum install gcc mysql httpd php gd openssl openssl-devel mysql-server vim wget Wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.7.tar.gz Wget http://nagios-plugins

MocorDroid编译工程快速建立编译环境

function sprdLunch(){    declare -a arrProj    arrProj=`find out/target/product -name previous_build_config.mk` if [ ${#arrProj[@]} -eq 1 ]; then        preCfg=`cat ${arrProj[0]}`        temp1=${preCfg##* } # get full config        lunName=${temp1%-*

关于T-SQL重编译那点事,WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗

本文出处:http://www.cnblogs.com/wy123/p/6262800.html   在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不

存储过程中引用的常规表,临时表以及表变量是否会导致存储过程的重编译

在存储过程中,经常要引用一些表来存储一些中间数据,用完即删.对于这个中间表,用常规表,临时表或者表变量有什么区别呢? 下面我们看一下这三种中间表是否会造成执行计划的重编译. 首先打开sql server profile,监控存储过程. 1.建第一个存储过程,在存储过程中创建常规表TT1 CREATE PROCEDURE TEST1_PRO AS BEGIN CREATE TABLE TT1( ID INT IDENTITY, NAME VARCHAR(10) ) INSERT INTO TT1

存储过程重编译的优点、缺点、确定引发语句

存储过程通过明确地将查询的可变部分转换为参数来增进执行计划的可重用性.这使执行计划在查询以可变部分的相同或不同值重新提交时可以被重用.存储过程包含一组复杂的SQL语句,使生成存储过程的执行计划的代价有些高.因此,通常重用存储过程的执行计划来代替生成新计划是有利的.但是,有时候现有的计划可能不适用或者在重用期间可能不能提供最佳的处理策略.SQL Server重编译存储过程中的语句来生成一个新的执行计划,以解决这个问题. 一.重编译的好处 存储过程的重编译既有好处又有缺点,有时候,为查询考虑一个新的

WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译

在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不是仅仅只有这么一点区别. 事实上在某些特定情况下,两者的区别并非仅仅是存储过程级重编译和语句级重编译的

存储过程编译出现锁死情况的解决方法

本随笔文章,由个人博客(鸟不拉屎)转移至博客园 发布时间: 2018 年 10 月 23 日 原地址:https://niaobulashi.com/archives/procedures_locks.html --- 存储过程 先科普一下存储过程,在项目开发过程可能会遇到. 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)

MySQL数据库新特性之存储过程入门教程

在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用户入门. 存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程的优点 作为存储过程,有以