我在一个文件夹中有一堆脚本,我必须按顺序运行。我只是在 SSMS 中打开它并一一点击执行。我必须等待其中一个完成然后运行第二个。
有没有办法让我在 SSMS 中创建一个批处理脚本或一个脚本(如果可能的话),它将一个一个地遍历文件?这将节省我的时间,因为我可以在脚本运行时做其他事情并防止错误(它们中的大多数依赖于连续创建的临时表)。
我认为我正在寻找一个批处理脚本,sqlcmd
但不知道如何完成这项任务。
谢谢你。
我在一个文件夹中有一堆脚本,我必须按顺序运行。我只是在 SSMS 中打开它并一一点击执行。我必须等待其中一个完成然后运行第二个。
有没有办法让我在 SSMS 中创建一个批处理脚本或一个脚本(如果可能的话),它将一个一个地遍历文件?这将节省我的时间,因为我可以在脚本运行时做其他事情并防止错误(它们中的大多数依赖于连续创建的临时表)。
我认为我正在寻找一个批处理脚本,sqlcmd
但不知道如何完成这项任务。
谢谢你。
为此很容易组合一个批处理文件。将以下内容放入文本文件中,但以 .bat 结尾,例如“ExecuteMyScripts.bat”
Sqlcmd 接受各种参数,但主要的参数是 -S 用于服务器实例,-d 用于数据库,-i 用于输入文件,即您的 SQL 文件,-U 用于用户,-P 用于密码,-o 用于输出文件。注意字母的大小写。
所以打开记事本并添加以下内容:
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\script1.sql" -o "c:\script1log.txt"
IF ERRORLEVEL 1 goto :eof
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\script2.sql" -o "c:\script2log.txt"
IF ERRORLEVEL 1 goto :eof
sqlcmd -S mysqlserver -d mydb -U sa -P pass1 -i "c:\scripr3.sql" -o "c:\script3log.txt"
将文件另存为 ExecuteMyScripts.bat。双击该文件,两个脚本都将被执行。
如果发现错误,在每个 sqlcmd 调用之后添加 'IF ERRORLEVEL 1 goto :eof' 将跳转到脚本的末尾。
在这里找到完整的用法, http: //msdn.microsoft.com/en-us/library/ms162773.aspx