2015-10-03 83 views
1

我正在嘗試在通過SQLCMD附加數據庫的腳本中編寫一個部分。VBS中的SQLCMD

如果我從它附加數據庫成功的CMD線/批處理文件運行以下命令:

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

但是如果我做了以下不出錯一個VBS中運行,但不重視DB。

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

您的命令中缺少-Q選項的尾隨雙引號。

objShell.Run「SQLCMD -U SA -P RubbishPassword -S(本地)-Q 「」 sp_attach_db的 'MyDBInstance', 'd:\ AFolder \ MyDB.mdf','d:\ MyDBInstance \ MyDB_log.ldf」 ""

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