簡體   English   中英

Azure虛擬機中的SQL Server 2012鏡像-第二個故障轉移應用程序失去連接

[英]SQL Server 2012 mirror in azure VM - on second failover app loses connectivity

我們在Azure VM上有一個鏡像的SQL Server 2012數據庫設置-兩台服務器以及一個見證程序,全部使用客戶端證書,並且SQL登錄名具有相同的SID集。

當從不同的VM測試我們的應用程序時,當我們手動對數據庫進行故障轉移時,一切都會按預期工作,需要等待一秒鍾,然后它才能非常快樂地運行。

如果然后再進行一次手動故障轉移,即將主體移回原始服務器,則應用程序將出錯並拋出“未知主機未知”錯誤。 回收應用程序池可以解決此問題,但是當其中一台服務器先更新,隨后又更新另一台服務器時,這顯然在生產中不可行(兩者均在可用性集中)。

主機未知錯誤在某種程度上令人困惑,因為它在初始故障轉移之前與主機進行了愉快的通信,並在應用程序池回收后再次與主機通信。

經過大量的摸索之后,這是現在的連接字符串:

“數據源= server1,1433;故障轉移伙伴= server2,1433;初始目錄=; MultipleActiveResultSets = True;用戶ID = user;密碼=密碼;網絡= dbmssocn;連接超時= 60;異步= true;” 的providerName = “System.Data.SqlClient的”

該應用程序在.net 4.5.2上運行,因此應該使用最新的修補程序,並且在與Bing進行大量谷歌搜索之后,我們沒有任何想法。

我剛剛解決了一個看起來與您的問題非常相似的問題。 每當數據庫從web.config文件中列出的第一個數據庫切換到故障轉移數據庫時,我都會得到主機未知錯誤。 從故障轉移切換到主節點很好。

我遇到的問題是我使用服務器名稱設置了數據庫鏡像,但是我的Web服務器不知道按名稱命名的數據庫服務器。 修復此問題后,便可以使故障轉移在兩種情況下均能順利進行。

我認為這是正在發生的事情:

  • 我使用名稱SQL1SQL2作為主體服務器和鏡像服務器來設置鏡像
  • 我的連接字符串中有其IP地址: 10.1.1.510.1.1.6
  • 該應用程序嘗試到達第一個服務器10.1.1.5並成功,然后被告知鏡像服務器是SQL2
  • SQL1關閉,數據庫成功切換到鏡像服務器。
  • Web應用程序嘗試連接,失敗,並確定應嘗試第二台服務器。
  • 它嘗試連接到未知的SQL2 ,並失敗,並顯示主機未知的消息。

僅當您實際將ip地址放入web.config中並且server1,1433server2,1433實際上掩蓋了您實際使用的ip地址的占位符時,此答案才適用於您的情況。

我還沒有真正解決命名問題。 我只是將兩個數據庫服務器名稱添加到HOSTS文件中,這是無法接受的情況,但確實證明了我對問題所在的看法。

我正在像您一樣研究一種設置,並且在閱讀本文以及Steve Kaye的回答后,我想知道您是否正在運行SQL瀏覽器。 看一下這篇文章,了解SQL瀏覽器是如何發揮作用的:

http://blogs.msdn.com/b/spike/archive/2010/12/15/running-a-database-mirror-setup-with-the-sqlbrowser-service-off-may-produce-unexpected-results。 ASPX

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM