日期:2014-05-16  浏览次数:20479 次

急!如何同文件组中多文件之间数据移动
用的sql 2012, 今天新建了文件组FG4, 在S 盘新建了 fg4.ndf ,本来打算分配给FG4, 但是误操作没改成FG4, 结果fg4.ndf 被默认分配给了primary 文件组。 然后立刻就有了很多数据。原来primary 文件组只有E盘一个文件, 现在有2个了!现在已经限制s:\fg4.ndf 为不自动增长!
 如何把primary 文件组 s:\fg4.ndf 里面的数据挪回到e盘?然后删除此s:\fg4.ndf ?
谢谢
------解决方案--------------------
例子:
USE [tagl]
GO

/****** Object:  Index [PK_Table_1]    Script Date: 03/10/2014 12:53:50 ******/
IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Table_1]') AND name = N'PK_Table_1')
ALTER TABLE [dbo].[Table_1] DROP CONSTRAINT [PK_Table_1]
GO

USE [tagl]
GO

/****** Object:  Index [PK_Table_1]    Script Date: 03/10/2014 12:53:51 ******/
ALTER TABLE [dbo].[Table_1] ADD  CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON F4
GO


------解决方案--------------------
再建新文件组(及文件,分布于你想在的盘上),把表都移到新文件组喽
------解决方案--------------------
引用:
请注意 : fg4.ndf 现在就是primary 文件组,所以您的方法好像不行


呵呵,这个确实不行。

试试这个把:
DBCC SHRINKFILE(ng4的逻辑文件名称,EMPTYFILE) 
go

ALTER DATABASE 数据库名称  
REMOVE FILE ng4的逻辑文件名称 

------解决方案--------------------
用SSMS可以在收缩文件过程中选择把文件组清空到别的文件组中
------解决方案--------------------
引用:
Quote: 引用:

请注意 : fg4.ndf 现在就是primary 文件组,所以您的方法好像不行


呵呵,这个确实不行。

试试这个把:
DBCC SHRINKFILE(ng4的逻辑文件名称,EMPTYFILE) 
go

ALTER DATABASE 数据库名称  
REMOVE FILE ng4的逻辑文件名称 

this can't work, becuase only can move file ng4's data to same filegroup,can't move to filegroup FG4. 
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

请注意 : fg4.ndf 现在就是primary 文件组,所以您的方法好像不行


呵呵,这个确实不行。

试试这个把:
DBCC SHRINKFILE(ng4的逻辑文件名称,EMPTYFILE) 
go

ALTER DATABASE 数据库名称  
REMOVE FILE ng4的逻辑文件名称 

this can't work, becuase only can move file ng4's data to same filegroup,can't move to filegroup FG4. 


嗯 对的,只能把数据移到primary这个组的主数据文件上,不过这个就可以了,然后删除fg4这个文件,再重新添加一个fg4文件到fg4文件组就可以了