原文出处:http://my.oschina.net/Kenyon/blog/53399
近期系统升级,系统用的数据库是MSSQL 2008,里面有10几个数据库,因为更新的时候有10几个脚本,每个脚本都需要在每个库上执行一遍。手工执行的工作量还是比较大的,而且容易出错。故写了以下一个bat处理文件,权且记录一下。本程序共有4个文件组成,一个点击文件,一个Exec文件,一个说明文件和一个日志文件。
点击文件 Click_Me.bat 内容
@echo off
set SERVER=localhost
set LOGIN=sa
set PWD=00000000
set DB_LIST=chenlq,kenyon
call :Fd %1
goto :EOF
::循环获取DB列表
:Fd
echo. >batch.log
for %%a in (%DB_LIST%) do (call sql_exec.bat %SERVER% %LOGIN% %PWD% %%a)
:: for %%a in (%DB_LIST%) do (echo %SERVER% %LOGIN% %PWD% %%a & pause)
goto :EOF
@echo off
call :Fd %1
goto :EOF
:Fd
for /F "tokens=*" %%i in ('dir /b *.sql 2^>nul') do (
echo 本次批量执行的DB:%%a 文件列表:%%i >>batch.log
echo %date:~,10% %time% Begin Exec %%i >>batch.log
sqlcmd -S %SERVER% -U %LOGIN% -P %PWD% -d %%a -i %%i >>batch.log
echo %date:~,10% %time% End Exec %%i >>batch.log
echo.>>batch.log
)
goto :EOF
1.把需要执行的文件按一定的名字次序放在批处理工具相同的路径下
2.修改Click_Me.bat的参数,如ip,user,密码等
3.执行Click_Me.bat
4.查看相同路径下产生的batch.log里面的相关信息