2013-11-26 93 views
2

我遇到一個奇怪的問題,我敢肯定,很容易解釋和固定。從SQLServer的後一個批處理文件運行安裝SQLCMD

我使用.bat文件來安裝很多程序,其中一個是SQL Server 2012(如果它很重要,其他安裝只是.net框架,OPOS驅動程序和使用SQL Server的POS軟件) 。

我可以獲得批處理文件以靜默安裝一切,包括SQL(帶SSMS),這非常棒。但是一旦安裝了SQL Server,我想運行幾個SQL腳本來創建/附加數據庫。我知道安裝工作(如果我不'嘗試做除安裝以外的任何東西),我知道SQLCMD的工作原理(如果我單獨運行,安裝後),但如果我嘗試運行SQLCMD在安裝後,在同一個批處理文件,它無法與標準的「SQLCMD不被識別爲一個內部或外部命令......」

我已經把這個下來我需要重新啓動CMD得到它識別新命令(即SQLCMD),所以我想我會將SQLCMD命令拆分爲一個單獨的批處理文件並調用它,但它仍然不起作用。在CMD.exe選取新命令之前,我必須關閉原始批處理文件。

因此......是否可以'刷新'cmd.exe,以便新安裝的SQLCMD命令可以從原始批處理文件中使用?

這裏是(一些)我的腳本。 (請注意,我刪除了所有其他的安裝SQL Server之前)

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 

"%~dp0SQLServer.exe" /QS /INDICATEPROGRESS /ACTION=install /FEATURES=SQL,SSMS /INSTANCENAME=Datasym /SECURITYMODE=SQL /SAPWD=Welcome21ST /IACCEPTSQLSERVERLICENSETERMS 
echo. 
echo SQL Server installed 

sqlcmd -S %computername%\DATASYM -U sa -P Welcome21ST -i %script% 

%script%變量的變化(就像我說的,有多種文字,我想運行)。而且我知道這些腳本本身是有效的。

爲什麼CMD不承認SQLCMD的命令?

我試圖替換行:

call sqlscript.bat 

sqlcmd -S %computername%\DATASYM -U sa -P Welcome21ST -i %script% 

,因爲我認爲這將打開另一個CMD,EXE(它做),所以我假設第二CMD會看到ew命令(SQLCMD),但它似乎並不如此。

任何關於如何讓SQLCMD在原始批處理文件中工作的幫助將不勝感激。

+1

只使用sqlcmd的完整路徑。 –

+0

我同意馬特所說的。原因是SQL安裝可能會修改PATH環境變量以提供SQLCMD的路徑。這不適用於此CMD會話。 – RGuggisberg

回答

1

正如您已經發現的那樣,當前的CMD窗口不會選擇系統PATH環境變量的新更改。如果由於某種原因,你不想把完整的路徑sqlcmd(我認爲這是最好的解決方案),你可以嘗試這樣做。

start /wait cmd /c sqlcmd -S %computername%\DATASYM -U sa -P Welcome21ST -i %script% 

這將產生一個新窗口並等待sqlcmd調用完成,然後再返回到原始腳本。

+0

SQLCMD的完整路徑工作正常,所以我會繼續。 –

+0

很高興你找到了解決方案。不要忘記標記爲已回答。 :-) – Mark

相關問題