我的数据库连接有一点小问题。有两个数据库服务器:
DBSA, DBSB
DBSA (primary server)
DBSB (mirrored server)我使用以下连接字符串进行连接:
Data Source=DBSA;Failover Partner=DBSB;Persist Security Info=True;Initial Catalog=database;User ID=user;Password=password当我在我的PC上运行我的程序时,它可以工作,但当我在DMZ中的web服务器上尝试该程序时,故障转移不起作用。
有人知道这是什么原因吗?
=>我在问题中忘了说。还有一个见证服务器。
发布于 2013-09-25 03:44:30
应用程序必须从SQL server获取故障转移服务器名称(甚至可能不是FQDN名称),而不是web.config中的连接字符串。
尝试运行ipconfig /flushdns,然后对SQL数据库进行故障转移,并在得到第一个SQL异常错误后,运行ipconfig /displaydns查看它无法解析的名称。我敢打赌,它看起来一点也不像您在故障转移伙伴的连接字符串中设置的DB别名……
我不得不处理同样的事情-微软的实现有点令人费解,因为他们试图涵盖所有可能的情况。
发布于 2014-01-18 05:44:32
在您的主体数据库上运行此命令
SELECT DB_NAME(database_id) AS 'DatabaseName'
, mirroring_role_desc
, mirroring_safety_level_desc
, mirroring_state_desc
, mirroring_partner_instance
FROM
sys.database_mirroring WHERE mirroring_guid IS NOT NULL; mirroring_partner_instance中返回的值是您的连接将用于故障转移的服务器名称,而不是您在配置中指定的名称。我想您的PC可以使用此名称看到此服务器,而在DMZ中运行时则无法看到此服务器。
https://stackoverflow.com/questions/17314090
复制相似问题