2014-01-07 229 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关键字的非空值 。

此关键字与所有其他连接 字符串关键字互斥。

相关问题