先前案子多把SQL Server 2012 新功能AlwaysOn作為備援用途,這次的案子則進一步希望在SQL Server 2014完成讀寫分流,
設定好ReadOnly Routing和Listener,也請SP幫忙加AD(VCO)及DNS,使用SSMS連入時卻一直連到主要複本,
明明設好了ApplicationIntent=ReadOnly..
1.目前主要複本在DB1,次要複本在DB2
2.SSMS(SQL Server Management Studio)連接監聽器(Listener)IP:192.168.120.50
3.設定SSMS其他連接參數(ApplicationIntent=ReadOnly)
4.確認連接到伺服器: 卻還是連到DB1?
百思不得其解,於是試著像connectingstrings加上資料庫名稱
5.設定其他連接參數,加上資料庫名稱(Initial catalog=TSQL2014;ApplicationIntent=ReadOnly)
6.確認連接的伺服器為DB2: 噹!噹!終於連上了!神奇!
7.ok!正常運作了!接下來在次要複本資料庫DB2執行下面的T-SQL切換,測試是否唯讀也從DB2切換過來DB1。
USE [master]
ALTER AVAILABILITY GROUP [AG] FAILOVER;
ALTER AVAILABILITY GROUP [AG] FAILOVER;
8.主要複本切到DB2,次要複本在DB1
9.重新連接相同監視程式IP,相同連接字串,確認連接的伺服器為DB1:正確!
最近和資料庫名稱很有緣,這次ReadOnly Rounting要資料庫名稱,上次資料表值參數不可以使用資料庫名稱。
問題暫時排除了!筆記(低頭寫)
TODO:把資料存取底層改成讀寫分流
參考: