我正在尝试将一个部分写入一个通过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的任何想法?
答案 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'
""
“