Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2008 R2-sqlcmd bat文件以在文件夹中运行一批SQL查询,但它们不是按文件名的顺序运行的_Sql Server_Sql Server 2008_Batch File_Sqlcmd - Fatal编程技术网

Sql server SQL Server 2008 R2-sqlcmd bat文件以在文件夹中运行一批SQL查询,但它们不是按文件名的顺序运行的

Sql server SQL Server 2008 R2-sqlcmd bat文件以在文件夹中运行一批SQL查询,但它们不是按文件名的顺序运行的,sql-server,sql-server-2008,batch-file,sqlcmd,Sql Server,Sql Server 2008,Batch File,Sqlcmd,我已经编写了一堆sql脚本,我希望在文件夹中以批处理的方式运行。在阅读之后,我求助于创建一个bat文件,其中包括使用sqlcmd。对于这组特定的脚本,当我运行bat时,它似乎没有按顺序运行。我不知道发生了什么,因为我尝试在开始时用前缀数字重命名sql脚本,尝试使用字母,甚至使用windows资源管理器将整个脚本重命名为一个数字/字母 这个过程可能看起来像这样:A.sql-B.sql-C.sql-D.sql-F.sql-G.sql-E.sql 关于我丢失了什么或者如何错误地重命名这些文件,有什么想

我已经编写了一堆sql脚本,我希望在文件夹中以批处理的方式运行。在阅读之后,我求助于创建一个bat文件,其中包括使用sqlcmd。对于这组特定的脚本,当我运行bat时,它似乎没有按顺序运行。我不知道发生了什么,因为我尝试在开始时用前缀数字重命名sql脚本,尝试使用字母,甚至使用windows资源管理器将整个脚本重命名为一个数字/字母

这个过程可能看起来像这样:A.sql-B.sql-C.sql-D.sql-F.sql-G.sql-E.sql

关于我丢失了什么或者如何错误地重命名这些文件,有什么想法吗?谢谢

我的bat文件里有什么

for %%G in (*.sql) do sqlcmd /S W-VAN-A124178\HAZUSPLUSSRVR /d 
BC_Exposure_2016 -E -i"%%G"
pause

您可以分析
dir
命令的输出,您可以修改该命令,以便文件按字母顺序显示。为此,您可以使用
dir/A-D/B/ON

/A-D
排除目录
/B
排除了大量在解析时难以处理的混乱附加信息
/ON
按名称订购

因此,要修改您的代码:

for /f %%G in ('dir /A-D /B /ON') do (
  sqlcmd /S W-VAN-A124178\HAZUSPLUSSRVR /d BC_Exposure_2016 -E -i"%%G"
)
pause

应该有用。我在循环中加了括号。这一次是因为我已经习惯了,因为代码被分成了两行

我认为您可能需要运行此处指出的多个bat文件()或通过sql Agent运行。如果您想订购这些文件,powershell可能是更好(更现代)的替代方案