SQL Server2014 DB部署AlwaysOn後如何做資料檔案的路徑遷移

vic0228發表於2018-06-25

    資料庫預設安裝在了系統盤,隨著資料的日益增大需要一塊大容量並且可動態擴容的磁碟來存放資料,需要把資料檔案從SQL的預設路徑下遷移出來,但資料庫已加入了可用性組,沒法按照傳統的方式了,具體步驟如下。

   1、先關閉資料庫的只讀,下面的group後面的就是你的可用性組的名稱,sql-187是資料庫伺服器的名字,下面這行你有多少個副本就執行多少次,禁用全部的只讀

ALTER AVAILABILITY GROUP [ADFSAlwaysOn] MODIFY REPLICA ON N'sql-187' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))

   當然你也可以通過可用性組的屬性進行更改


  2、修改資料庫例項的檔案路徑,adfs有兩個庫(CRM庫也是一樣),預設的是C盤安裝目錄下,我把他們改到了D盤下,這裡也是有多少個副本(當然每次要更換資料庫連結)就執行多少次

ALTER DATABASE AdfsArtifactStore MODIFY FILE (NAME='AdfsArtifactStore',FILENAME='D:\MSSQLDATA\DATA\AdfsArtifactStore.mdf') 

ALTER DATABASE AdfsArtifactStore MODIFY FILE (NAME='AdfsArtifactStore_log',FILENAME='D:\MSSQLDATA\DATA\AdfsArtifactStore_log.ldf') 

ALTER DATABASE AdfsConfigurationV3 MODIFY FILE (NAME='AdfsConfigurationV3',FILENAME='D:\MSSQLDATA\DATA\AdfsConfigurationV3.mdf') 

ALTER DATABASE AdfsConfigurationV3 MODIFY FILE (NAME='AdfsConfigurationV3_log',FILENAME='D:\MSSQLDATA\DATA\AdfsConfigurationV3_log.ldf') 

  3、下面開始著手移動檔案,如我下圖中所示,sql-187為主副本,sql-188為輔助副本(術語簡介)


      首先操作所有的輔助副本,例如我上述中的sql-188,先啟用cmdshell指令,通過這個指令把預設安裝目錄下的資料檔案移動到我們對應的路徑下

--Enable XP_CMDSHELL
sp_configure 'show advanced options',1
reconfigure

sp_configure 'xp_cmdshell',1
reconfigure

--MOVE FILES

xp_cmdshell'move "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\AdfsArtifactStore*.*" D:\MSSQLDATA\DATA\'


xp_cmdshell'move "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\AdfsConfigurationV3*.*" D:\MSSQLDATA\DATA\'

--Disable XP_CMDSHELL
sp_configure 'show advanced options',0
reconfigure
sp_configure 'xp_cmdshell',0
reconfigure

  更改完後初始化下資料庫例項

ALTER DATABASE AdfsArtifactStore SET ONLINE
ALTER DATABASE AdfsConfigurationV3 SET ONLINE

  4、有多少個輔助副本就按第三步中的操作操作多少次,操作完後將主副本轉移到sql-188上,這樣原來的主副本sql-187就比那成了輔助副本,然後對sql-187執行第三步中的操作

ALTER AVAILABILITY GROUP [ADFSAlwaysOn] FAILOVER;

  5、當全部設定完後,將所有輔助副本設定只讀

ALTER AVAILABILITY GROUP [ADFSAlwaysOn] MODIFY REPLICA ON N'sql-187' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL))

ALTER AVAILABILITY GROUP [ADFSAlwaysOn] MODIFY REPLICA ON N'sql-188' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL))


參考部落格:


相關文章