ALTER DATABASE (Transact-SQL)

 

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse

Ä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, die mit der Replikation verbundenen 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 Sortierung einer Datenbank.

ALTER DATABASE-Datei und Dateigruppe-Optionen
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 Database Mirroring
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 für die AlwaysOn-Verfügbarkeitsgruppen Optionen von ALTER DATABASE zum Konfigurieren einer sekundären Datenbank auf einem sekundären Replikat einer Always On-verfügbarkeitsgruppe.

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

Topic link icon Transact-SQL-Syntaxkonventionen

Azure SQL-Datenbank finden Sie unter ALTER DATABASE (Azure SQL-Datenbank)

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

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

System_CAPS_ICON_note.jpg Hinweis


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

CURRENT

Gilt für: SQL Server 2012 bis SQL Server 2016.

Legt fest, dass die zurzeit verwendete Datenbank geändert werden soll.

Ändern von Namen ** = ** Name der neuen Datenbank
Benennt die Datenbank mit dem angegebenen als Namen Name der neuen Datenbank.

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.

Beim Erstellen von Datenbanken mit einer von der Standardsortierung abweichenden Sortierung folgen die Daten in der Datenbank immer der angegebenen Sortierung. Für SQL Server, wenn Sie eine eigenständige Datenbank zu erstellen, die internen Kataloginformationen bleibt mit der SQL Server -standardsortierung Latin1_General_100_CI_AS_WS_KS_SC.

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

<delayed_durability_option>::=</delayed_durability_option>

Gilt für: SQL Server 2014 bis SQL Server 2016.

Weitere Informationen finden Sie unter ALTER DATABASE SET-Optionen (Transact-SQL) und Steuern der Transaktionsdauerhaftigkeit.

<file_and_filegroup_options>::=</file_and_filegroup_options>
Weitere Informationen finden Sie unter ALTER DATABASE File und Filegroup-Optionen (Transact-SQL).

Verwenden Sie zum Entfernen einer Datenbank DROP DATABASE.

Um die Größe einer Datenbank zu reduzieren, verwenden Sie 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.

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.

OFFLINEREAD_WRITE
ONLINEMODIFY FILEGROUP DEFAULT
MODIFY_NAMEMODIFY FILEGROUP READ_WRITE
COLLATEMODIFY FILEGROUP READ_ONLY
READ_ONLYPAGE_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 gelöschten Cachespeicher im Plancache enthält das SQL Server-Fehlerprotokoll folgende Informationsmeldung: "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 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.

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 Sie die folgenden Objekte, die von der datenbanksortierung abhängen, in der Datenbank, die ALTER DATABASE vorhandenDatabase_nameCOLLATE-Anweisung erzeugt einen Fehler. 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.

Sie können Katalogsichten, Systemfunktionen und gespeicherte Systemprozeduren verwenden, um Informationen zu Datenbanken, Dateien und Dateigruppen zurückzugeben.

Erfordert die ALTER-Berechtigung für die Datenbank.

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 2016.
USE master;  
GO  
  
CREATE DATABASE testdb  
COLLATE SQL_Latin1_General_CP1_CI_AS ;  
GO  
  
ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

Community-Beiträge

HINZUFÜGEN
Anzeigen: