Freigeben über


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.

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 SET HADR
    Stellt die Syntax für die AlwaysOn-Verfügbarkeitsgruppen-Optionen von ALTER DATABASE zum Konfigurieren einer sekundären Datenbank auf einem sekundären Replikat einer AlwaysOn-Verfügbarkeitsgruppe 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  | 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> ::=
  <external_access_option> ::=
  <FILESTREAM_options> ::=
  <HADR_options> ::=  
  <parameterization_option> ::=
  <recovery_option> ::= 
  <service_broker_option> ::=
  <snapshot_option> ::=
  <sql_option> ::= 
  <termination> ::=

Argumente

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

    HinweisHinweis

    Diese Option ist in einer eigenständigen Datenbank nicht verfügbar.

  • CURRENT
    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
    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 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), 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.

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.

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.

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

Der Prozedurcache wird auch in den folgenden Situationen 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:

  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, schlägt die ALTER DATABASEdatabase_nameCOLLATE-Anweisung fehl. SQL Server gibt eine Fehlermeldung für jedes Objekt zurück, das die Aktion ALTER 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.

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

Erfordert die ALTER-Berechtigung für die Datenbank.

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

Siehe auch

Verweis

CREATE DATABASE (Transact-SQL)

DATABASEPROPERTYEX (Transact-SQL)

DROP DATABASE (Transact-SQL)

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_configure (Transact-SQL)

sp_spaceused (Transact-SQL)

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

sys.database_mirroring_witnesses (Transact-SQL)

sys.data_spaces (Transact-SQL)

sys.filegroups (Transact-SQL)

sys.master_files (Transact-SQL)

Konzepte

Systemdatenbanken