这并不像最初看起来那么简单,原因是仅仅将文件添加到 SQL Server 是不够的,因为即使您要添加 4 个新文件,它们都将是空白空间,您会有一个包含 1Tb 数据的文件和 4 个空文件,由于 SQL Server 对文件使用比例填充方法,这些文件最终会被填满,但您的大多数查询仍然会命中单个文件。
我认为您这样做是为了提高性能?如果是这样,您将需要将数据移动到不同的文件中,以便实际拆分数据。您是否可以在线执行此操作取决于您是否正在运行 Enterprise Edition(因为这允许您在线重建索引)。
移动表(或更准确地说是聚集索引,在所有意图和目的上与表几乎相同)的一种简单方法是使用新数据文件添加新文件组,然后重建聚集索引,指定新文件组,您可以使用以下方法执行此操作:
CREATE CLUSTERED INDEX Existing_Index_Name ON schema_name.table_name(column_name)
WITH(DROP_EXISTING=ON,Online=ON) on [new_filegroup_name]
GO
此代码将在新文件组上创建新索引,摆脱旧索引,如果您正在运行企业版,它将在不阻止用户的情况下完成所有操作。
有关在文件组之间移动数据的更多方法,请参见以下链接:
在 SQL Server 数据库文件组之间移动数据
您还应该考虑对表进行分区以帮助提高性能:
分区表和索引
关于您的镜像设置,您应该打破镜像,然后在主服务器上添加所有文件/文件组,然后在文件组之间移动数据,然后在主服务器上备份修改后的数据库,在镜像上恢复(所以所有文件在镜像上设置相同),然后重新设置镜像。