2016-12-02 3 views
0

Ich habe etwa 300 Tabellen, die sich in einer anderen Partition befinden, und diese Tabellen werden jetzt nicht mehr für so riesige Daten verwendet wie sie waren. Jetzt bekomme ich von Zeit zu Zeit Platzprobleme und einiges an wertvollem Speicherplatz wird von den 150 Dateigruppen belegt, die für diese Tabellen erstellt wurden. Daher möchte ich die Dateigruppe der Tabelle statt 150 FG in eine beliebige ändern und den Speicherplatz freigeben, indem ich diese Dateigruppen lösche .Effiziente Möglichkeit, die Dateigruppe der Tabelle zu ändern

FYI: Diese Tabellen enthalten jetzt keine Daten, aber viele Einschränkungen und Indizes definiert.

Können Sie mir bitte vorschlagen, wie es effizient durchgeführt werden kann?

+0

Mögliche Duplikat von [ Wie kann ich die Tabelle in eine andere Dateigruppe verschieben?] (Http://stackoverflow.com/questions/2438019/how-i-can-move-table-to-another-filegroup) – under

+0

lassen Sie mich in den Link einchecken. – Susang

Antwort

0

ich einige weitere Informationen über die Möglichkeiten der Veränderung der FG Gruppe der bestehenden Tabelle gefunden:

1- Clustered-Index in jedem Objekt definieren NEW_FG mit (Erwähnt in @under Antwort)

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

2- Wenn wir nicht gruppierten Indextabelle und Datenstruktur auf neue Tabelle kopieren definieren können, fallen alte und benennen abst wie unten

Änderungen Standard FG Datenbank NEW_FG so dass Jede Tabelle kann mit INTO, unter erstellt werden dass neue FG standardmäßig

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 

Nachdem alle Standard FG Operation Datenbank nach wie vor

ALTER DATABASE <DATABASE> MODIFY FILEGROUP [PRIMARY] DEFAULT 

3- Drop-Tabelle, wenn möglich, es dann wieder NEW_FG mit create

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

Um die Tabelle zu verschieben, legen Sie den Clustered-Index ab und erstellen Sie ihn erneut, wobei Sie den neuen FG angeben. Wenn es keinen gruppierten Index hat, erstellen Sie einen und lassen Sie ihn dann fallen.

Es wird empfohlen, Benutzerdaten nicht auf primären FG zu speichern. Belassen Sie dies für Systemobjekte und legen Sie Ihre Daten in anderen Dateigruppen ab. Aber eine Menge Leute ignorieren diese ...

+0

right Ich möchte eigentlich nicht primäre FG verwenden, sondern einen FG anstelle von 150 FG verwenden. Sorry für meinen Fehler lass mich das in der Frage hinzufügen. Also haben wir keine andere Möglichkeit, diese Situation anzugehen? – Susang

+0

Um eine Tabelle zu verschieben, legen Sie einfach ihren Clustered Index ab und erstellen ihn neu. Kein Problem. Der Kommentar zu PRIMARY Dateigruppe war nur FYI ... – under

Verwandte Themen