怎联合数据库文件

以一个数目库EmployeeManagement中发出一个重点数据库文件EmployeeManagement.mdf和片独下数据库文件rt.ndf、YU.ndf,还有一个作业日志文件EmployeeManagement_log.ldf。

如图1:

SQL Server 1

今昔想将 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 文件称

 

下我们举行一个测试:

 

Use EmployeeManagement
Go
Set Nocount On
Declare @DBFile1 nvarchar(512),
        @DBFile2 nvarchar(512),
        @Sql nvarchar(4000)

Set @DBFile1=’RT’
Set @DBFile2=’YU’

If Not Exists(Select 1 From sys.sysfiles Where name=@DBFile1)
Begin
    Set @Sql=@DBFile1+ N’ 数据库文件未存或者已经抹!’
    Raiserror 50001 @sql
    Goto ExitFlag
End
If Not Exists(Select 1 From sys.sysfiles Where name=@DBFile2)
Begin
    Set @Sql=@DBFile2+ N’ 数据库文件不存在或者早已删除!’
    Raiserror 50001 @sql
    Goto ExitFlag
End

If object_id(‘tempdb..#’) Is Not Null
    Drop Table #

Create Table #(Rows int)

Set @sql=Null
Select @sql=Isnull(@sql+Char(13)+Char(10),”)+’Insert Into # Select Count(*) From ‘+Quotename(name) 
    From sys.objects 
    Where type=’U’
If @sql>” Exec(@sql)

Select Sum(Rows) As [联合数据库文件前之持有表记录数] From #

Dbcc Shrinkfile(@DBFile1,Emptyfile) With No_Infomsgs
Exec(N’Alter Database EmployeeManagement Remove File ‘+@DBFile1)

Dbcc Shrinkfile(@DBFile2,Emptyfile) With No_Infomsgs
Exec(N’Alter Database EmployeeManagement Remove File ‘+@DBFile2)

Truncate Table #
Set @sql=Null
Select @sql=Isnull(@sql+Char(13)+Char(10),”)+’Insert Into # Select Count(*) From ‘+Quotename(name) 
    From sys.objects 
    Where type=’U’
If @sql>” Exec(@sql)

Select Sum(Rows) As [联数据库文件后底有着表记录数] From #

ExitFlag:

 

 执行后使图:

SQL Server 2

 

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

统计表记录数,只是简单的自我批评方式;还足以经过备份还原与它们同的其余一个数据库作比,看数据是否一律。

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

 

 

SQL Server 3
 

相关文章