SQLServer 2012異常問題(一)--故障轉移群集+鏡像環境導致作業執行失敗


先感謝一下我的同事們最先發現此問題,鳴謝:向飛、志剛、海雲

最近在生產環境發現一個詭異的問題;

環境:WINDOWS 2012+SQLSERVER 2012 SP1,雙節點的故障轉移群集+單節點的SQLSERVER 2012 SP1實例(鏡像)

生產數據庫是從SQLSERVER 2008R2遷移到2012的,遷移過程很順利,按照一般經驗,可能導致數據庫所有者丟失,因此在遷移后手動修改數據庫所有者為sa,與此同時還有個job在做這個庫的歸檔(定期清理歷史數據到本地的歷史庫中,delete、insert操作);

遷移后嘗試運行job均可正常執行;第二天以鏡像方式做災備,搭建完鏡像環境后,歸檔的job報錯:無法登錄到服務器“(local)”。

后測試嘗試重建作業也無效,再創建一個新作業,只在這個做了鏡像的庫上執行“select 1”,同樣報錯(按理說select 1是不會記錄日志的,因此也就不會影響到鏡像)

最后通過查詢代理錯誤日志,發現如下錯誤:

確實,MultiSubnetFailover參數必須要開啟AlwaysOn屬性后才能使用。但為何在只建立鏡像的環境下,SQL Agent仍會通過這個連接選項連接到鏡像實例?

 

此外,我又做了兩個測試:

測試A:在開啟過AlwaysOn選項的單實例(非群集環境)上,先關閉AlwaysOn選項,刪除並重建端點,搭建鏡像環境;

測試B:在從未開啟過AlwaysOn選項的單實例(非群集環境)上(新裝的虛機),搭建鏡像環境;

上述兩次測試,JOB均可順利執行,並未出現此前在群集環境下的問題;

由此,基本可以排除此問題受AlwaysOn選項的影響的可能,反而是對群集環境才有此類的現象;

 

目前的群集環境不便開啟AlwaysOn選項,因此無法做進一步測試來驗證上面的觀點,有興趣的童鞋可以繼續測試一下;

 

PS:經過陳桑的提點,這個問題可以曲線解決;

創建job步驟的時候,連接數據庫選為非鏡像庫(如master),同時修改要執行的SQL,將對象名改為database.schema.object的格式即可;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM