2017-04-25 129 views
0

注1:從我迄今爲止在我的研究中看到的,沒有辦法完成我期望做的事情,但我希望我錯了......有條件地觸發:CONNECT語句SQL

注2:這樣做的目的是爲了消除需要改變到不同的數據庫

我寫一個SQL腳本(SSMS中)查詢之間的連接來查找基於ID號的信息。這個查詢可以運行2個數據庫(測試數據庫和生產數據庫)。一個ID號碼將在測試數據庫或生產中,但不是兩者。我想要做的是在SQLCMD模式下(或另一種方法,但我還沒有找到)使用CONNECT語句連接到適當的DB。像這樣:

:CONNECT /*Testing database name*/ 
IF NOT EXISTS (SELECT * FROM /*appropriate table*/ WHERE ID = @ID) 
    :CONNECT /*Production database name*/ 

/*Continue with the rest of the query*/ 

理論上,上面的代碼將確保我連接到正確的DB(假設ID完全存在)。儘管如此,不管IF EXISTS如何,第二個:CONNECT語句都會激活,導致查詢總是針對生產而運行。

有沒有辦法達到這個目標?先謝謝你!

+1

這不起作用,因爲'IF NOT EXISTS'是一個T-SQL語句,而':CONNECT'是一個SQLCMD語句。這些不相關:SQLCMD由SSMS解析器執行,而T-SQL由數據庫執行。由於SQLCMD沒有條件邏輯,因此您無法在SQLCMD腳本中執行您想要執行的操作。如果數據庫在同一個實例上,則使用'USE'(一個T-SQL命令)而不是':CONNECT'。如果他們在不同的實例,你不能從SSMS做到這一點。你必須用適當的參數在外部調用'sqlcmd'。 –

回答

0

由於我不知道你需要什麼來消除連接改變,你有沒有考慮加入兩個表,並從那裏進行到所需的結果?如果這是所需的流程,你可以在返回的表格中檢查id的存在。您也可以檢查this。 讓我知道它是否有幫助!