如何在其他位置添加另一个.mdf文件并将数据写入其中 - SQL Server

时间:2018-02-28 00:54:26

标签: sql sql-server tsql sql-server-2012 ssms

我有一个庞大的SQL Server档案数据库(MISArchival):250GB,它位于E:\驱动器上,只剩下30GB的空间。

我必须从生产MIS数据库中清除/移出更多数据到此存档数据库(MISArchival)。

现在我有另一个驱动器I:\驱动器,并且有大约200GB的空间。

我的问题是:如何在.mdf驱动器上创建/添加另一个I:\文件,并确保下次将数据插入此存档数据库时,它会开始写入此新{{1}在.mdf驱动器上创建的文件,而不是I:\驱动器上创建的文件?

当前设置:

E:\

由于空间问题,我在另一个位置需要另一个E:\Database\Data\BSP_MIS_Archived.mdf E:\Database\Log\BSP_MIS_Archived.ldf 文件:

.mdf

谢谢

2 个答案:

答案 0 :(得分:0)

抱歉,您无法通过某些声明在文件之间移动objets。您需要自己移动数据。

所有这些都创建了一个filegroup并在新驱动器上添加了一个新文件。

使用与原始脚本相同的脚本创建新表,但使用新文件组使用insert/select comando或BCP/Bulk移动数据并重命名表sp_rename

最后,您需要在原始文件中进行缩小。

如果您有更多疑问,请添加评论。

答案 1 :(得分:0)

您可以从SSMS中的数据库属性或代码中添加数据文件:

use master;
go

ALTER DATABASE MISArchival
ADD FILE 
(
    NAME = MISArchival2,
    FILENAME = 'I:\Database\Data\BSP_MIS_Archived_2.ndf'
);
go

有些注意事项:

  • 通常,辅助数据文件具有NDF扩展名,但这不是必需的
  • 如果您不创建单独的文件组,则额外的数据文件将被放入PRIMARY
  • 您需要考虑数据库的适当初始大小,最大大小和增长要求

参考:MSSQL Documentation