本文所述端口修改,本質是一種替代方案,因爲,我還無法找到一個直接修改默認端口1433的方案(在我所測試修改方案中,只要修改掉1433默認端口,FCI 數據庫實例會掛機,無法啓動)。所謂的替代方案是保留1433默認端口的偵聽,新加入一個偵聽端口。
本文的測試環境是Windows 2012 standard系統,域環境,SQL Server 2016企業版。
備份註冊表
爲防止修改操作失誤,導致 FCI 崩潰,可以先備份數據庫的註冊表,以便出現問題的時候,可以還原恢復。備份註冊表操作如下:
Ctrl+R→輸入regedit,打開註冊編輯器,找到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server,右擊Microsoft SQL Server,點擊導出:
命名導出註冊表文件,並選擇路徑,點擊保存即可備份完成,如下圖。
還原註冊表
同樣在註冊編輯器中,點擊文件,點擊導入,找到上面備份註冊文件
點擊打開,即可恢復備份註冊表了。
關閉實例檢查點
獲取註冊表中實例檢查點的名稱
get-clustercheckpoint -registrycheckpoint
在 FCI 的一個節點上移除SQLServer 註冊表上的檢查點,如下:
PS C:\Users\administrator.ALWAYSON0> get-clustercheckpoint -registrycheckpoint | remove-clustercheckpoint -registrycheck
point
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\Cluster”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): n
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\Replication”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): n
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\Providers”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): n
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\SQLServerSCP”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): n
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\CPE”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): n
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\SQLServerAgent”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): n
Remove-ClusterCheckpoint
你確定要刪除資源“SQL Network Name (alwaysOnSQL)”上的註冊表檢查點“SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\MSSQLServer”嗎?
[Y] 是(Y) [N] 否(N) [S] 掛起(S) [?] 幫助 (默認值爲“Y”): y
注意:只需要移除MSSQLServer 的檢查點,即最後一個選擇“Y”
配置管理器中增加偵聽端口
在兩個節點上分別使用 SQL Server 配置管理器,增加端口:
注意:
-
端口用英文逗號分隔開來
-
驗證端口是否被佔用(如果被佔用,SQL Server實例將會處於掛起狀態),兩個節點都需要檢查,驗證方法如下:
netstat -aon | findstr "3433"
說明端口被任務3312佔用,要查看是哪個應用佔用了端口,可以使用如下腳本:
tasklist | findstr "3312"
當然也可以從任務管理器中查看:
在註冊表中添加檢查點
add-clustercheckpoint -resourcename "SQL Network Name (alwaysOnSQL)" -registrycheckpoint "SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer"
切換節點,檢查端口添加是否後,FCI能否正常轉移。
檢驗使用新端口連接數據庫是否成功。
網絡策略中禁用1433端口,只允許使用新端口連接數據庫。
如果喜歡,可以搜索關注公衆號MSSQLSERVER,及時接收更多精彩博文。