数据库默认安装在了系统盘,随着数据的日益增大需要一块大容量并且可动态扩容的磁盘来存放数据,需要把数据文件从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))
参考博客: