批处理文件中的多个 sqlcmd 命令

multiple sqlcmd commands in a batch file

我有多个 sqlcmd 命令从一个批处理文件一次 运行。单独执行时的每个语句都可以完美运行。但是如果我在 bat 文件中给出 5 条 sqlsmd 命令,它只会执行第一个,然后我在命令行屏幕上看到 1> 并且没有任何反应。如何解决?

注意:每行之前的 CALL 语句不起作用这是我在研究中找到的唯一解决方案

我正在做的例子::

sqlcmd -S servername-q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'       ,@DBName = 'db' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\db2dba' ,@RetainHours = 47       , @create_sub_dir = 0      " >> C:\tlogresult.txt
sqlcmd -S servername -q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'      ,@DBName = 'DB2RuntimeMigration' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\DB2RuntimeMigration' ,@RetainHours = 47         , @create_sub_dir = 0      " >> C:\tlogresult.txt

https://msdn.microsoft.com/en-us/library/ms180944.aspx

在没有输入文件或查询的情况下执行命令时,sqlcmd 连接到 SQL 服务器的指定实例,然后显示一个新行,其中包含 1> 后跟闪烁的下划线被命名为 sqlcmd 提示符。 1 表示这是 Transact-SQL 语句的第一行,sqlcmd 提示符是您输入 Transact-SQL 语句的开始点。

在 sqlcmd 提示符下,您可以键入 Transact-SQL 语句和 sqlcmd 命令,例如 GO 和 EXIT。每个 Transact-SQL 语句都放在一个称为语句缓存的缓冲区中。在您键入 GO 命令并按 ENTER 后,这些语句将发送到 SQL 服务器。要退出 sqlcmd,请在新行的开头键入 EXIT 或 QUIT。

...

使用 -o 选项输出到文件而不是通过管道将输出输出到文件,这应该会阻止您进入交互模式。

或尝试

sqlcmd -S servername-q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'       ,@DBName = 'db' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\db2dba' ,@RetainHours = 47       , @create_sub_dir = 0      " >> C:\tlogresult.txt
exit
sqlcmd -S servername -q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'      ,@DBName = 'DB2RuntimeMigration' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\DB2RuntimeMigration' ,@RetainHours = 47         , @create_sub_dir = 0      " >> C:\tlogresult.txt"
exit

我无法通过 bat 文件运行。我能够做的是 运行 在命令行中的每个命令末尾带有 QUIT 的命令。

试金Q

不使用 [-q "cmdline query"]

而是使用 [-Q "cmdline query" 并退出]