我們有Dev,Uat和Live環境。對於每個環境,我們有相同的存儲過程的不同版本。對於每個環境,存儲過程都是從同一個名稱爲「CMS」的數據庫目錄運行的。在每種情況下,所調用的sql只在服務器名稱上有所不同。例如,在UAT代碼看起來像這樣(簡化):根據調用環境,我們如何獲得相同的存儲過程代碼來調用不同的數據庫服務器?
INSERT INTO UAT.ABC.[dbo].NOTE (ID, [TEXT])
VALUES (2, 'Just a note')
活看起來像這樣的代碼(簡化):
INSERT INTO Live.ABC.[dbo].NOTE (ID, [TEXT])
VALUES (2, 'Just a note')
我們想只寫存儲過程一次,能夠部署相同的存儲過程,以便在我們的示例中執行插入語句時指向正確的服務器。我們希望避免使用動態sql。有沒有辦法將參數傳遞給存儲過程,告訴它要使用哪個服務器?這可以通過使用帶腳本變量的sqlcmd來實現,如果是這樣,那又如何?有沒有一個簡單的方法做到這一點沒有動態SQL或腳本變量?
編輯的SQL Server 2014
六個單獨的實例 - 3用於爲每個代碼環境中調用代碼和3每個環境被調用。
UAT,Dev和Live是否有單獨的SQL Server實例? – BateTech 2014-12-04 17:03:36
SQL Server 2014的六個獨立實例 - 每個調用代碼的環境3個,每個環境3個代碼被調用。 – CarneyCode 2014-12-04 17:10:15
好的,在這種情況下UAT,Dev和Live是關聯的服務器嗎? – BateTech 2014-12-04 17:11:01