【问题标题】:SQL Server 2008 database mirroringSQL Server 2008 数据库镜像
【发布时间】:2013-06-26 07:32:15
【问题描述】:

我的数据库连接有点问题。有2个数据库服务器:

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 服务器上尝试该程序时,故障转移不起作用。

有人知道原因吗?

=> 我忘了在问题中说明。还有一个见证服务器。

【问题讨论】:

  • 另一件我不明白的事是,当我无法访问主服务器时,故障转移工作。

标签: sql sql-server sql-server-2008 failover database-mirroring


【解决方案1】:

应用程序必须从 SQL 服务器获取故障转移服务器名称(甚至可能不是 FQDN 名称),而不是 web.config 中的连接字符串。

尝试运行ipconfig /flushdns,然后故障转移SQL 数据库,在遇到第一个SQL 异常错误后,运行ipconfig /displaydns 以查看它无法解析的名称。我敢打赌,它看起来不像您在连接字符串中为故障转移伙伴设置的数据库别名...

我不得不处理同样的事情 - 微软的实现有点复杂,因为他们试图涵盖所有可能的场景。

【讨论】:

    【解决方案2】:

    在您的主体数据库上运行它

    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 中运行时则不能。

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多