VBS中的SQLCMD

时间:2015-10-03 12:10:35

标签: vbscript sqlcmd

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

如果我从CMD行/批处理文件运行它,它会成功附加数据库:

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'" 

关于为什么和/或更好的方式通过VBS传递SQLCMD的任何想法?

2 个答案:

答案 0 :(得分:2)

尝试使用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
'***********************************************************************

答案 1 :(得分:0)

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

  

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