您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页SQLSERVER将一个文件组的数据移动到另一个文件组

SQLSERVER将一个文件组的数据移动到另一个文件组

来源:宝玛科技网


1 --9.收缩一下FG_Test_Id_01文件组文件
2 DBCC SHRINKFILE(FG_TestUnique_Id_01_data,1)

知识点6:DBCC SHRINKFILE(FG_TestUnique_Id_01_data,1)

SHRINKFILE的单位是MB,上面的语句就是收缩到1MB大小,其实这里如果E:\FG_TestUnique_Id_01_data.ndf文件有数据的话

并且需要占用2MB大小的空间,那么您使用DBCC SHRINKFILE(FG_TestUnique_Id_01_data,1)这句话只能收缩到2MB大小

并不会收缩到1MB大小的,因为这些数据需要占用空间,你怎麽收缩都收缩不了的,不信的话您们可以测试一下

DBCC SHRINKFILE (Transact-SQL)

user database的initial size和dbcc shrinkfile


总结

虽然移动数据的动作比较简单,但是知识点挺多的,有些人只知道怎麽做,不知道为什么我觉得这样不好

寻根问底是我的特性o(∩_∩)o 哈哈

注意:移动数据只能一张表一张表的移动,如果表里预先已经有聚集索引,需要先drop掉

移动之前查一下表中的数据在哪个文件组中

1 USE [Northwind]
2 GO
3 EXEC [sys].[sp_help] @objname = N'[dbo].[Categories]' -- nvarchar(776)

如有不对的地方,欢迎大家拍砖o(∩_∩)o

2014-1-19 补充:

有表分区的方法

大概有三种

先创建新的数据文件,文件组,分区方案,分区函数

例如创建三个新的数据文件和文件组,分区方案和分区函数对于这三个新的数据文件和文件组

旧表:无论已经分区或者还没有分区都适用下面三种方法:

方法一:建立中间表(新表),中间表建立在新的分区方案上,然后用insert into 新表 select * from 旧表的方法,插入完毕之后

drop掉旧表

方法二:建立中间表,中间表建立在新的分区方案上,然后用switch to,因为新分区方案有三个分区

那么,switch to只能够将表的全部数据切换到其中一个分区

USE Sales 
GO 
ALTER TABLE 旧表 SWITCH PARTITION 1 TO 新表 PARTITION 1 
GO

或者

USE Sales 
GO 
ALTER TABLE 旧表 SWITCH PARTITION 1 TO 新表 PARTITION 2
GO

或者

USE Sales 
GO 
ALTER TABLE 旧表 SWITCH PARTITION 1 TO 新表 PARTITION 3
GO

上面的三条语句就会把旧表的所有数据移动到新表的某个分区,至于移动到哪个分区由最后那个数字来指定PARTITION 要移动到的分区的数字

完成后drop掉旧表

方法三:drop掉旧表的聚集索引(如果有),然后在旧表上创建一个聚集索引,创建聚集索引的时候指定新的分区方案

这样就会把表数据移动到新分区方案,即新的数据文件里,这个方法跟没有表分区的数据移动是一样的

参考文章:http://blog.csdn.net/smallfools/article/details/4930810

删除文件和删除文件组

删除失效文件组 (SQL Server)

--Transact-SQL
USE master;
GO
ALTER DATABASE AdventureWorks2012
REMOVE FILE test1dat3 ;
ALTER DATABASE AdventureWorks2012
REMOVE FILE test1dat4 ;
GO


--Transact-SQL
USE master;
GO
ALTER DATABASE AdventureWorks2012
REMOVE FILEGROUP Test1FG1 ;
GO

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务