ALTER DATABASE (Transact-SQL)ALTER DATABASE (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Ändert eine Datenbank bzw. die zu dieser Datenbank gehörenden Dateien und Dateigruppen.Modifies a database, or the files and filegroups associated with the database. 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.Adds or removes files and filegroups from a database, changes the attributes of a database or its files and filegroups, changes the database collation, and sets database options. Datenbankmomentaufnahmen können nicht geändert werden.Database snapshots cannot be modified. Verwenden Sie zum Ändern von Datenbankoptionen für die Replikation sp_replicationdboption.To modify database options associated with replication, use sp_replicationdboption.

Aufgrund seiner Länge wird die ALTER DATABASE-Syntax in folgende Themen aufgeteilt:Because of its length, the ALTER DATABASE syntax is separated into the following topics:

ALTER DATABASEALTER DATABASE
Das aktuelle Thema behandelt die Syntax zum Ändern des Namens und der Sortierung einer Datenbank.The current topic provides the syntax for changing the name and the collation of a database.

ALTER DATABASE-Optionen für Dateien und DateigruppenALTER DATABASE File and Filegroup Options
Stellt die Syntax zum Hinzufügen und Entfernen von Dateien und Dateigruppen in einer Datenbank sowie zum Ändern der Datei- und Dateigruppenattribute bereit.Provides the syntax for adding and removing files and filegroups from a database, and for changing the attributes of the files and filegroups.

ALTER DATABASE SET-OptionenALTER DATABASE SET Options
Stellt die Syntax zum Ändern der Datenbankattribute mithilfe der SET-Optionen von ALTER DATABASE bereit.Provides the syntax for changing the attributes of a database by using the SET options of ALTER DATABASE.

ALTER DATABASE-DatenbankspiegelungALTER DATABASE Database Mirroring
Stellt die Syntax für die SET-Optionen von ALTER DATABASE bereit, die sich auf die Datenbankspiegelung beziehen.Provides the syntax for the SET options of ALTER DATABASE that are related to database mirroring.

ALTER DATABASE SET HADRALTER DATABASE SET HADR
Stellt die Syntax der ALTER DATABASE-Optionen für AlwaysOn-VerfügbarkeitsgruppenAlways On availability groups zum Konfigurieren einer sekundären Datenbank auf einem sekundären Replikat einer Always On-Verfügbarkeitsgruppe bereit.Provides the syntax for the AlwaysOn-VerfügbarkeitsgruppenAlways On availability groups options of ALTER DATABASE for configuring a secondary database on a secondary replica of an Always On availability group.

ALTER DATABASE-KompatibilitätsgradALTER DATABASE Compatibility Level
Stellt die Syntax für die SET-Optionen von ALTER DATABASE in Bezug auf die Kompatibilitätsgrade von Datenbanken bereit.Provides the syntax for the SET options of ALTER DATABASE that are related to database compatibility levels.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

Informationen zu Azure SQL-Datenbank finden Sie unter ALTER DATABASE (Azure SQL Database).For Azure SQL Database, see ALTER DATABASE (Azure SQL Database)
Informationen zu Azure SQL Data Warehouse finden Sie unter ALTER DATABASE (Azure SQL Data Warehouse).For Azure SQL Data Warehouse, see ALTER DATABASE (Azure SQL Data Warehouse).
Informationen zu Parallel Data Warehouse finden Sie unter ALTER DATABASE (Parallel Data Warehouse).For Parallel Data Warehouse, see ALTER DATABASE (Parallel Data Warehouse).

SyntaxSyntax

-- 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> ::=  
  <query_store_options> ::=  
  <recovery_option> ::=   
  <service_broker_option> ::=  
  <snapshot_option> ::=  
  <sql_option> ::=   
  <termination> ::=  

ArgumenteArguments

database_namedatabase_name
Der Name der Datenbank, die geändert werden soll.Is the name of the database to be modified.

Hinweis

Diese Option ist in einer eigenständigen Datenbank nicht verfügbar.This option is not available in a Contained Database.

CURRENTCURRENT
Gilt für: SQL Server 2012 (11.x)SQL Server 2012 (11.x) bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Legt fest, dass die zurzeit verwendete Datenbank geändert werden soll.Designates that the current database in use should be altered.

MODIFY NAME =new_database_nameMODIFY NAME =new_database_name
Benennt die Datenbank in den angegebenen Namen new_database_name um.Renames the database with the name specified as new_database_name.

COLLATE collation_nameCOLLATE collation_name
Gibt die Sortierung für die Datenbank an.Specifies the collation for the database. collation_name kann entweder der Name einer Windows-Sortierung oder ein SQL-Sortierungsname sein.collation_name can be either a Windows collation name or a SQL collation name. Wenn keine Sortierung angegeben ist, wird der Datenbank die Sortierung der Instanz von SQL ServerSQL Server zugewiesen.If not specified, the database is assigned the collation of the instance of SQL ServerSQL Server.

Beim Erstellen von Datenbanken mit einer von der Standardsortierung abweichenden Sortierung folgen die Daten in der Datenbank immer der angegebenen Sortierung.When creating databases with other than the default collation, the data in the database always respects the specified collation. Bei der Erstellung einer eigenständigen Datenbank in SQL ServerSQL Server werden die internen Kataloginformationen mit der SQL ServerSQL Server-Standardsortierung Latin1_General_100_CI_AS_WS_KS_SC verwaltet.For SQL ServerSQL Server, when creating a contained database, the internal catalog information is maintained using the SQL ServerSQL Server default collation, Latin1_General_100_CI_AS_WS_KS_SC.

Weitere Informationen zu den Windows- und SQL-Sortierungsnamen finden Sie unter COLLATE (Transact-SQL).For more information about the Windows and SQL collation names, see COLLATE (Transact-SQL).

<delayed_durability_option> ::=<delayed_durability_option> ::=
Gilt für: SQL Server 2014 (12.x)SQL Server 2014 (12.x) bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through SQL Server 2017SQL Server 2017.

Weitere Informationen finden Sie unter ALTER DATABASE SET-Optionen (Transact-SQL) und Steuern der Transaktionsdauerhaftigkeit.For more information see ALTER DATABASE SET Options (Transact-SQL) and Control Transaction Durability.

<file_and_filegroup_options>::=<file_and_filegroup_options>::=
Weitere Informationen finden Sie unter ALTER DATABASE-Optionen FILE und FILEGROUP (Transact-SQL).For more information, see ALTER DATABASE File and Filegroup Options (Transact-SQL).

RemarksRemarks

Verwenden Sie DROP DATABASE, um Datenbanken zu entfernen.To remove a database, use DROP DATABASE.

Verwenden Sie DBCC SHRINKDATABASE, um die Größe einer Datenbank zu reduzieren.To decrease the size of a database, use DBCC SHRINKDATABASE.

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.The ALTER DATABASE statement must run in autocommit mode (the default transaction management mode) and is not allowed in an explicit or implicit transaction.

Der Status einer Datenbankdatei (z. B. online oder offline) wird unabhängig vom Status der Datenbank verwaltet.The state of a database file (for example, online or offline), is maintained independently from the state of the database. Weitere Informationen finden Sie im Abschnitt Dateistatus.For more information, see File States. Der Status der Dateien in einer Dateigruppe bestimmt die Verfügbarkeit der gesamten Dateigruppe.The state of the files within a filegroup determines the availability of the whole filegroup. Damit eine Dateigruppe verfügbar ist, müssen alle Dateien in der Dateigruppe online sein.For a filegroup to be available, all files within the filegroup must be online. Ist eine Dateigruppe offline, verursacht jeder Versuch, über eine SQL-Anweisung auf die Dateigruppe zuzugreifen, einen Fehler.If a filegroup is offline, any try to access the filegroup by an SQL statement will fail with an error. Wenn Sie Abfragepläne für SELECT-Anweisungen erstellen, vermeidet der Abfrageoptimierer nicht gruppierte Indizes und indizierte Sichten, die sich in Offlinedateigruppen befinden.When you build query plans for SELECT statements, the query optimizer avoids nonclustered indexes and indexed views that reside in offline filegroups. Dadurch wird ein erfolgreiches Ausführen der Anweisungen ermöglicht.This enables these statements to succeed. Enthält die Offlinedateigruppe jedoch den Heap oder gruppierten Index der Zieltabelle, schlagen die SELECT-Anweisungen fehl.However, if the offline filegroup contains the heap or clustered index of the target table, the SELECT statements fail. Auch alle INSERT-, UPDATE- oder DELETE-Anweisungen, die eine Tabelle mit einem Index in einer Offlinedateigruppe ändern, schlagen fehl.Additionally, any INSERT, UPDATE, or DELETE statement that modifies a table with any index in an offline filegroup will fail.

Wenn eine Datenbank sich im Status RESTORING befindet, erzeugen die meisten ALTER DATABASE-Anweisungen einen Fehler.When a database is in the RESTORING state, most ALTER DATABASE statements will fail. Eine Ausnahme bildet das Festlegen von Datenbank-Spiegelungsoptionen.The exception is setting database mirroring options. 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.A database may be in the RESTORING state during an active restore operation or when a restore operation of a database or log file fails because of a corrupted backup file.

Der Plancache für die Instanz von SQL ServerSQL Server wird gelöscht, indem eine der folgenden Optionen festgelegt wird.The plan cache for the instance of SQL ServerSQL Server is cleared by setting one of the following options.

OFFLINEOFFLINE READ_WRITEREAD_WRITE
ONLINEONLINE MODIFY FILEGROUP DEFAULTMODIFY FILEGROUP DEFAULT
MODIFY_NAMEMODIFY_NAME MODIFY FILEGROUP READ_WRITEMODIFY FILEGROUP READ_WRITE
COLLATECOLLATE MODIFY FILEGROUP READ_ONLYMODIFY FILEGROUP READ_ONLY
READ_ONLYREAD_ONLY PAGE_VERIFYPAGE_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.Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. Für jeden gelöschten Cachespeicher im Plancache enthält das SQL ServerSQL Server-Fehlerprotokoll folgende Informationsmeldung: " SQL ServerSQL Server hat für den %s-Cachespeicher (Bestandteil des Plancache) %d Leerungen des Cachespeichers gefunden, die von Datenbankwartungs- oder Neukonfigurierungsvorgängen ausgelöst wurden".For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations". Diese Meldung wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.This message is logged every five minutes as long as the cache is flushed within that time interval.

Der Prozedurcache wird in den folgenden Situationen ebenfalls geleert:The procedure cache is also flushed in the following scenarios:

  • Die AUTO_CLOSE-Datenbankoption ist für eine Datenbank auf ON festgelegt.A database has the AUTO_CLOSE database option set to ON. Wenn die Datenbank von keiner Benutzerverbindung verwendet wird bzw. keine Benutzerverbindung darauf verweist, versucht der Hintergrundtask, die Datenbank automatisch zu schließen und herunterzufahren.When no user connection references or uses the database, the background task tries to close and shut down the database automatically.

  • Sie führen mehrere Abfragen für eine Datenbank aus, die über Standardoptionen verfügt.You run several queries against a database that has default options. Anschließend wird die Datenbank gelöscht.Then, the database is dropped.

  • Eine Datenbank-Momentaufnahme für eine Quelldatenbank wird gelöscht.A database snapshot for a source database is dropped.

  • Sie erstellen das Transaktionsprotokoll für eine Datenbank erfolgreich neu.You successfully rebuild the transaction log for a database.

  • Sie stellen eine Datenbanksicherung wieder her.You restore a database backup.

  • Sie trennen eine Datenbank.You detach a database.

Ändern der DatenbanksortierungChanging the Database Collation

Bevor Sie auf eine Datenbank eine andere Sortierung anwenden, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:Before you apply a different collation to a database, make sure that the following conditions are in place:

  • Die Datenbank wird derzeit nur von Ihnen verwendet.You are the only one currently using the database.

  • Von der Sortierung der Datenbank hängt kein schemagebundenes Objekt ab.No schema-bound object depends on the collation of the database.

    Wenn die folgenden Objekte, die von der Datenbanksortierung abhängen, in der Datenbank vorhanden sind, schlägt die ALTER DATABASEdatabase_nameCOLLATE-Anweisung fehl.If the following objects, which depend on the database collation, exist in the database, the ALTER DATABASEdatabase_nameCOLLATE statement will fail. SQL ServerSQL Server gibt eine Fehlermeldung für jedes Objekt zurück, das die ALTER-Aktion blockiert: will return an error message for each object blocking the ALTER action:

    • Benutzerdefinierte Funktionen und Sichten, die mit SCHEMABINDING erstellt wurden.User-defined functions and views created with SCHEMABINDING.

    • Berechnete Spalten.Computed columns.

    • CHECK-Einschränkungen.CHECK constraints.

    • Tabellenwertfunktionen, die Tabellen mit Zeichenspalten zurückgeben, deren Sortierungen von der Standardsortierung der Datenbank geerbt wurden.Table-valued functions that return tables with character columns with collations inherited from the default database collation.

      Abhängigkeitsinformationen für nicht schemagebundene Entitäten werden automatisch aktualisiert, wenn die Sortierung der Datenbank geändert wird.Dependency information for non-schema-bound entities is automatically updated when the database collation is changed.

    Durch das Ändern der Sortierung der Datenbank werden keine Duplikate von Systemnamen für die Datenbankobjekte erstellt.Changing the database collation does not create duplicates among any system names for the database objects. Wenn durch die geänderte Sortierung doppelte Namen entstehen, verursachen die folgenden Namespaces möglicherweise einen Fehler bei der Änderung der Datenbanksortierung:If duplicate names result from the changed collation, the following namespaces may cause the failure of a database collation change:

  • Objektnamen wie z. B. der Name einer Prozedur, einer Tabelle, eines Triggers oder einer SichtObject names such as a procedure, table, trigger, or view.

  • Schemanamen;Schema names.

  • Prinzipale wie z. B. eine Gruppe, eine Rolle oder ein BenutzerPrincipals such as a group, role, or user.

  • Namen skalarer Typen wie z. B. der Name eines system- oder benutzerdefinierten TypsScalar-type names such as system and user-defined types.

  • Namen von VolltextkatalogenFull-text catalog names.

  • Spalten- oder Parameternamen in einem ObjektColumn or parameter names within an object.

  • Indexnamen in einer TabelleIndex names within a table.

Durch doppelte Namen, die durch die neue Sortierung entstanden sind, schlägt die ALTER-Aktion fehl. SQL ServerSQL Server gibt eine Fehlermeldung zurück, in der der Namespace angegeben wird, in dem das Duplikat gefunden wurde.Duplicate names resulting from the new collation will cause the change action to fail, and SQL ServerSQL Server will return an error message specifying the namespace where the duplicate was found.

Anzeigen von DatenbankinformationenViewing Database Information

Sie können Katalogsichten, Systemfunktionen und gespeicherte Systemprozeduren verwenden, um Informationen zu Datenbanken, Dateien und Dateigruppen zurückzugeben.You can use catalog views, system functions, and system stored procedures to return information about databases, files, and filegroups.

BerechtigungenPermissions

Erfordert die ALTER-Berechtigung für die Datenbank.Requires ALTER permission on the database.

BeispieleExamples

A.A. Ändern des Namens einer DatenbankChanging the name of a database

Im folgenden Beispiel wird der Name der Datenbank AdventureWorks2012 in Northwind geändert.The following example changes the name of the AdventureWorks2012 database to Northwind.

USE master;  
GO  
ALTER DATABASE AdventureWorks2012  
Modify Name = Northwind ;  
GO  

B.B. Ändern der DatenbanksortierungChanging the collation of a database

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.The following example creates a database named testdb with the SQL_Latin1_General_CP1_CI_AS collation, and then changes the collation of the testdb database to COLLATE French_CI_AI.

Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

USE master;  
GO  

CREATE DATABASE testdb  
COLLATE SQL_Latin1_General_CP1_CI_AS ;  
GO  

ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

Weitere Informationen finden Sie unterSee Also