我有多个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
答案 0 :(得分:1)
尝试资本Q
不要使用 [-q“cmdline query”]
但改为使用 [-Q“cmdline query”并退出]
答案 1 :(得分:0)
https://msdn.microsoft.com/en-us/library/ms180944.aspx
在没有输入文件或查询的情况下执行命令时,sqlcmd连接到指定的SQL Server实例,然后显示带有1> 1的新行。然后是一个名为sqlcmd提示符的闪烁下划线。 1表示这是Transact-SQL语句的第一行,而sqlcmd提示符是Transact-SQL语句在您键入时开始的位置。
在sqlcmd提示符下,您可以键入Transact-SQL语句和sqlcmd命令,例如GO和EXIT。每个Transact-SQL语句都放在一个名为语句缓存的缓冲区中。键入GO命令并按Enter后,这些语句将发送到SQL Server。要退出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
答案 2 :(得分:0)
我无法通过bat文件运行它。我能做的是在命令行的每个命令结束时使用QUIT运行命令。