ndf怎么导入mysql_如何合并数据库文件(合并多个ndf) | 学步园

在一个数据库EmployeeManagement中有一个主要数据库文件EmployeeManagement.mdf和两个次要数据库文件rt.ndf、YU.ndf,还有一个事务日志文件EmployeeManagement_log.ldf。

如图1:

4fe2675f79f6c1e38008f70db53a8910.png

现在想把 rt.ndf、YU.ndf里面的数据合并到EmployeeManagement.mdf。

这里使用的是收缩数据库文件的方法达到合并数据库文件的目的。

收缩数据库文件命令:

DBCC SHRINKFILE

(

{ 'file_name' | file_id }

{ [ , EMPTYFILE ]

| [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]

}

)

[ WITH NO_INFOMSGS ]

这里提供一个参数EMPTYFILE 的说明:

EMPTYFILE

将指定文件中的所有数据迁移到同一文件组中的其他文件。SQL Server 2005 Database Engine 不允许将数据放在用于 EMPTYFILE 选项的文件上。该选项允许使用 ALTER DATABASE 删除文件。

意思是说先执行收缩命令:Dbcc Shrinkfile(文件名,Emptyfile)

再执行删除数据库文件命令:Alter Database 数据库名 Remove File 文件名

下面我们做一个测试:

UseEmployeeManagementGoSetNocountOnDeclare@DBFile1nvarchar(512),@DBFile2nvarchar(512),@Sqlnvarchar(4000)Set@DBFile1='RT'Set@DBFile2='YU'IfNotExists(Select1Fromsys.sysfilesWherename=@DBFile1)BeginSet@Sql=@DBFile1+N'数据库文件不存在或已删除!'Raiserror50001@sqlGotoExitFlagEndIfNotExists(Select1Fromsys.sysfilesWherename=@DBFile2)BeginSet@Sql=@DBFile2+N'数据库文件不存在或已删除!'Raiserror50001@sqlGotoExitFlagEndIfobject_id('tempdb..#')IsNotNullDropTable#CreateTable#(Rowsint)Set@sql=NullSelect@sql=Isnull(@sql+Char(13)+Char(10),'')+'Insert Into # Select Count(*) From'+Quotename(name)Fromsys.objectsWheretype='U'If@sql>''Exec(@sql)SelectSum(Rows)As[合并数据库文件前的所有表记录数]From#DbccShrinkfile(@DBFile1,Emptyfile)WithNo_InfomsgsExec(N'Alter Database EmployeeManagement Remove File'+@DBFile1)DbccShrinkfile(@DBFile2,Emptyfile)WithNo_InfomsgsExec(N'Alter Database EmployeeManagement Remove File'+@DBFile2)TruncateTable#Set@sql=NullSelect@sql=Isnull(@sql+Char(13)+Char(10),'')+'Insert Into # Select Count(*) From'+Quotename(name)Fromsys.objectsWheretype='U'If@sql>''Exec(@sql)SelectSum(Rows)As[合并数据库文件后的所有表记录数]From#

ExitFlag:

执行后如图:

78b638fd061dba1c72a581716e7bc5ca.png

执行ok,通过统计数据库中的表总记录数是否一致,来达到检查在数据库文件变动前后表数据是否丢失。

统计表记录数,只是简单的检查方法;还可以通过备份还原与它相同的另一个数据库作比较,看数据是否一致。

测试好后,我们可以看到rt.ndf、YU.ndf文件已经给删除

9dec926d369d6624e25a0304f8698296.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值