2016-12-02 42 views
0

我有大約300個位於不同分區的表,現在這些表沒有用於如此龐大的數據。現在,我得到空間問題時間,一些有價值的空間被爲這些表創建的150個文件組佔據,所以我想將表的文件組更改爲任何一個而不是150 FG,並通過刪除這些文件組來釋放空間。這些表格現在不包含任何數據,但定義了許多約束和索引。改變表的文件組的有效方法

能否請您提出建議,如何有效完成?

+0

的可能的複製[如何將表移動到另一個文件組?](http://stackoverflow.com/questions/2438019/how-i-can-move-table-to-another-filegroup) – under

+0

讓我檢查鏈接。 – Susang

回答

0

我發現改變FG組現有表的方式幾個信息:

1-定義使用NEW_FG每個對象聚集索引(文中提到的@under答案)

CREATE UNIQUE CLUSTERED INDEX <INDEX_NAME> ON dbo.<TABLE_NAME>(<COLUMN_NAME>) ON [FG_NAME] 

2 - 如果我們不能定義聚集索引,然後複製表和數據結構到新表,刪除舊,並重新命名新老如下

更改數據庫的默認FG到NEW_FG使每個表都可以使用INTO創建新FG默認

ALTER DATABASE <DATABASE> MODIFY FILEGROUP [FG_NAME] DEFAULT 

IF OBJECT_ID('table1') IS NOT NULL 
BEGIN 
    SELECT * INTO table1_bkp FROM table1 
    DROP TABLE table1 
    EXEC sp_rename table1_bkp, table1 
END 

所有操作數據庫的默認FG後的前

ALTER DATABASE <DATABASE> MODIFY FILEGROUP [PRIMARY] DEFAULT 

3- DROP TABLE如果可行的話,然後再次使用NEW_FG

創建
DROP TABLE table1 
CREATE TABLE [table1] ( 
    id int, 
    name nvarchar(50), 
    -------- 
) ON [NEW_FG] 
1

要移動表格,請刪除然後重新創建指定新FG的聚簇索引。如果它沒有聚集索引,則創建一個然後刪除它。

最好不要將用戶數據保留在主FG上。保留系統對象,並將數據放在其他文件組上。但很多人都忽略了這個...

+0

對我其實不想使用初級FG,但想使用一個FG而不是150 FG。對不起,我的錯誤讓我在問題中加上這個。所以我們沒有其他辦法來解決這種情況? – Susang

+0

要移動一個表,只需刪除並重新創建其聚簇索引。不是問題。關於PRIMARY文件組的評論只是FYI ... – under