返回顶部

收藏

刷新SQL Server所有视图、函数、存储过程

更多

此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。

--视图、存储过程、函数名称
DECLARE @NAME NVARCHAR(255);
--局部游标
DECLARE @CUR CURSOR
--自动修改未上状态为旷课
SET @CUR=CURSOR SCROLL DYNAMIC FOR
SELECT NAME FROM DBO.SYSOBJECTS 
    WHERE NAME NOT IN ('SYSCONSTRAINTS','SYSSEGMENTS')
        AND
        (
            OBJECTPROPERTY(ID, N'IsView') = 1               --视图
            OR OBJECTPROPERTY(ID,N'IsProcedure') = 1        --存储过程
            OR OBJECTPROPERTY(ID,N'IsScalarFunction') = 1   --标量函数
            OR OBJECTPROPERTY(ID,N'IsTableFunction') = 1    --标题函数
            OR OBJECTPROPERTY(ID,N'IsInlineFunction') = 1   --内联函数
        );

OPEN @CUR;
FETCH NEXT FROM @CUR INTO @NAME

WHILE (@@FETCH_STATUS=0)
BEGIN

    DECLARE @OldText NVARCHAR(MAX);
    DECLARE @NewText NVARCHAR(MAX);

    --读取创建脚本,当脚本超长时分成多条记录时合并
    SELECT @OldText=@OldText + CHAR(10) + CHAR(13) + RTRIM(TEXT) FROM SYSCOMMENTS WHERE ID = OBJECT_ID(@NAME);

    --将创建脚本替换为更新脚本
    SET @NewText=REPLACE(@OldText,N'CREATE VIEW',N'ALTER VIEW');
    SET @NewText=REPLACE(@NewText,N'CREATE PROCEDURE',N'ALTER PROCEDURE');
    SET @NewText=REPLACE(@NewText,N'CREATE FUNCTION',N'ALTER FUNCTION');

    BEGIN TRY
        EXEC(@NewText);
    END TRY
    BEGIN CATCH
        PRINT N'---------------------------------------------------------------------------';
        PRINT @NAME + N' : ' + ERROR_MESSAGE();
        --PRINT @OldText;
        PRINT N'---------------------------------------------------------------------------';
    END CATCH

    FETCH NEXT FROM @CUR INTO @NAME

END

CLOSE @CUR;
DEALLOCATE @CUR;
--该片段来自于http://outofmemory.cn

标签:sql,数据库

收藏

0人收藏

支持

0

反对

0

»更多 您可能感兴趣的代码
  1. 2013-07-23 16:18:20Sql Server中Case使用方法 by 自由魂
  2. 2013-08-09 14:03:09命令查看SQL2008中表的索引数据 by YuChao
  3. 2014-02-17 16:06:25Oracle统计表的数据行和数据块信息 by Sycro
  4. 2014-03-15 18:43:08PostgreSQL 列举和停止执行中的 sql by xuleaper
  5. 2014-03-28 16:40:31去除外键的存储过程 by 董一碗
  6. 2014-04-09 20:10:31oracle 回收站管理 by YuChao
  7. 2014-04-25 09:36:11mysql导出csv by 张少华
  8. 2014-05-02 10:44:58复制存储过程 by Ev4n
  9. 2014-05-13 09:55:38删除所有存储过程 by xuleaper
  10. 2014-07-07 21:34:29Oracle 表结构及数据复制 by Merrill
  11. 2014-07-27 10:48:58SQL中的事务处理机制--sp_lock2 by 吴红军

发表评论