VBS 中的 SQLCMD

SQLCMD within a VBS

我正在尝试将一个部分写入通过 SQLCMD 附加数据库的脚本中。

如果我 运行 来自 CMD line/batch 文件,它会成功附加数据库:

sqlcmd -U sa -P RubbishPassword -S (local) -Q "sp_attach_db 'MyDBInstance','D:\AFolder\MyDB.mdf','D:\MyDBInstance\MyDB_log.ldf'"

但是,如果我通过执行以下操作在 VBS 中 运行 它不会出错,但不会附加数据库。

    Set objShell = CreateObject("WScript.Shell")
objShell.Run "sqlcmd -U sa -P RubbishPassword -S (local) -Q ""sp_attach_db 'MyDBInstance','D:\AFolder\MyDB.mdf','D:\MyDBInstance\MyDB_log.ldf'" 

关于为什么 and/or 是通过 VBS 传递 SQLCMD 的更好方法的任何想法?

您的命令中缺少 -Q 选项的尾随双引号。

objShell.Run "sqlcmd -U sa -P RubbishPassword -S (local) -Q ""sp_attach_db 'MyDBInstance','D:\AFolder\MyDB.mdf','D:\MyDBInstance\MyDB_log.ldf'"""

尝试使用 wscript.echo 或像这样的 MsgBox 来调试您的命令:

Command = "sqlcmd -U sa -P *** -S (local) -Q "& DblQuote("sp_attach_db 'Aztec','D:\Aztecdata\Aztec.mdf','D:\Aztecdata\Aztec_log.ldf'")
wscript.echo Command

'***********************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'***********************************************************************