ALTER DATABASE-Optionen Datei und Dateigruppe (Transact-SQL)
Ändert die zu der Datenbank in SQL Server gehörenden Dateien und Dateigruppen. Fügt einer Datenbank Dateien und Dateigruppen hinzu oder entfernt sie, ändert die Attribute einer Datenbank oder ihrer Dateien und Dateigruppen. Weitere ALTER DATABASE-Optionen finden Sie unter ALTER DATABASE (Transact-SQL).
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
ALTER DATABASE database_name
{
<add_or_modify_files>
| <add_or_modify_filegroups>
}
[;]
<add_or_modify_files>::=
{
ADD FILE <filespec> [ ,...n ]
[ TO FILEGROUP { filegroup_name } ]
| ADD LOG FILE <filespec> [ ,...n ]
| REMOVE FILE logical_file_name
| MODIFY FILE <filespec>
}
<filespec>::=
(
NAME = logical_file_name
[ , NEWNAME = new_logical_name ]
[ , FILENAME = {'os_file_name' | 'filestream_path' | 'memory_optimized_data_path' } ]
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
[ , OFFLINE ]
)
<add_or_modify_filegroups>::=
{
| ADD FILEGROUP filegroup_name
[ CONTAINS FILESTREAM | CONTAINS MEMORY_OPTIMIZED_DATA ]
| REMOVE FILEGROUP filegroup_name
| MODIFY FILEGROUP filegroup_name
{ <filegroup_updatability_option>
| DEFAULT
| NAME = new_filegroup_name
}
}
<filegroup_updatability_option>::=
{
{ READONLY | READWRITE }
| { READ_ONLY | READ_WRITE }
}
Argumente
<add_or_modify_files>::=
Gibt die Datei an, die hinzugefügt, entfernt oder geändert werden soll.
database_name
Der Name der Datenbank, die geändert werden soll.ADD FILE
Fügt einer Datenbank eine Datei hinzu.- TO FILEGROUP { filegroup_name }
Gibt die Dateigruppe an, der die angegebene Datei hinzugefügt werden soll. Verwenden Sie die sys.filegroups-Katalogsicht, um die aktuellen Dateigruppen und die aktuelle Standarddateigruppe anzuzeigen.
- TO FILEGROUP { filegroup_name }
ADD LOG FILE
Fügt eine Protokolldatei hinzu, die der angegebenen Datenbank hinzufügt werden soll.REMOVE FILE logical_file_name
Entfernt die logische Dateibeschreibung aus einer Instanz von SQL Server und löscht die physische Datei. Die Datei kann nur entfernt werden, wenn sie leer ist.- logical_file_name
Der logische Dateiname, der in SQL Server beim Verweis auf die Datei verwendet wird.
- logical_file_name
MODIFY FILE
Gibt die Datei an, die geändert werden soll. Es kann jeweils nur eine <filespec>-Eigenschaft geändert werden. NAME muss zur Identifikation der Datei, die geändert werden soll, stets in <filespec> angegeben sein. Wenn SIZE angegeben ist, muss die neue Größe die aktuelle Dateigröße übersteigen.Geben Sie in der NAME-Klausel den logischen Namen der Datei an, die umbenannt werden soll, und geben Sie in der NEWNAME-Klausel den neuen logischen Namen für die Datei an, um den logischen Namen einer Daten- oder Protokolldatei zu ändern. Beispiel:
MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )
Geben Sie den aktuellen logischen Dateinamen in der NAME-Klausel an, und geben Sie den neuen Pfad und den Betriebssystem-Dateinamen in der FILENAME-Klausel an, um eine Datendatei oder Protokolldatei an einen neuen Speicherort zu verschieben. Beispiel:
MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )
Wenn Sie einen Volltextkatalog verschieben, geben Sie nur den neuen Pfad in der FILENAME-Klausel an. Geben Sie nicht den Betriebssystem-Dateinamen an.
Weitere Informationen finden Sie unter Verschieben von Datenbankdateien.
Bei einer FILESTREAM-Dateigruppe kann NAME online geändert werden. FILENAME kann online geändert werden; die Änderung wird jedoch erst wirksam, nachdem der Container physisch verschoben und der Server heruntergefahren und dann neu gestartet wurde.
Sie können eine FILESTREAM-Datei auf OFFLINE festlegen. Ist eine FILESTREAM-Datei offline, wird ihre übergeordnete Dateigruppe intern als offline markiert; daher schlägt jeder Zugriff auf FILESTREAM-Daten in der Dateigruppe fehl.
Hinweis
<add_or_modify_files>-Optionen sind in einer enthaltenen Datenbank nicht verfügbar.
<filespec>::=
Steuert die Dateieigenschaften.
NAME logical_file_name
Gibt den logischen Namen für die Datei an.- logical_file_name
Der logische Dateiname, der in einer Instanz von SQL Server beim Verweis auf die Datei verwendet wird.
- logical_file_name
NEWNAME new_logical_file_name
Gibt einen neuen logischen Namen für die Datei an.- new_logical_file_name
Der Name, der den vorhandenen logischen Dateinamen ersetzen soll. Der Name muss in der Datenbank eindeutig sein und den Regeln für Bezeichner entsprechen. Der Name kann eine Zeichen- oder Unicodekonstante, ein regulärer Bezeichner oder ein Begrenzungsbezeichner sein.
- new_logical_file_name
FILENAME { 'os_file_name' | 'filestream_path' | 'memory_optimized_data_path'}
Gibt einen Betriebssystem-Dateinamen (physischer Dateiname) an.' os_file_name '
Bei einer Standarddateigruppe (ROWS) ist dies der Pfad und der Dateiname, die vom Betriebssystem beim Erstellen der Datei verwendet werden. Die Datei muss sich auf dem Server befinden, auf dem SQL Server installiert ist. Der angegebene Pfad muss vorhanden sein, bevor die ALTER DATABASE-Anweisung ausgeführt wird.Die Parameter SIZE, MAXSIZE und FILEGROWTH können nicht festgelegt werden, wenn für die Datei ein UNC-Pfad angegeben ist.
Hinweis
Systemdatenbanken dürfen nicht in Verzeichnissen von UNC-Freigaben enthalten sein.
Datendateien sollten nicht in komprimierten Dateisystemen abgelegt werden, es sei denn, die Dateien sind schreibgeschützte sekundäre Dateien, oder die Datenbank ist schreibgeschützt. Protokolldateien sollten niemals in komprimierten Dateisystemen abgelegt werden.
Wenn sich die Datei auf einer Rawpartition befindet, darf os_file_name nur den Laufwerkbuchstaben einer vorhandenen Rawpartition angeben. Auf jeder Rawpartition kann nur eine Datei abgelegt werden.
' filestream_path '
Für eine FILESTREAM-Dateigruppe verweist FILENAME auf einen Pfad, wo FILESTREAM-Daten gespeichert werden. Der Pfad muss bis zum letzten Ordner vorhanden sein, und der letzte Ordner darf nicht vorhanden sein. Wenn Sie z. B. den Pfad C:\MyFiles\MyFilestreamData angeben, muss C:\MyFiles vor der Ausführung von ALTER DATABASE vorhanden sein, der Ordner MyFilestreamData muss jedoch noch nicht existieren.Die Eigenschaften SIZE und FILEGROWTH gelten nicht für eine FILESTREAM-Dateigruppe.
' memory_optimized_data_path '
Bei einer speicheroptimierten Dateigruppe verweist FILENAME auf einen Pfad, unter dem speicheroptimierte Daten gespeichert werden. Der Pfad muss bis zum letzten Ordner vorhanden sein, und der letzte Ordner darf nicht vorhanden sein. Wenn Sie z. B. den Pfad C:\MyFiles\MyData angeben, muss C:\MyFiles vor der Ausführung von ALTER DATABASE vorhanden sein, der Ordner MyData muss jedoch noch nicht vorhanden sein.Die Dateigruppe und die Datei (<filespec>) müssen in derselben Anweisung erstellt werden.
Die Eigenschaften SIZE, MAXSIZE und FILEGROWTH gelten nicht für eine speicheroptimierte Dateigruppe.
SIZE size
Gibt die Dateigröße an. SIZE gilt nicht für FILESTREAM-Dateigruppen.size
Die Größe der Datei.In Verbindung mit ADD FILE ist size die Anfangsgröße für die Datei. In Verbindung mit MODIFY FILE ist size die neue Größe für die Datei und muss größer als die aktuelle Dateigröße sein.
Wenn size für die primäre Datei nicht angegeben wird, verwendet SQL Server die Größe der primären Datei in der model-Datenbank. Wenn eine sekundäre Datendatei oder Protokolldatei angegeben wird, size jedoch nicht für die Datei angegeben wird, legt Database Engine (Datenbankmodul) die Größe der Datei auf 1 MB fest.
Die Suffixe KB, MB, GB und TB können verwendet werden, um Kilobyte, Megabyte, Gigabyte oder Terabyte als Einheit anzugeben. Die Standardeinheit ist MB. Geben Sie eine ganze Zahl (also ohne Dezimalstellen) an. Um einen Bruchteil eines Megabyte anzugeben, konvertieren Sie den Wert in Kilobyte, indem Sie die Zahl mit 1024 multiplizieren. Geben Sie z. B. 1536 KB statt 1,5 MB (1,5 x 1024 = 1536) an.
MAXSIZE { max_size| UNLIMITED }
Gibt die maximale Größe an, auf die die Datei vergrößert werden kann.max_size
Die maximale Dateigröße. Die Suffixe KB, MB, GB und TB können verwendet werden, um Kilobyte, Megabyte, Gigabyte oder Terabyte als Einheit anzugeben. Die Standardeinheit ist MB. Geben Sie eine ganze Zahl (also ohne Dezimalstellen) an. Wenn max_size nicht angegeben ist, kann die Datei so lange vergrößert werden, bis der Speicherplatz auf dem Datenträger erschöpft ist.UNLIMITED
Gibt an, dass die Datei vergrößert wird, bis der Datenträger voll ist. In SQL Server gilt für eine Protokolldatei, für die keine Größenbeschränkung festgelegt ist, eine Maximalgröße von 2 TB und für eine Datendatei eine Maximalgröße von 16 TB. Wenn diese Option für einen FILESTREAM-Container angegeben wird, gilt keine Maximalgröße. Die Dateigröße erhöht sich so lange, bis der Datenträger voll ist.
FILEGROWTH growth_increment
Gibt das automatische Dateivergrößerungs-Inkrement an. Die FILEGROWTH-Einstellung für eine Datei darf die MAXSIZE-Einstellung nicht überschreiten. FILEGROWTH gilt nicht für FILESTREAM-Dateigruppen.growth_increment
Die Menge an Speicherplatz, die der Datei hinzugefügt wird, wenn neuer Speicherplatz erforderlich wird.Der Wert kann in MB, KB, GB, TB oder Prozent (%) angegeben werden. Bei Zahlen ohne Angabe von MB, KB oder % wird standardmäßig MB verwendet. Wenn der Wert in Prozent angegeben wird, ist die growth_increment-Größe der angegebene Prozentsatz der Dateigröße zum Zeitpunkt der Vergrößerung. Die angegebene Größe wird auf den nächsten durch 64 KB teilbaren Wert gerundet.
Der Wert 0 gibt an, dass die automatische Vergrößerung deaktiviert und kein zusätzlicher Speicherplatz zugelassen ist.
Wurde FILEGROWTH nicht angegeben, ist der Standardwert gleich 1 MB für Datendateien und 10 Prozent für Protokolldateien. Der Minimalwert beträgt 64 KB.
Hinweis
Ab SQL Server 2005 wurde der Standardwert für das Vergrößerungsinkrement für Datendateien von 10 Prozent in 1 MB geändert.Das Standardinkrement für Protokolldateien liegt unverändert bei 10 %.
OFFLINE
Legt die Datei auf offline fest und sperrt den Zugriff auf alle Objekte in der Dateigruppe.Warnung
Diese Option sollte nur verwendet werden, wenn die Datei beschädigt ist und wiederhergestellt werden kann.Eine Datei, für die OFFLINE festgelegt ist, kann nur wieder online geschaltet werden, indem sie aus der Sicherung wiederhergestellt wird.Weitere Informationen zum Wiederherstellen einer einzelnen Datei finden Sie unter RESTORE (Transact-SQL).
Hinweis
<filespec>-Optionen sind in einer enthaltenen Datenbank nicht verfügbar.
<add_or_modify_filegroups>::=
Hinzufügen, Ändern oder Entfernen einer Dateigruppe aus der Datenbank.
ADD FILEGROUP filegroup_name
Fügt der Datenbank eine Dateigruppe hinzu.CONTAINS FILESTREAM
Gibt an, dass die Dateigruppe FILESTREAM-BLOBs (Binary Large Objects) im Dateisystem speichert.CONTAINS MEMORY_OPTIMIZED_DATA
Gilt für: SQL Server 2014 bis SQL Server 2014.
Gibt an, dass die Dateigruppe speicheroptimierte Daten im Dateisystem speichert. Weitere Informationen finden Sie unter In-Memory OLTP (Arbeitsspeicheroptimierung). Nur eine MEMORY_OPTIMIZED_DATA-Dateigruppe ist pro Datenbank zulässig. Zum Erstellen von speicheroptimierten Tabellen kann die Dateigruppe nicht leer sein. Mindestens eine Datei muss angegeben werden. filegroup_name verweist auf einen Pfad. Der Pfad muss bis zum letzten Ordner vorhanden sein, und der letzte Ordner darf nicht vorhanden sein.
Im folgenden Beispiel wird eine Dateigruppe erstellt, die einer Datenbank namens xtp_db hinzugefügt wird. Außerdem wird eine Datei der Dateigruppe hinzugefügt. Die Dateigruppe speichert memory_optimized-Daten.
ALTER DATABASE xtp_db ADD FILEGROUP xtp_fg CONTAINS MEMORY_OPTIMIZED_DATA; GO ALTER DATABASE xtp_db ADD FILE (NAME='xtp_mod', FILENAME='d:\data\xtp_mod') TO FILEGROUP xtp_fg;
REMOVE FILEGROUP filegroup_name
Entfernt eine Dateigruppe aus der Datenbank. Die Dateigruppe kann nur entfernt werden, wenn sie leer ist. Entfernen Sie zuerst alle Dateien aus der Dateigruppe. Weitere Informationen finden Sie unter "REMOVE FILE logical_file_name" weiter oben in diesem Thema.Hinweis
Wenn vom FILESTREAM-Garbage Collector nicht alle Dateien aus einem FILESTREAM-Container entfernt wurden, wird beim Ausführen von ALTER DATABASE REMOVE FILE zum Entfernen eines FILESTREAM-Containers ein Fehler erzeugt.Weitere Informationen finden Sie unter "Entfernen eines FILESTREAM-Containers" im Abschnitt "Hinweise" weiter unten in diesem Thema.
MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME **=**new_filegroup_name }
Ändert die Dateigruppe durch Festlegen des Status auf READ_ONLY oder READ_WRITE, Festlegen der Dateigruppe als Standarddateigruppe für die Datenbank oder Ändern des Dateigruppennamens.<filegroup_updatability_option>
Legt die read-only- oder read/write-Eigenschaft für die Dateigruppe fest.DEFAULT
Ändert die Standarddatenbank-Dateigruppe in filegroup_name. Es können nicht mehrere Dateigruppen gleichzeitig als Standarddateigruppe verwendet werden. Weitere Informationen finden Sie unter Datenbankdateien und Dateigruppen.NAME = new_filegroup_name
Ändert den Namen der Dateigruppe in new_filegroup_name.
<filegroup_updatability_option>::=
Legt die read-only- oder read/write-Eigenschaft für die Dateigruppe fest.
READ_ONLY | READONLY
Gibt an, dass die Dateigruppe schreibgeschützt ist. Updates von Objekten in der Dateigruppe sind nicht zulässig. Die primäre Dateigruppe kann nicht schreibgeschützt werden. Sie müssen über exklusiven Zugriff auf die Datenbank verfügen, um diesen Status zu ändern. Weitere Informationen finden Sie unter der SINGLE_USER-Klausel.Da in einer schreibgeschützten Datenbank keine Datenänderungen vorgenommen werden dürfen, gilt Folgendes:
Die automatische Wiederherstellung wird beim Systemstart ausgelassen.
Das Verkleinern der Datenbank ist nicht möglich.
In schreibgeschützten Datenbanken werden keine Daten gesperrt. Dies kann zu einer schnelleren Ausführung von Abfragen führen.
Hinweis
Das Schlüsselwort READONLY wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt.Vermeiden Sie die Verwendung von READONLY bei neuen Entwicklungen, und planen Sie die Änderung von Anwendungen, in denen READONLY aktuell verwendet wird.Verwenden Sie stattdessen READ_ONLY.
READ_WRITE | READWRITE
Gibt an, dass die Gruppe den Status READ_WRITE hat. Updates sind für die Objekte in der Dateigruppe möglich. Sie müssen über exklusiven Zugriff auf die Datenbank verfügen, um diesen Status zu ändern. Weitere Informationen finden Sie unter der SINGLE_USER-Klausel.Hinweis
Das Schlüsselwort READWRITE wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt.Vermeiden Sie die Verwendung von READWRITE bei neuen Entwicklungen, und planen Sie die Änderung von Anwendungen, in denen READWRITE aktuell verwendet wird.Verwenden Sie stattdessen READ_WRITE.
Der Status dieser Optionen kann mithilfe der Spalte is_read_only in der sys.databases-Katalogsicht oder der Updateability-Eigenschaft der DATABASEPROPERTYEX-Funktion ermittelt werden.
Hinweise
Verwenden Sie DBCC SHRINKDATABASE, um die Größe einer Datenbank zu reduzieren.
Sie können keine Dateien hinzufügen oder entfernen, während eine BACKUP-Anweisung ausgeführt wird.
Für jede Datenbank können maximal 32.767 Dateien und 32.767 Dateigruppen angegeben werden.
In SQL Server 2005 oder einer höheren Version wird der Status einer Datenbankdatei (z. B. online oder offline) unabhängig vom Status der Datenbank verwaltet. Weitere Informationen finden Sie unter Dateistatus. Der Status der Dateien in einer Dateigruppe bestimmt die Verfügbarkeit der gesamten Dateigruppe. Damit eine Dateigruppe verfügbar ist, müssen alle Dateien in der Dateigruppe online sein. Ist eine Dateigruppe offline, verursacht jeder Versuch, über eine SQL-Anweisung auf die Dateigruppe zuzugreifen, einen Fehler. Wenn Sie Abfragepläne für SELECT-Anweisungen erstellen, vermeidet der Abfrageoptimierer nicht gruppierte Indizes und indizierte Sichten, die sich in Offlinedateigruppen befinden. Dadurch wird ein erfolgreiches Ausführen der Anweisungen ermöglicht. Enthält die Offlinedateigruppe jedoch den Heap oder gruppierten Index der Zieltabelle, schlagen die SELECT-Anweisungen fehl. Auch alle INSERT-, UPDATE- oder DELETE-Anweisungen, die eine Tabelle mit einem Index in einer Offlinedateigruppe ändern, schlagen fehl.
Verschieben von Dateien
Sie können System- oder benutzerdefinierte Daten und Protokolldateien verschieben, indem Sie in FILENAME den neuen Speicherort angeben. Dies kann in den folgenden Szenarien nützlich sein:
Wiederherstellung nach einem Fehler. Beispiel: Die Datenbank befindet sich im verdächtigen Modus oder wurde wegen eines Hardwarefehlers heruntergefahren.
Bei geplanter Verschiebung.
Verschiebung aufgrund planmäßiger Datenträgerwartung
Weitere Informationen finden Sie unter Verschieben von Datenbankdateien.
Initialisieren von Dateien
Standardmäßig werden Daten- und Protokolldateien durch Ausfüllen der Dateien mit Nullen initialisiert, wenn Sie eine der folgenden Operationen ausführen:
Erstellen einer Datenbank
Hinzufügen von Dateien zu einer vorhandenen Datenbank
Vergrößerung einer vorhandenen Datei
Wiederherstellen einer Datenbank oder Dateigruppe
Datendateien können sofort initialisiert werden. Dies ermöglicht ein schnelles Ausführen der entsprechenden Dateioperationen.
Entfernen eines FILESTREAM-Containers
Auch wenn der FILESTREAM-Container möglicherweise durch Ausführen von DBCC SHRINKFILE geleert wurde, kann es auch Gründen der Systemwartung erforderlich sein, Verweise auf die gelöschten Dateien beizubehalten. sp_filestream_force_garbage_collection (Transact-SQL) führt den FILESTREAM-Garbage Collector aus, um diese Dateien zum richtigen Zeitpunkt zu entfernen. Wenn vom FILESTREAM-Garbage Collector nicht alle Dateien aus einem FILESTREAM-Container entfernt wurden, wird beim Ausführen von ALTER DATABASE REMOVE FILE zum Entfernen eines FILESTREAM-Containers ein Fehler erzeugt. Um einen FILESTREAM-Container zu entfernen, wird empfohlen, den folgenden Prozess auszuführen.
Führen Sie DBCC SHRINKFILE (Transact-SQL) mit der EMPTYFILE-Option aus, um die aktiven Inhalte dieses Containers in andere Container zu verschieben.
Stellen Sie sicher, dass Protokollsicherungen im FULL- oder BULK_LOGGED-Wiederherstellungsmodell erfolgt sind.
Stellen Sie sicher, dass der Replikationsprotokollleser-Auftrag ausgeführt wurde, sofern erforderlich.
Führen Sie sp_filestream_force_garbage_collection (Transact-SQL) aus, um das Löschen nicht mehr benötigter Dateien aus diesem Container durch den Garbage Collector zu erzwingen.
Führen Sie ALTER DATABASE mit der REMOVE FILE-Option aus, um diesen Container zu entfernen.
Wiederholen Sie die Schritte 2 bis 4, um die Garbage Collection abzuschließen.
Verwenden von ALTER-Datenbank...REMOVE FILE, um diesen Container zu entfernen.
Beispiele
A.Hinzufügen einer Datei zu einer Datenbank
Im folgenden Beispiel wird der AdventureWorks2012-Datenbank eine 5-MB-Datendatei hinzugefügt.
USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
B.Hinzufügen einer Dateigruppe mit zwei Dateien zu einer Datenbank
Im folgenden Beispiel wird die Dateigruppe Test1FG1 in der AdventureWorks2012-Datenbank erstellt, und der Dateigruppe werden zwei 5-MB-Dateien hinzugefügt.
USE master
GO
ALTER DATABASE AdventureWorks2012
ADD FILEGROUP Test1FG1;
GO
ALTER DATABASE AdventureWorks2012
ADD FILE
(
NAME = test1dat3,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\t1dat3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
),
(
NAME = test1dat4,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\t1dat4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP Test1FG1;
GO
C.Hinzufügen von zwei Protokolldateien zu einer Datenbank
Im folgenden Beispiel werden der AdventureWorks2012-Datenbank zwei 5-MB-Protokolldateien hinzugefügt.
USE master;
GO
ALTER DATABASE AdventureWorks2012
ADD LOG FILE
(
NAME = test1log2,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
),
(
NAME = test1log3,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test3log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
D.Entfernen einer Datei aus einer Datenbank
Im folgenden Beispiel wird eine der in Beispiel B hinzugefügten Dateien entfernt.
USE master;
GO
ALTER DATABASE AdventureWorks2012
REMOVE FILE test1dat4;
GO
E.Ändern einer Datei
Im folgenden Beispiel wird die Größe einer der in Beispiel B hinzugefügten Dateien reduziert.
USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILE
(NAME = test1dat3,
SIZE = 20MB);
GO
F.Verschieben einer Datei an einen neuen Speicherort
Im folgenden Beispiel wird die in Beispiel A erstellte Datei Test1dat2 in ein neues Verzeichnis verschoben.
Hinweis
Sie müssen die Datei physisch in das neue Verzeichnis verschieben, bevor Sie dieses Beispiel ausführen.Halten Sie anschließend die Instanz von SQL Server an, und starten Sie diese neu, oder schalten Sie die AdventureWorks2012 -Datenbank OFFLINE und wieder ONLINE, um die Änderung zu implementieren.
USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILE
(
NAME = Test1dat2,
FILENAME = N'c:\t1dat2.ndf'
);
GO
G.Verschieben von tempdb an einen neuen Speicherort
Im folgenden Beispiel wird tempdb vom aktuellen Speicherort auf dem Datenträger an einen anderen Speicherort verschoben. Da tempdb jedes Mal beim Starten des MSSQLSERVER-Diensts neu erstellt wird, müssen Sie die Daten- und Protokolldateien nicht physisch verschieben. Die Dateien werden erstellt, sobald der Dienst in Schritt 3 neu gestartet wird. Bis der Dienst neu gestartet wird, arbeitet tempdb an dem bisherigen Speicherort weiter.
Ermitteln Sie die logischen Dateinamen der tempdb-Datenbank und ihren aktuellen Speicherort auf dem Datenträger.
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb'); GO
Ändern Sie den Speicherort der einzelnen Dateien mithilfe von ALTER DATABASE.
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf'); GO
Halten Sie die Instanz von SQL Server an, und starten Sie sie erneut.
Überprüfen Sie die Dateiänderung.
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb');
Löschen Sie die Dateien tempdb.mdf und templog.ldf von deren ursprünglichen Speicherorten.
H.Festlegen einer Dateigruppe als Standarddateigruppe
Im folgenden Beispiel wird die in Beispiel B erstellte Test1FG1 -Dateigruppe als Standarddateigruppe festgelegt. Die Standarddateigruppe wird dann auf die PRIMARY-Dateigruppe zurückgesetzt. PRIMARY muss durch eckige Klammern oder Anführungszeichen begrenzt werden.
USE master;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP Test1FG1 DEFAULT;
GO
ALTER DATABASE AdventureWorks2012
MODIFY FILEGROUP [PRIMARY] DEFAULT;
GO
I.Hinzufügen einer Dateigruppe mit ALTER DATABASE
Im folgenden Beispiel wird eine FILEGROUP, die die FILESTREAM-Klausel enthält, der FileStreamPhotoDB-Datenbank hinzugefügt.
--Create and add a FILEGROUP that CONTAINS the FILESTREAM clause to
--the FileStreamPhotoDB database.
ALTER DATABASE FileStreamPhotoDB
ADD FILEGROUP TodaysPhotoShoot
CONTAINS FILESTREAM;
GO
--Add a file for storing database photos to FILEGROUP
ALTER DATABASE FileStreamPhotoDB
ADD FILE
(
NAME= 'PhotoShoot1',
FILENAME = 'C:\Users\Administrator\Pictures\TodaysPhotoShoot.ndf'
)
TO FILEGROUP TodaysPhotoShoot;
GO
Siehe auch
Verweis
CREATE DATABASE (SQL Server Transact-SQL)
DATABASEPROPERTYEX (Transact-SQL)
sys.database_files (Transact-SQL)
sys.data_spaces (Transact-SQL)
sys.master_files (Transact-SQL)
DBCC SHRINKFILE (Transact-SQL)
sp_filestream_force_garbage_collection (Transact-SQL)