2013-03-12 49 views
1

我的客戶希望從應用程序中更改服務器,我的意思是從應用程序中輸入新的SQL服務器名稱,並在SQL服務器數據庫表中搜索關鍵字。我有存儲生產者,這對一個SQL服務器工作正常。動態存儲過程在不同的SQL服務器中?

如果客戶端在應用程序級別更改SQL Server名稱,則應用程序中的我的連接字符串將不起作用。因爲我使用的連接字符串中的數據庫可用於一臺服務器。

我該如何處理這種情況? 。無論如何sp會是動態的嗎? P

+0

不允許他們更改服務器?爲什麼要這麼做?我想你可以爲數據庫創建一個鏡像。 – swasheck 2013-03-12 18:12:31

+0

客戶端想要在不同的服務器中搜索關鍵字。 – James123 2013-03-12 18:23:47

+0

哇。然後,您需要讓您的應用程序知道要檢查哪個服務器,並根據客戶端選擇的服務器動態更改'SqlConnection'屬性。您可以將兩臺服務器作爲連接字符串存儲在配置文件中,並在構建連接時引用相應的服務器。 – 2013-03-12 18:25:17

回答

1

那麼在一臺服務器上,你可以創建一個指向另一臺服務器的synonym。假設你已經鏈接的服務器,上Server1

CREATE SYNONYM dbo.ProcedureName FOR Server2_Linked.DatabaseName.dbo.ProcedureName; 

現在,當應用程序調用dbo.ProcedureNameServer1,不知情的話,它實際上是執行上Server2

如果這不是你想要的,我想你必須詳細闡述你的問題。

+0

Myservers無法鏈接對方。我的意思是沒有定義。我需要檢查SP是否存在於我的服務器上,如果沒有創建新的數據庫並執行它。 – James123 2013-03-12 18:10:00

+1

什麼將生成此存儲過程的代碼?你的意思是你希望你的應用程序在一臺服務器上嘗試執行一個存儲過程,但是如果它沒有在那裏找到它,那麼從另一臺服務器獲取存儲過程定義並創建它,然後執行它?這聽起來不像你的應用*應該做的事情。如果你需要兩個地方的存儲過程,*你*現在應該這樣做。 – 2013-03-12 18:12:38

+0

例如,您可以備份數據庫,在新服務器上恢復數據庫,更新連接字符串,擦拭雙手並祝他們好運。 – 2013-03-12 18:14:15