2014-01-07 4 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-адресами ADDresses. Когда один снижается, я могу переключить его на другие ... –

+1

Отражены ли ваши базы данных? –

ответ

3

Если ваши две базы данных сконфигурированы с использованием SQL Server Mirroring, вы можете фактически указать сервер резервного копирования внутри строки подключения. Вы можете сделать это с помощью Failover Partner:

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

Тогда вам просто нужно отредактировать существующую строку конфигурации с обоих адресов сервера и базы будут автоматически подключаться к вторичному серверу, если первичный недоступен.

Есть некоторые особенности вокруг использования Failover Partner, хотя (из того, что я читал, я не использовал его сам), поэтому я бы рекомендовал внимательно прочитать его до его внедрения.

Если ваши базы данных не отражены, вам придется самостоятельно реализовать переход на другой ресурс, возможно, путем абстрагирования приобретения соединения с базой данных.

Укажите две различные строки подключения в своей конфигурации (первичные и вторичные), а затем выполните некоторую услугу Connection String, которая возвращает соответствующую строку соединения на основе ваших критериев (т. Е. Тест primary, если не удается, возвращает вторичный, else return первичный или любой другой, что вы хотите).

Помните, что существует вероятность того, что ваш сервер может отключиться от сети ПОСЛЕ тестирования строки, но прежде чем использовать ее, но это довольно большой случай с краем. Просто имейте это в виду, если вам нужно поддерживать функциональность в этой ситуации.

+0

спасибо Тодду, мне это полезно ... –

6

Это невозможно, потому что ConnectionStrings поддерживаются в KeyValuePair и с именем, являющимся ключом.

Пожалуйста, сообщите почему Вы бы хотели, чтобы у вас был такой сценарий, поэтому мы можем помочь вам.

+0

По какой-то причине, такой как сетевая проблема, сервер недоступен и доступен на других IPaddresses. Возможно ли, что он автоматически переключится на другой IP-адрес сервера. –

+1

Вам нужно написать код вручную, чтобы перехватить другую строку соединения. Если это работает, вы называете их «MyConnStr» и «MyConnStr_BackUp». И прочитайте строку соединения из резервной копии, когда MyConnstr не работает. –

1

Нет, у вас не может быть двух строк соединения с тем же именем. Так что, если вы можете что привести этот код:

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

строка подключения магазин в объекте KeyValuePair.

Приложение может дополнительно указать имя соединения в файле конфигурации приложения , который обеспечивает требуемые значения строки соединения ключевое слово/значение. В этом случае вы не можете отправить в строку подключения. Ключевое слово Name не равно , разрешенному в файле конфигурации.

Если ключевое слово Name не включено в строку подключения, необходимо указать непустых значений для ключевого слова Provider.

Это ключевое слово является взаимоисключающим со всем другим соединением строковыми ключевыми словами.

Смежные вопросы