數據庫文件組小記

1) 如何將一個數據表從A 文件組移動到 B文件組中

 聚集索引裏存放的數據和表的數據必須在同一個文件組中,而且它們的順序也是一致的,因爲聚集索引的葉子節點實際上就是存放的表的數據,不象非聚集索引,葉子節點只是存放了一個指向表數據或者聚集索引的指針而已,真正的數據還是存放在表或聚集索引中。這樣我們只要把聚集索引創建在新的文件組上,那麼表的數據也就跟着轉移到這個新的文件組上了。這裏要注意的一點就是聚集索引和主鍵是不是建在相同的字段上的,如果相同,處理主鍵就行了,如果不同,則需處理聚集索引。

--要點:只需將聚集索引建立在需要移動的數據組中,數據頁面也會隨之移動到對應的文件組中

--創建數據表
 CREATE TABLE tb(id INT ,cname NVARCHAR(4000)) ON [FG_A] 
 GO
 --INSERT DATA
 INSERT INTO [dbo].[tb]
 SELECT 1,'aaaaaaa'
 
--創建聚集索引(必須是聚集索引)
CREATE CLUSTERED INDEX PK_ID ON [dbo].[tb]([id]) WITH(ONLINE=ON) ON [FG_B]
GO

--收縮FG_A
DBCC SHRINKFILE(FG_A,1)

2) 修改數據文件名稱

--更改文件組名稱
alter database Test
modify file(name='Test1',newname='test2')

3) 當同一個文件組有兩個或多個文件時,如何刪除某個文件

--若文件組FG_A中有兩個次要文件Test1,Test0.
--現Test1中已有數據,如何刪除Test1文件,同時Test1中的數據不能丟失
--1)將Test1中的數據轉移,系統會自動將數據移動到Test0的文件中
DBCC SHRINKFILE(Test1,EMPTYFILE) 
--2)移除Test1文件
ALTER DATABASE Test REMOVE file Test1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章