2013-06-26 117 views
0

我有一個數據庫連接有點問題。有2個數據庫服務器:SQL Server 2008數據庫鏡像

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 

當我在我的電腦它的工作原理上運行我的程序,但是當我嘗試在Web服務器上的程序DMZ故障轉移不起作用。

有人知道這個的原因嗎?

=>我忘了告訴問題。還有一個見證服務器。

+0

另外一個我不明白的地方是,當我的主服務器不可達時,故障轉移就起作用。 – MjeOsX

回答

1

該應用程序必須從SQL服務器(可能不包括FQDN名稱)獲取故障轉移服務器名稱,而不是web.config中的連接字符串。

嘗試運行ipconfig /flushdns然後故障轉移SQL數據庫,並在獲得第一個SQL異常錯誤後,運行ipconfig /displaydns查看無法解析哪個名稱。我敢打賭,它看起來不像你在連接字符串中爲故障轉移夥伴設置的數據庫別名...

我不得不處理同樣的事情 - 微軟的實現有點複雜,因爲它們是試圖涵蓋每種可能的情況。

1

運行這對你的本金分貝

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返回的值是將您的故障切換連接所使用的服務器的名稱,而不是你在配置中指定。 我想象你的電腦可以看到這個服務器使用這個名字,在DMZ中運行時它不能。