2014-09-10 24 views
2

我正確地故障轉移到鏡像數據庫時遇到問題。當我連接到主體數據庫(dbx)(鏡像已啓用並設置)並對主體數據庫進行故障切換(關閉SQL Server以模擬崩潰)時,我無法再發送查詢而沒有發生故障。這是預期的,因爲之前的連接現在丟失了。修改sys.database_mirroring中的mirroring_partner_instance名稱

我想簡單地關閉我的連接和句柄,並使用相同的連接字符串重新建立一個新連接,並重新連接到鏡像數據庫(dby,它現在是主體數據庫)。

我的連接字符串如下:

驅動程序= {SQL本機客戶端};服務器= DBX; Failover_Partner = DBY;數據庫= DB; UID = UID; PWD = PWD;網絡= DBMSSOCN;

通過研究,我瞭解到連接中的Failover_Partner參數幾乎毫無價值。它僅在主服務器關閉並且第一次建立新連接時使用。出於某種原因,當與主體建立連接並且使用sys.database_mirroring表中找到的mirroring_partner_instance代替時,Failover_Partner會在內部被覆蓋。因此,當我將Failover_Partner指定爲dby時,在建立連接後,我查詢它認爲故障切換夥伴的內容,並返回故障切換夥伴的INSTANCE名稱而不是DNS名稱(dby)。

這是問題所在,我無法使用INSTANCE名稱作爲故障轉移夥伴。我需要使用DNS名稱作爲故障轉移合作伙伴。

所以我的問題(S)是/是這樣的:

  • 是否有修改sys.database_mirroring進入並改變mirroring_partner_instance的方法嗎?
  • 該字段從哪裏獲得它的價值?
  • 是否有任何其他方式強制SQL Server使用DNS名稱而不是實例名稱?

回答

0

我發現這個問題的答案,以防萬一任何人有相同或相似的問題。我不得不修改SQL中的@@ SERVERNAME屬性。它在內部設置爲計算機WIN -...實例名稱,我能放棄它,並用下面的命令添加我想要的服務器名稱:

獲取當前服務器名稱(WIN_NAME)

SELECT @@SERVERNAME 

降WIN-NAME

SP_DropServer 'WIN_NAME' 
GO 
SP_AddServer 'SERVER_NAME',local 
GO 

重新啓動SQL Server看到更改生效。