以下是我在批处理文件中的代码:
for %%f in (%~dp0*.sql) do (
sqlcmd -S %SName% -U %UName% -P %Pwd% -d %DbName% -I -i "%%f" >>TsDeploy.txt 2>&1
)
问题是该集合中有一个文件必须不是第一个运行。(因为其他文件是关于create Table的脚本文件,那个是将数据插入到表中)。
如何在仅一个批处理文件中实现目标?
答案 0 :(得分:1)
您可以重命名不能先运行的sql文件,以便排序到最后(带有z的前缀?)。
或者你可以做类似
的事情for %%f in (%~dp0*.sql) do (
if "%~nxf" neq "fileNameNotToRunFirst.sql" (
sqlcmd -S %SName% -U %UName% -P %Pwd% -d %DbName% -I -i "%%f" >>TsDeploy.txt 2>&1
)
)
sqlcmd -S %SName% -U %UName% -P %Pwd% -d %DbName% -I -i "%~dp0fileNameNotToRunFirst.sql" >>TsDeploy.txt 2>&1
或者您可以创建一个主sql脚本,按照正确的顺序调用其他每个脚本,如How to Run a Series of T-SQL Scripts in a Specific Order
中所述