2

我正在使用实体框架开发应用程序。在此应用程序中,目标数据库是具有两个成员的 SQL 2012 高可用性集群服务器。一个配置为主,另一个配置为辅助。

尝试使用 SQL Management Studio 连接到集群很好。我可以做查询和一切。问题是当我尝试将它与我的应用程序连接时。它会抛出异常消息:

The target database ('UserDatabase') is in an availability group and is currently accessible for connections when the application intent is set to read only. For more information about application intent, see SQL Server Books Online.

检查更多,当实体框架试图打开与数据库的连接时抛出异常。

这是我正在使用的连接字符串:

data source=SQLCL01;initial catalog=UserDatabase;user id=test-user;password=##pass##;MultipleActiveResultSets=True

因为我知道我可以使用 SQL Management Studio 完美地连接相同的凭据,所以我想知道问题是否与我的连接字符串有关。有没有人有类似的经历?

更新:SQLCL01 是一个监听器。数据库实例名称为 SQLDB01 & SQLDB02

4

2 回答 2

1

我相信您尝试连接时的 SQLCL01 正在作为辅助角色运行。为了连接到辅助副本,您需要将 AG 配置为允许可读辅助副本连接,并且您的连接字符串必须通过添加明确声明连接具有只读意图:ApplicationIntent=ReadOnly

或者,您可以在“数据源”中使用侦听器名称。这是一个始终指向当前主节点的网络名称。这需要在 AG 中设置。有关详细信息,请查看:http: //msdn.microsoft.com/en-us/library/hh213417.aspx

于 2014-10-01T21:08:20.877 回答
0

尝试使用:

<b>server=tcp:</b>SQLCL01;initial catalog=UserDatabase;user id=test-user;password=##pass##;MultipleActiveResultSets=True
于 2015-06-18T13:32:39.343 回答