我有一个巨大的SQL Server档案数据库(MISArchival
(:250GB,它位于仅剩30GB空间的E:
驱动器上。
我必须从生产 MIS 数据库清除/移出更多数据到此存档数据库 (MISArchival
(。
现在我有另一个驱动器,它是I:
驱动器,大约有200GB的空间。
我的问题是:如何在驱动器上制作/添加另一个.mdf
文件I:
并确保下次将数据插入此存档数据库时,它开始写入在I:
驱动器上创建的这个新.mdf
文件,而不是E:
驱动器?
当前设置:
E:DatabaseDataBSP_MIS_Archived.mdf
E:DatabaseLogBSP_MIS_Archived.ldf
由于空间问题,我需要在不同位置的另一个.mdf
文件:
I:DatabaseDataBSP_MIS_Archived_2.mdf
谢谢
抱歉,您无法通过某些语句在文件之间移动对象。您将需要自行移动数据。
首先创建一个filegroup
并在新驱动器上向其添加新文件。
使用与原始表相同的脚本创建新表,但使用新文件组使用insert/select
comando 或 BCP/Bulk
移动数据,并将表重命名sp_rename
最后,您需要在原始文件上进行收缩。
如果您还有其他疑问,请添加评论。
可以从 SSMS 中的数据库属性或代码添加数据文件:
use master;
go
ALTER DATABASE MISArchival
ADD FILE
(
NAME = MISArchival2,
FILENAME = 'I:DatabaseDataBSP_MIS_Archived_2.ndf'
);
go
需要注意的一些事项:
- 通常,辅助数据文件具有 NDF 扩展名,但这不是必需的
- 如果不创建单独的文件组,则额外的数据文件将放入 PRIMARY 中
- 您需要考虑数据库的适当初始大小、最大大小和增长要求
参考: MSSQL 文档