2017-03-07 108 views
2

如果在T-SQL腳本中運行多個:CONNECT語句(如果連接失敗),則腳本的其餘部分不會運行。SQLCMD連接錯誤處理

是否有一些SQLCMD命令作爲Try/Catch塊來處理連接錯誤?我知道,由於SQLCMD命令在SQL代碼之前運行,因此T-SQL Try/Catch無效。

回答

1

您可以將您的sqlcmd代碼放入批處理文件中,然後執行該批處理文件(如建議的here)。

您可以使用選項-S指定要連接的服務器,並使用選項-Q指定您的TSQL代碼(有關MSDN的更多信息)。

例如:

sqlcmd -S WrongServerName -Q "select @@servername" 
sqlcmd -S CorrectServerName -Q "select @@servername" 

pause 

第一命令將失敗(如果WrongServerName是不存在的或離線服務器),而第二個將被執行(如果CorrectServerName是一個在線服務器),並返回服務器的名稱。

+0

感謝您的支持。除了使用批處理文件之外是否還有其他解決方案我問的原因是這些腳本是從一個表格中的一個列中獲取的,然後連接在一起以製作一個通過多個服務器運行的大腳本 –

+1

@RyanGillooly是的,我明白了你的觀點:我不知道是否有更多SQLCMD中錯誤處理的高級機制。我使用這種方法是因爲我執行簡單的TSQL指令,所以批處理文件對我來說是一個很好的解決方案。我明白,如果你必須運行復雜的腳本,這個解決方案可能不足。我曾經讀過ERRORLEVEL變量,但我認爲它只處理DOS命令返回的錯誤。對不起,我無法進一步幫助你。 – Andrea