rwewqe 发表于 2014-11-5 09:27:13

bat+sqlcmd 批量运行脚本

Hello,此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重,在指运行时多一种选择。

bat文件



    @echo off
    @REM ******** ******** General Batch for Starting SQL ******** ********   
    @REM %1 is the name of SQL script file
    @rem SET SQL_NAME=%1
    @SET SQL_NAME=%1
    @SHIFT /1
    @REM SHIFT /1
    @REM P1... is parameters of SQLCMD,P1=%1...
    @rem c for count
    @set /a c=0
      
    @rem ******** ******** parameters for sql server login ******** ********   
    @set svrName=SERVERNAME\INSTANCENAME
    @set uname=your_name
    @set upwd=your_password
    @set db=YOURDBNAME
      
    @set s= %1 %2 %3 %4 %5 %6 %7 %8 %9
    @FOR %%A IN (%s%) DO @set /a c=c+1
    @if %c% gtr 9goto s9
    @if %c%==8goto s8
    @if %c%==7goto s7
    @if %c%==6goto s6
    @if %c%==5goto s5
    @if %c%==4goto s4
    @if %c%==3goto s3
    @if %c%==2goto s2
    @if %c%==1goto s1
    @if %c%==0goto s0   
    :s9
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3 p4=%4 p5=%5 p6=%6 p=%7 p8=%8 p9=%9   
    @goto end
    :s8
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3 p4=%4 p5=%5 p6=%6 p=%7 p8=%8   
    @goto end
    :s7
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3 p4=%4 p5=%5 p6=%6 p=%7   
    @goto end
    :s6
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3 p4=%4 p5=%5 p6=%6   
    @goto end
    :s5
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3 p4=%4 p5=%5   
    @goto end
    :s4
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3 p4=%4   
    @goto end
    :s3
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2p3=%3   
    @goto end
    :s2
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2   
    @goto end
    :s1
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1   
    @goto end
    :s0
    @sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME%   
    @goto end
    :end   
    @echo off
    @set svrName=
    @set uname=
    @set upwd=
    @set db=
    @exit /b 0   


调用方法


test.sql
    set nocount on
    go
    select '$(p1)' as p1 ,'$(p2)' as p2

批量调用

d:test 目录下有多个sql文件,批量运行。


运行



页: [1]
查看完整版本: bat+sqlcmd 批量运行脚本