ALTER DATABASE (Transact-SQL)
Ändert eine Datenbank bzw. die zu dieser Datenbank gehörenden Dateien und Dateigruppen. Fügt einer Datenbank Dateien und Dateigruppen hinzu oder entfernt diese, ändert die Attribute einer Datenbank oder ihrer Dateien und Dateigruppen, ändert die Datenbanksortierung und legt Datenbankoptionen fest. Datenbankmomentaufnahmen können nicht geändert werden. Verwenden Sie zum Ändern von Datenbankoptionen für die Replikation sp_replicationdboption.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Azure SQL-Datenbank. |
Aufgrund seiner Länge wird die ALTER DATABASE-Syntax in folgende Themen aufgeteilt:
ALTER DATABASE
Das aktuelle Thema behandelt die Syntax zum Ändern des Namens und der Sortierung einer Datenbank.ALTER DATABASE-Optionen Datei und Dateigruppe
Stellt die Syntax zum Hinzufügen und Entfernen von Dateien und Dateigruppen in einer Datenbank sowie zum Ändern der Datei- und Dateigruppenattribute bereit.ALTER DATABASE SET-Optionen
Stellt die Syntax zum Ändern der Datenbankattribute mithilfe der SET-Optionen von ALTER DATABASE bereit.ALTER DATABASE-Datenbankspiegelung
Stellt die Syntax für die SET-Optionen von ALTER DATABASE bereit, die sich auf die Datenbankspiegelung beziehen.ALTER DATABASE SET HADR
Stellt die Syntax der ALTER DATABASE-Optionen für AlwaysOn-Verfügbarkeitsgruppen zum Konfigurieren einer sekundären Datenbank auf einem sekundären Replikat einer AlwaysOn-Verfügbarkeitsgruppe bereit.ALTER DATABASE Kompatibilitätsgrad
Stellt die Syntax für die SET-Optionen von ALTER DATABASE in Bezug auf die Kompatibilitätsgrade von Datenbanken bereit.
Transact-SQL-Syntaxkonventionen
Syntax
-- SQL Server Syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| COLLATE collation_name
| <file_and_filegroup_options>
| <set_database_options>
}
[;]
<file_and_filegroup_options >::=
<add_or_modify_files>::=
<filespec>::=
<add_or_modify_filegroups>::=
<filegroup_updatability_option>::=
<set_database_options>::=
<optionspec>::=
<auto_option> ::=
<change_tracking_option> ::=
<cursor_option> ::=
<database_mirroring_option> ::=
<date_correlation_optimization_option> ::=
<db_encryption_option> ::=
<db_state_option> ::=
<db_update_option> ::=
<db_user_access_option> ::=
<delayed_durability_option> ::= <external_access_option> ::=
<FILESTREAM_options> ::=
<HADR_options> ::=
<parameterization_option> ::=
<recovery_option> ::=
<service_broker_option> ::=
<snapshot_option> ::=
<sql_option> ::=
<termination> ::=
-- Azure SQL Database Syntax
ALTER DATABASE database_name
{
MODIFY NAME =new_database_name
| MODIFY ( <edition_options> [, ... n] )
| SET { <set_database_options> }
}
<edition_options> ::=
{
MAXSIZE = { 100 MB | 500 MB |1 | 5 | 10 | 20 | 30 … 150 … 500 } GB
| EDITION = { 'web' | 'business' | 'basic' | 'standard' | 'Premium' }
| SERVICE_OBJECTIVE = { 'shared' | 'basic' | 'S0' | 'S1' | 'S2' | 'P1' | 'P2' | 'P3' }
}
<set_database_options> ::=
<db_update_option>
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
[;]
Argumente
database_name
Der Name der Datenbank, die geändert werden soll.Hinweis
Diese Option ist in einer eigenständigen Datenbank nicht verfügbar.
CURRENT
Gilt für: SQL Server 2012 bis SQL Server 2014.
Legt fest, dass die zurzeit verwendete Datenbank geändert werden soll.
MODIFY NAME **=**new_database_name
Benennt die Datenbank in den als new_database_name angegebenen Namen um.COLLATE collation_name
Gilt für: SQL Server 2008 bis SQL Server 2014.
Gibt die Sortierung für die Datenbank an. collation_name kann entweder der Name einer Windows-Sortierung oder einer SQL-Sortierung sein. Wenn keine Sortierung angegeben ist, wird der Datenbank die Sortierung der Instanz von SQL Server zugewiesen.
Weitere Informationen zu den Namen von Windows- und SQL-Sortierungen finden Sie unter COLLATE (Transact-SQL).
MODIFY (MAXSIZE = [100 MB | 500 MB | 1 | 5 | 10 | 20 | 30 … 150…500] GB)
Gilt für: Azure SQL-Datenbank
Gibt die maximale Größe der Datenbank an. Die maximale Größe muss dem gültigen Wertsatz für die EDITION-Eigenschaft der Datenbank entsprechen. Eine Änderung der maximalen Datenbankgröße kann auch dazu führen, dass die EDITION-Eigenschaft der Datenbank geändert wird. In der folgenden Tabelle sind die unterstützten MAXSIZE-Werte und die Standardwerte (S) für die Dienstebenen von SQL-Datenbank aufgeführt.
MAXSIZE
Web
Business
Grundlegend
Standard
Premium
100 MB
√
√
√
√
500 MB
√
√
√
1 GB
√ (S)
√
√
√
2 GB
√ (S)
√
√
5 GB
√
√
√
10 GB
√ (S)
√
√
20 GB
√
√
√
30 GB
√
√
√
40 GB
√
√
√
50 GB
√
√
√
100 GB
√
√
√
150 GB
√
√
√
200 GB
√
√
250 GB
√ (S)
√
300 GB
√
400 GB
√
500 GB
√ (S)
Die folgenden Regeln gelten für das MAXSIZE-Argument und das EDITION-Argument:
Falls angegeben, muss der MAXSIZE-Wert einem gültigen, in der Tabelle oben aufgeführten Wert entsprechen.
Wenn MAXSIZE auf einen Wert unter 5 GB festgelegt und EDITION nicht angegeben ist, wird die Datenbankedition automatisch auf die Web Edition festgelegt.
Wenn MAXSIZE auf einen Wert über 5 GB festgelegt und EDITION nicht angegeben ist, wird die Datenbankedition automatisch auf die Business Edition festgelegt.
Wenn EDITION angegeben ist, MAXSIZE jedoch nicht, wird der Standardwert für die Edition verwendet. Wenn EDITION beispielsweise auf die Standard Edition festgelegt und MAXSIZE nicht angegeben ist, wird MAXSIZE automatisch auf 500 MB festgelegt.
Wenn weder MAXSIZE noch EDITION angegeben sind, wird EDITION auf die Web Edition und MAXSIZE auf 1 GB festgelegt.
MODIFY (EDITION = ['web' | 'business'| 'basic' | 'standard' |'premium' ] )
Gilt für: Azure SQL-Datenbank
Ändert die Datenbankedition. Die Dienstebenen von SQL-Datenbank können mit dem EDITION-Parameter festgelegt oder geändert werden. Wenn die MAXSIZE-Eigenschaft für die Datenbank auf einen Wert außerhalb des gültigen, von der jeweiligen Edition unterstützten Bereichs festgelegt wird, schlägt die Änderung der EDITION-Eigenschaft fehl.
Wichtig
Business- und Web-Dienstebenen laufen im September 2015 aus.Weitere Informationen finden Sie unter FAQ zu Web und Business.
SERVICE_OBJECTIVE
Gilt für: Azure SQL-Datenbank
Gibt die Leistungsebene an. Dienstzielbeschreibungen und weitere Informationen zu Größe, Editionen und Dienstzielkombinationen finden Sie unter Dienst- und Leistungsebenen von Azure SQL-Datenbank. Wenn der angegebene SERVICE_OBJECTIVE von der EDITION nicht unterstützt wird, erhalten Sie eine Fehlermeldung. Zum Ändern des SERVICE_OBJECTIVE-Werts von einer Ebene in eine andere (z. B. von S1 in P1) muss auch der EDITION-Wert geändert werden.
<db_update_option> ::=
Gilt für: Azure SQL-Datenbank
Steuert, ob Updates für die Datenbank zugelassen sind.
{ READ_ONLY | READ_WRITE }
READ_ONLY
Benutzer können Daten aus der Datenbank lesen, aber nicht ändern.READ_WRITE
Die Datenbank ist für Lese- und Schreibvorgänge verfügbar.
Hinweis
Bei Verbunddatenbanken mit SQL-Datenbank ist SET { READ_ONLY | READ_WRITE } deaktiviert.
<delayed_durability_option> ::=
Gilt für: SQL Server 2014 bis SQL Server 2014. |
Weitere Informationen finden Sie unter ALTER DATABASE SET-Optionen (Transact-SQL) und Steuern der Transaktionsdauerhaftigkeit.
<file_and_filegroup_options >::=
Weitere Informationen finden Sie unter ALTER DATABASE-Optionen Datei und Dateigruppe (Transact-SQL).
<set_database_options >::=
Weitere Informationen finden Sie unter ALTER DATABASE SET-Optionen (Transact-SQL), ALTER DATABASE-Datenbankspiegelung (Transact-SQL), ALTER DATABASE SET HADR (Transact-SQL) und ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL).
Hinweise
Verwenden Sie DROP DATABASE, um eine Datenbank zu entfernen.
Verwenden Sie DBCC SHRINKDATABASE, um die Größe einer Datenbank zu reduzieren.
Die ALTER DATABASE-Anweisung muss im Autocommitmodus (dem Standardmodus für die Transaktionsverwaltung) ausgeführt werden und ist in einer expliziten oder impliziten Transaktion nicht zugelassen.
Der Status einer Datenbankdatei (z. B. online oder offline) wird 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.
Wenn eine Datenbank sich im Status RESTORING befindet, erzeugen die meisten ALTER DATABASE-Anweisungen einen Fehler. Eine Ausnahme bildet das Festlegen von Datenbank-Spiegelungsoptionen. Eine Datenbank kann den Status RESTORING aufweisen, während ein Wiederherstellungsvorgang aktiv ist oder wenn ein Wiederherstellungsvorgang einer Datenbank oder Protokolldatei aufgrund einer beschädigten Sicherungsdatei fehlschlägt.
Der Plancache für die Instanz von SQL Server wird gelöscht, indem eine der folgenden Optionen festgelegt wird.
OFFLINE |
READ_WRITE |
ONLINE |
MODIFY FILEGROUP DEFAULT |
MODIFY_NAME |
MODIFY FILEGROUP READ_WRITE |
COLLATE |
MODIFY FILEGROUP READ_ONLY |
READ_ONLY |
PAGE_VERIFY |
Durch das Löschen des Plancaches wird eine Neukompilierung aller nachfolgenden Ausführungspläne verursacht, und möglicherweise entsteht plötzlich eine temporäre Verringerung der Abfrageleistung. Das SQL Server-Fehlerprotokoll enthält für jeden geleerten Cachespeicher im Plancache folgende Meldung zur Information: "Von SQL Server wurden für den '%s'-Cachespeicher (Bestandteil des Plancaches) %d Leerungen des Cachespeichers gefunden, die von Datenbankwartungs- oder Neukonfigurierungsvorgängen ausgelöst wurden". Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.
Der Prozedurcache wird in den folgenden Situationen ebenfalls geleert:
Die AUTO_CLOSE-Datenbankoption ist für eine Datenbank auf ON festgelegt. Wenn die Datenbank von keiner Benutzerverbindung verwendet wird bzw. keine Benutzerverbindung darauf verweist, versucht der Hintergrundtask, die Datenbank automatisch zu schließen und herunterzufahren.
Sie führen mehrere Abfragen für eine Datenbank aus, die über Standardoptionen verfügt. Anschließend wird die Datenbank gelöscht.
Eine Datenbank-Momentaufnahme für eine Quelldatenbank wird gelöscht.
Sie erstellen das Transaktionsprotokoll für eine Datenbank erfolgreich neu.
Sie stellen eine Datenbanksicherung wieder her.
Sie trennen eine Datenbank.
Ändern der Datenbanksortierung
Bevor Sie auf eine Datenbank eine andere Sortierung anwenden, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:
Die Datenbank wird derzeit nur von Ihnen verwendet.
Von der Sortierung der Datenbank hängt kein schemagebundenes Objekt ab.
Wenn die folgenden Objekte, die von der Datenbanksortierung abhängen, in der Datenbank vorhanden sind, schlägt die ALTER DATABASEdatabase_nameCOLLATE-Anweisung fehl. SQL Server gibt eine Fehlermeldung für jedes Objekt zurück, das die ALTER-Aktion blockiert:
Benutzerdefinierte Funktionen und Sichten, die mit SCHEMABINDING erstellt wurden.
Berechnete Spalten.
CHECK-Einschränkungen.
Tabellenwertfunktionen, die Tabellen mit Zeichenspalten zurückgeben, deren Sortierungen von der Standardsortierung der Datenbank geerbt wurden.
Abhängigkeitsinformationen für nicht schemagebundene Entitäten werden automatisch aktualisiert, wenn die Sortierung der Datenbank geändert wird.
Durch das Ändern der Sortierung der Datenbank werden keine Duplikate von Systemnamen für die Datenbankobjekte erstellt. Wenn durch die geänderte Sortierung doppelte Namen entstehen, verursachen die folgenden Namespaces möglicherweise einen Fehler bei der Änderung der Datenbanksortierung:
Objektnamen wie z. B. der Name einer Prozedur, einer Tabelle, eines Triggers oder einer Sicht
Schemanamen;
Prinzipale wie z. B. eine Gruppe, eine Rolle oder ein Benutzer
Namen skalarer Typen wie z. B. der Name eines system- oder benutzerdefinierten Typs
Namen von Volltextkatalogen
Spalten- oder Parameternamen in einem Objekt
Indexnamen in einer Tabelle
Durch doppelte Namen, die durch die neue Sortierung entstanden sind, schlägt die ALTER-Aktion fehl. SQL Server gibt eine Fehlermeldung zurück, in der der Namespace angegeben wird, in dem das Duplikat gefunden wurde.
Anzeigen von Datenbankinformationen
Sie können Katalogsichten, Systemfunktionen und gespeicherte Systemprozeduren verwenden, um Informationen zu Datenbanken, Dateien und Dateigruppen zurückzugeben.
Berechtigungen
SQL Server
Erfordert die ALTER-Berechtigung für die Datenbank.
Azure SQL-Datenbank
Datenbanken können nur durch den Prinzipalanmeldenamen auf Serverebene (vom Bereitstellungsprozess erstellt) oder Mitglieder der Datenbankrolle dbmanager geändert werden.
Sicherheitshinweis |
---|
Der Datenbankbesitzer kann die Datenbank nur ändern, wenn er Mitglied der Rolle dbmanager ist. |
Beispiele
A.Ändern des Namens einer Datenbank
Im folgenden Beispiel wird der Name der Datenbank AdventureWorks2012 in Northwind geändert.
USE master;
GO
ALTER DATABASE AdventureWorks2012
Modify Name = Northwind ;
GO
B.Ändern der Datenbanksortierung
Im folgenden Beispiel wird die Datenbank testdb mit der SQL_Latin1_General_CP1_CI_AS-Sortierung erstellt. Danach wird die Sortierung der Datenbank testdb in COLLATE French_CI_AI geändert.
Gilt für: SQL Server 2008 bis SQL Server 2014. |
USE master;
GO
CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO
ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO
Siehe auch
Verweis
CREATE DATABASE (SQL Server Transact-SQL)
DATABASEPROPERTYEX (Transact-SQL)
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
sys.database_files (Transact-SQL)
sys.database_mirroring_witnesses (Transact-SQL)
sys.data_spaces (Transact-SQL)
sys.master_files (Transact-SQL)