我想更改存储过程,可以一个文件一个文件的ALTER PROCEDURE ,更新的很麻烦,能不能有种写法,把很多写好的sql文件合并成一个文件,执行一次就好了 。
有时候几十个更新文件要更新好多服务器,累死啦。合并sql存储过程

解决方案 »

  1.   

    exec 存储过程名
    go
    exec 存储过程名
    go
    exec 存储过程名
    go
    exec 存储过程名
    go
    保存文件就可以
      

  2.   

    DECLARE @folder VARCHAR(200)
    SET @folder='e:\tmp'
     
    DECLARE @err INT,@fso INT,@dic INT,@f INT,@fldExists BIT,@fleExists BIT,@fld INT,@fle INT,@fleList INT,@cnt INT,@eof BIT
    DECLARE @t TABLE(id INT IDENTITY(1,1),fName VARCHAR(200))
    --创建fso
    EXEC @err=sp_OACreate 'Scripting.FileSystemObject',@fso OUTPUT
    --检测指定目录是否存在
    EXEC @err=sp_OAMethod @fso, 'FolderExists',@fldExists OUTPUT,@folder
     
    IF @fldExists=0
        PRINT 'floder does not exist!'
    ELSE
        BEGIN
     
            --将指定目录给@fld对象
            EXEC @err=sp_OAMethod @fso,'GetFolder',@fld OUTPUT,@folder
            --获取指定目录的文件集合
            EXEC @err=sp_OAGetProperty @fld,'files',@fleList OUTPUT
            --获取目录下的文件数,准备循环使用    
            EXEC @err=sp_OAGetProperty @fleList,'Count',@cnt OUTPUT
            --输出
            SELECT @err 错误编号,@fldExists 目录存在否,@cnt 文件数
            --WHILE @eof!=0
            --BEGIN
                --检测是否没有文件了
     
     
         
        END
     
      

  3.   

    用osql命令可以执行.sql文件.
    然后把N个osql命令存为批处理文件(.bat),一次执行.
      

  4.   

    ALTER PROC 
    ...
    GO
    ALTER PROC
    ...
    GO
      

  5.   

    不会写批处理文件。噗。我要是想要学习怎么写批处理文件我应该看什么书
    这个是高射炮打蚊子,加个GO就能解决的事用批处理做,不用管它,如果你想了解这方面的东西去查一下sqlcmd实用工具和bat文件的原理就知道了。
      

  6.   

    批处理,顾名思义就是进行批量的处理。批处理文件是扩展名为。bat 或。cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。简单来讲,将你所要执行的dos命令,一句句写进一个txt文件,然后直接修改文件扩展名txt为bat就可以了.
      

  7.   

    搞那么复杂干嘛?导出成一个sql文件,打开替换再执行
      

  8.   

    通过sqlcmd命令行就可以的,1.sqlcmd命令行sqlcmd -S PC0627JVC\MSSQLSERVER2008 -E -i c:\run_sql.sql2.编写c:\run_sql.sql文件,文件内容:
    SET NOCOUNT ON  
    GO  
      
    PRINT '开始执行存储过程'  
    :On Error exit  
      
    :r c:\proc_1.sql  
    :r c:\proc_2.sql  
    :r c:\proc_3.sql    
    PRINT '创建完毕'  里面每个文件,你都可以指定 文件路径,你每次要更新说明文件,就把文件名称写进去就可以了