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. Datenbanksnapshots können nicht geändert werden. Verwenden Sie zum Ändern von Datenbankoptionen für die Replikation sp_replicationdboption.

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 Datenbanksortierung.

  • ALTER DATABASE-Optionen Datei und Dateigruppe
    Stellt die Syntax zum Hinzufügen und Entfernen von Dateien und Dateigruppen aus der 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 in Bezug auf die Datenbankspiegelung die Syntax für die entsprechenden SET-Optionen von ALTER DATABASE bereit.

  • ALTER DATABASE Kompatibilitätsgrad
    Stellt in Bezug auf die Kompatibilitätsgrade von Datenbanken die Syntax für die SET-Optionen von ALTER DATABASE bereit.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

ALTER DATABASE database_name 
{
  | 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> ::=
    <external_access_option> ::=
    <parameterization_option> ::=
    <recovery_option> ::= 
    <service_broker_option> ::=
    <snapshot_option> ::=
    <sql_option> ::= 
    <termination> ::=

Argumente

  • database_name
    Der Name der Datenbank, die geändert werden soll.

  • MODIFY NAME **=**new_database_name
    Benennt die Datenbank in den als new_database_name angegebenen Namen um.

  • COLLATE collation_name
    Gibt die Sortierung für die Datenbank an. collation_name kann entweder ein Windows-Sortierungsname oder ein SQL-Sortierungsname sein. Wenn keine Sortierung angegeben ist, wird der Datenbank die Sortierung der Instanz von SQL Server zugewiesen.

    Weitere Informationen zu den Namen der Windows-Sortierreihenfolgen und zu den SQL-Sortierungsnamen finden Sie unter COLLATE (Transact-SQL).

<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).

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. Weitere Informationen finden Sie unter Autocommit-Transaktionen.

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 Ansichten, 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. Im Status RESTORING kann eine Datenbank sich während eines aktiven Wiederherstellungsvorgangs befinden oder wenn ein Wiederherstellungsvorgang einer Datenbank oder Protokolldatei aufgrund einer beschädigten Sicherungsdatei fehlschlägt. Weitere Informationen finden Sie unter Reagieren auf SQL Server-Wiederherstellungsfehler als Folge von beschädigten Sicherungen.

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

 

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. Für jeden geleerten Cachespeicher im Plancache enthält das SQL Server-Fehlerprotokoll folgende Meldung zur Information: "SQL Server hat für den '%s'-Cachespeicher (Bestandteil des Plancache) %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.

Ändern der Datenbanksortierung

Bevor Sie auf eine Datenbank eine andere Sortierung anwenden, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:

  1. Die Datenbank wird derzeit nur von Ihnen verwendet.

  2. 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, tritt bei der ALTER DATABASEdatabase_nameCOLLATE-Anweisung ein Fehler auf. In SQL Server wird eine Fehlermeldung für jedes Objekt zurückgegeben, das die ALTER-Aktion blockiert:

    • Benutzerdefinierte Funktionen und Sichten, die mit SCHEMABINDING erstellt wurden.

    • Berechnete Spalten.

    • CHECK-Einschränkungen.

    • Funktionen mit Tabellenrückgabe, deren Rückgabetabellen Zeichenspalten mit Sortierungen enthalten, die von der Sortierung der Standarddatenbank geerbt wurden.

    Abhängigkeitsinformationen für nicht schemagebundene Entitäten werden automatisch aktualisiert, wenn die Sortierreihenfolge der Datenbank geändert wird. Weitere Informationen finden Sie unter Grundlegendes zu SQL-Abhängigkeiten.

  3. Durch das Ändern der Sortierung der Datenbank werden keine Duplikate von Systemnamen für die Datenbankobjekte erstellt.

    Die folgenden Namespaces verursachen möglicherweise einen Fehler bei der Änderung der Datenbanksortierung, wenn durch die geänderte Sortierung doppelte Namen entstehen:

    • 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 Datenbank, Dateien und Dateigruppen zurückzugeben. Weitere Informationen finden Sie unter Anzeigen von Datenbankmetadaten.

Berechtigungen

Erfordert die ALTER-Berechtigung für die Datenbank.

Beispiele

A. Ändern des Namens einer Datenbank

Im folgenden Beispiel wird der Name der Datenbank AdventureWorks in Northwind geändert.

USE master;
GO
ALTER DATABASE AdventureWorks
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 testdb-Datenbank in COLLATE French_CI_AI geändert.

USE master;
GO

CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO