sqlcmd不会从.bat文件运行,但它可以从命令行运行

时间:2014-07-10 13:47:28

标签: sql-server batch-file

我正在尝试运行一个简单的批处理文件,该文件调用SQL Server中的备份脚本。当我将它输入命令行时,它可以正常工作,但是当从.bat文件运行时,没有任何反应。没有错误,根本没有输出。

sqlcmd.exe -S WIN-FPQSHCEB0EM -E -Q "EXEC sp_BackupDatabases @backupLocation='E:\Backups\', @databaseName=’xxxxxx’, @backupType='F'"
PAUSE
  • 我尝试过使用和不使用服务器名称(-S)
  • 我明确设置了一条路径,没有任何影响。
  • 执行sqlcmd时,我使用了整个路径。

知道为什么这不起作用?

2 个答案:

答案 0 :(得分:4)

我知道这是一个老问题,但最近发生在我身上!

由于你的SQL中的引号...我无法找到一个方法来逃避它们,所以我使用了一个脚本文件..把你的SQL放到脚本文件中,然后使用& #34; -i"运行它,而不是内联SQL ...

答案 1 :(得分:0)

我为这个问题苦了几个小时。我在.bat文件中使用“ sqlcmd.exe -U sa -P $ fancy!Paswd ...”。现在,在cmd.exe提示符下,如果剪切并粘贴该命令并运行它,它将起作用。从.bat文件(脚本顶部带有'SETLOCAL EnableDelayedExpansion EnableExtensions'),该命令失败,并显示:“ Sqlcmd:错误:Microsoft SQL Server本机客户端11.0:用户'sa'登录失败。..”。

为什么会失败?因为“!”密码中的字符是用于!VARIABLE!的cmd.exe元字符。就像%VARIABLE%语法一样。因此,在.bat脚本中,该脚本用空格替换了“!Paswd”,这不是正确的密码!所以...希望这可以避免其他人追逐自己的尾巴。 stackoverflow搜索使我不断得到这个答案以及其他一些不太精确的问题,因此我认为具有这个确切问题的Google社区现在可以找到此提示。我的建议是不要使用带有特殊字符“!”的密码在里面。