2014-01-07 227 views
3

可以在具有兩個數據源類似或條件的應用程序中使用兩個連接字符串具有相同的名稱。是否有可能有兩個具有相同名稱的ConnectionStrings?

<add name="DefaultConnection" connectionString="Data Source=serverName|serverIpAddress;Initial Catalog=DatabaseName;User=name;Password=Password;" 
     providerName="System.Data.SqlClient" /> 

任何機構都可以幫助我做到這一點。

+1

你究竟在做什麼?這聽起來像是在實現某種形式任務的過程中一個(錯誤的)步驟。 –

+0

我想用兩個IP地址訪問我的數據庫服務器。當一個人失望時,我可以將其切換到其他... –

+1

您的數據庫是否被鏡像? –

回答

3

如果您的兩個數據庫配置了SQL Server Mirroring,那麼您實際上可以在連接字符串中指定一個備份服務器。你可以用Failover Partner做到這一點:

Data Source=Primary_Server;Failover Partner=Secondary_Server; ... other stuff... 

然後你只需要編輯與這兩個服務器的地址和框架現有的配置字符串會自動連接到備用服務器如果主不可用。

雖然(從我讀過的,我沒有使用它自己),但是在使用Failover Partner時有一些特質,所以我建議在實現它之前深入閱讀它。

如果您的數據庫沒有鏡像,您將不得不自己實現故障轉移,可能是通過抽象獲取數據庫連接。

在您的配置(主要和次要)中指定兩個不同的連接字符串,然後實現某種連接字符串服務,根據您的條件返回適當的連接字符串(即測試主要,如果失敗,返回次要,否則返回小學,或任何你想要的)。

請記住,有可能您的服務器在測試字符串之後可能會脫機,但在使用之前,但這是一個相當大的優勢。如果您需要在這種情況下維護功能,請牢記它。

+0

謝謝託德,這對我很有幫助... –

6

這是不可能的,因爲ConnectionStrings是在KeyValuePair中維護的,並且名稱是關鍵。

請讓我們知道爲什麼你需要這樣的場景,那麼我們可能會幫助你。

+0

由於某些原因,如網絡問題,服務器無法訪問,並且可以在另一個IP地址上訪問。它有可能會自動切換到其他服務器的IP地址。 –

+1

您必須手動編寫代碼才能從其他連接字符串獲取代碼。如果它適用於您,將它們命名爲「MyConnStr」和「MyConnStr_BackUp」。當MyConnstr不起作用時,從備份讀取連接字符串。 –

1

不,你不能有兩個具有相同名稱的連接字符串。 所以,如果你是什麼導致這樣的代碼:在KeyValuePair對象

var connectionString=ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 

連接字符串存儲。

應用程序可以任選在 應用程序配置文件提供所需 關鍵字/值連接字符串值指定的連接名稱。在這種情況下,您不能直接在連接字符串中提供它們。名稱關鍵字不是在配置文件中允許的 。

如果Name關鍵字未包含在連接字符串中,則需要使用Provider關鍵字的非空值 。

此關鍵字與所有其他連接 字符串關鍵字互斥。

相關問題