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.

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.

Themenlink (Symbol) 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:

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

SicherheitshinweisSicherheitshinweis

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)

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