ALTER DATABASE SET-Optionen (Transact-SQL)

Legt Datenbankoptionen in Microsoft SQL Server, Azure SQL-Datenbank und Azure Synapse Analytics fest. Informationen zu anderen ALTER DATABASE-Optionen finden Sie unter ALTER DATABASE.

Klicken Sie auf eine der folgenden Registerkarten, um Syntax, Argumente, Hinweise, Berechtigungen und Beispiele für eine bestimmte SQL-Version anzuzeigen, mit der Sie arbeiten.

Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.

Hinweis

Das Festlegen einiger Optionen mit ALTER DATABASE erfordert möglicherweise exklusiven Datenbankzugriff. Wenn die ALTER DATABASE-Anweisung nicht rechtzeitig vollständig ausgeführt wird, überprüfen Sie, ob die ALTER DATABASE-Sitzung von anderen Sitzungen in der Datenbank blockiert wird.

Auswählen eines Produkts

Klicken Sie in der folgenden Zeile auf den Namen des Produkts, das Sie am meisten interessiert. Dadurch werden Ihnen auf dieser Webseite unterschiedliche Inhalte angezeigt, die zu dem von Ihnen ausgewählten Produkt passen.

* SQL Server *  

 

SQL Server

Datenbankspiegelung, Always On-Verfügbarkeitsgruppen und Kompatibilitätsgrade sind zwar SET-Optionen, werden aufgrund ihres Umfangs jedoch in separaten Artikeln beschrieben. Weitere Informationen finden Sie unter ALTER DATABASE-Datenbankspiegelung, ALTER DATABASE SET HADR und ALTER DATABASE-Kompatibilitätsgrad.

Datenbankweit gültige Konfigurationen werden zum Festlegen mehrerer Datenbankkonfigurationen auf der Ebene einzelner Datenbanken verwendet. Weitere Informationen finden Sie unter ALTER DATABASE SCOPED CONFIGURATION.

Hinweis

Viele DATABASE SET-Optionen können mithilfe von SET-Anweisungen für die aktuelle Sitzung konfiguriert werden; häufig werden sie bei der Verbindung von Anwendungen konfiguriert. Die ALTER DATABASE SET-Werte werden durch SET-Optionen auf Sitzungsebene überschrieben. Die in den folgenden Abschnitten beschriebenen Datenbankoptionen entsprechen Werten, die Sie für Sitzungen festlegen können, von denen explizit keine weiteren Werte für SET-Optionen bereitgestellt werden.

Syntax

ALTER DATABASE { database_name | CURRENT }
SET
{
    <option_spec> [ ,...n ] [ WITH <termination> ]
}

<option_spec> ::=
{
    <accelerated_database_recovery>
  | <auto_option>
  | <automatic_tuning_option>
  | <change_tracking_option>
  | <containment_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 ( <FILESTREAM_option> )
  | <HADR_options>
  | <mixed_page_allocation_option>
  | <parameterization_option>
  | <query_store_options>
  | <recovery_option>
  | <remote_data_archive_option>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
  | <data_retention_policy>
}
;

<accelerated_database_recovery> ::=
{
    ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
     [ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ];
}

<auto_option> ::=
{
    AUTO_CLOSE { ON | OFF }
  | AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
  | AUTO_SHRINK { ON | OFF }
  | AUTO_UPDATE_STATISTICS { ON | OFF }
  | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<automatic_tuning_option> ::=
{
    AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { ON | OFF } )
}

<change_tracking_option> ::=
{
    CHANGE_TRACKING
   {
       = OFF
     | = ON [ ( <change_tracking_option_list > [,...n] ) ]
     | ( <change_tracking_option_list> [,...n] )
   }
}

<change_tracking_option_list> ::=
{
   AUTO_CLEANUP = { ON | OFF }
 | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}

<containment_option> ::=
   CONTAINMENT = { NONE | PARTIAL }

<cursor_option> ::=
{
    CURSOR_CLOSE_ON_COMMIT { ON | OFF }
  | CURSOR_DEFAULT { LOCAL | GLOBAL }
}

<database_mirroring_option>
  ALTER DATABASE Database Mirroring

<date_correlation_optimization_option> ::=
    DATE_CORRELATION_OPTIMIZATION { ON | OFF }

<db_encryption_option> ::=
    ENCRYPTION { ON | OFF | SUSPEND | RESUME }

<db_state_option> ::=
    { ONLINE | OFFLINE | EMERGENCY }

<db_update_option> ::=
    { READ_ONLY | READ_WRITE }

<db_user_access_option> ::=
    { SINGLE_USER | RESTRICTED_USER | MULTI_USER }

<delayed_durability_option> ::=
    DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }

<external_access_option> ::=
{
    DB_CHAINING { ON | OFF }
  | TRUSTWORTHY { ON | OFF }
  | DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
  | DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
  | NESTED_TRIGGERS = { OFF | ON }
  | TRANSFORM_NOISE_WORDS = { OFF | ON }
  | TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}

<FILESTREAM_option> ::=
{
    NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
  | DIRECTORY_NAME = <directory_name>
}

<HADR_options> ::=
    ALTER DATABASE SET HADR

<mixed_page_allocation_option> ::=
    MIXED_PAGE_ALLOCATION { OFF | ON }

<parameterization_option> ::=
    PARAMETERIZATION { SIMPLE | FORCED }

<query_store_options> ::=
{
    QUERY_STORE
    {
          = OFF [ ( FORCED ) ] 
        | = ON [ ( <query_store_option_list> [,...n] ) ]
        | ( < query_store_option_list> [,...n] )
        | CLEAR [ ALL ]
    }
}

<query_store_option_list> ::=
{
      OPERATION_MODE = { READ_WRITE | READ_ONLY }
    | CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
    | DATA_FLUSH_INTERVAL_SECONDS = number
    | MAX_STORAGE_SIZE_MB = number
    | INTERVAL_LENGTH_MINUTES = number
    | SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
    | QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
    | MAX_PLANS_PER_QUERY = number
    | WAIT_STATS_CAPTURE_MODE = { ON | OFF }
    | QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}

<query_capture_policy_option_list> :: =
{
      STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
    | EXECUTION_COUNT = number
    | TOTAL_COMPILE_CPU_TIME_MS = number
    | TOTAL_EXECUTION_CPU_TIME_MS = number
}

<recovery_option> ::=
{
    RECOVERY { FULL | BULK_LOGGED | SIMPLE }
  | TORN_PAGE_DETECTION { ON | OFF }
  | PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}

<remote_data_archive_option> ::=
{
    REMOTE_DATA_ARCHIVE =
    {
        ON ( SERVER = <server_name> ,
             { 
                  CREDENTIAL = <db_scoped_credential_name>
                  | FEDERATED_SERVICE_ACCOUNT = ON | OFF
             }
        )
        | OFF
    }
}

<service_broker_option> ::=
{
    ENABLE_BROKER
  | DISABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
  | HONOR_BROKER_PRIORITY { ON | OFF}
}

<snapshot_option> ::=
{
    ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
  | READ_COMMITTED_SNAPSHOT { ON | OFF }
  | MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}
<sql_option> ::=
{
    ANSI_NULL_DEFAULT { ON | OFF }
  | ANSI_NULLS { ON | OFF }
  | ANSI_PADDING { ON | OFF }
  | ANSI_WARNINGS { ON | OFF }
  | ARITHABORT { ON | OFF }
  | COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<target_recovery_time_option> ::=
    TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

<termination>::=
{
    ROLLBACK AFTER number [ SECONDS ]
  | ROLLBACK IMMEDIATE
  | NO_WAIT
}

<temporal_history_retention> ::=
    TEMPORAL_HISTORY_RETENTION { ON | OFF }

<data_retention_policy> ::=
    DATA_RETENTION { ON | OFF }

Argumente

database_name

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

CURRENT

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Führt die Aktion in der aktuellen Datenbank aus. CURRENT wird nicht in allen Kontexten für alle Optionen unterstützt. Wenn CURRENT einen Fehler verursacht, geben Sie den Datenbanknamen an.

<accelerated_database_recovery> ::=

Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Aktiviert die schnellere Datenbankwiederherstellung (Accelerated Database Recovery, ADR) für jede Datenbank. Die Standardeinstellung für ADR in SQL Server 2019 (15.x) ist „OFF“. Mit dieser Syntax können Sie eine bestimmte Dateigruppe für die Daten des persistenten Versionsspeichers festlegen. Wenn keine Dateigruppe angegeben wird, wird der PVS in der PRIMARY-Dateigruppe gespeichert. Beispiele und weitere Informationen finden Sie unter Schnellere Datenbankwiederherstellung.

<auto_option> ::=

Steuert automatische Optionen.

AUTO_CLOSE { ON | OFF }

EIN
Die Datenbank wird ordnungsgemäß heruntergefahren, und ihre Ressourcen werden freigegeben, nachdem der letzte Benutzer die Anwendung beendet hat.

Die Datenbank wird automatisch wieder geöffnet, wenn ein Benutzer versucht, die Datenbank erneut zu verwenden. Dieses Verhalten (erneutes Öffnen) tritt auf, wenn ein Benutzer eine USE database_name-Anweisung durchführt. Die Datenbank kann mit auf ON festgelegtem AUTO_CLOSE ordnungsgemäß heruntergefahren werden. Ist dies der Fall, wird die Datenbank erst dann wieder geöffnet, wenn ein Benutzer versucht, die Datenbank beim nächsten Neustart von Datenbank-Engine zu verwenden.

OFF
Die Datenbank bleibt nach dem Beenden der Verwendung durch den letzten Benutzer geöffnet.

Die Option AUTO_CLOSE ist sehr nützlich für Desktopdatenbanken, da mit ihrer Hilfe Datenbankdateien wie reguläre Dateien verwaltet werden können. Sie können verschoben, zur Sicherung kopiert oder sogar per E-Mail an andere Benutzer gesendet werden. AUTO_CLOSE ist ein asynchroner Prozess. Das wiederholte Öffnen und Schließen der Datenbank beeinträchtigt nicht die Leistung.

Hinweis

Die AUTO_CLOSE-Option ist nicht in einer eigenständigen Datenbank oder SQL-Datenbank verfügbar. Sie können den Status dieser Option mithilfe der Spalte is_auto_close_on in der Katalogsicht sys.databases oder der IsAutoClose-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

Ist AUTO_CLOSE auf ON festgelegt, geben einige Spalten in der sys.databases-Katalogsicht sowie die DATABASEPROPERTYEX-Funktion den Wert NULL zurück, da die Datenbank nicht für den Abruf der Daten verfügbar ist. Führen Sie eine USE-Anweisung zum Öffnen der Datenbank aus, um dieses Problem zu beheben.

Für die Datenbankspiegelung muss AUTO_CLOSE auf OFF festgelegt sein.

Wenn die Datenbank auf AUTOCLOSE = ON festgelegt ist, wird mit einem Vorgang, mit dem das automatische Beenden der Datenbank initiiert wird, der Plancache für die Instanz von SQL Server gelöscht. 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. Ab SQL Server 2005 (9.x) Service Pack 2 enthält das SQL Server-Fehlerprotokoll für jeden geleerten Cachespeicher im Plancache die folgende Meldung: SQL 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.

AUTO_CREATE_STATISTICS { ON | OFF }

EIN
Der Abfrageoptimierer erstellt nach Bedarf Statistiken für einzelne Spalten in Abfrageprädikaten, um Abfragepläne und die Abfrageleistung zu verbessern. Diese Statistiken für einzelne Spalten werden erstellt, wenn der Abfrageoptimierer Abfragen kompiliert. Die Statistiken für einzelne Spalten werden nur für Spalten erstellt, die noch nicht der ersten Spalte eines vorhandenen Statistikobjekts entsprechen.

Die Standardeinstellung ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

OFF
Der Abfrageoptimierer erstellt beim Kompilieren von Abfragen keine Statistiken für einzelne Spalten in Abfrageprädikaten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_create_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoCreateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Verwenden der datenbankweiten Statistikoptionen“ unter Statistiken.

INCREMENTAL = ON | OFF

Gilt für: SQL Server (ab SQL Server 2014 (12.x)) und Azure SQL-Datenbank

Legen Sie AUTO_CREATE_STATISTICS auf ON und INCREMENTAL auf ON fest. Dadurch werden automatisch erstellte Statistiken als inkrementell festgelegt, wenn inkrementelle Statistiken unterstützt werden. Der Standardwert ist OFF. Weitere Informationen finden Sie unter CREATE STATISTICS.

AUTO_SHRINK { ON | OFF }

EIN
Die Datenbankdateien sind Kandidaten für das periodische Verkleinern. Legen Sie die Datenbankoption AUTO_SHRINK nicht auf ON fest, es sei denn, besondere Anforderungen machen dies erforderlich. Weitere Informationen finden Sie unter Verkleinern einer Datenbank.

Sowohl Daten- als auch Protokolldateien können automatisch verkleinert werden. AUTO_SHRINK reduziert die Größe des Transaktionsprotokolls nur, wenn Sie die Datenbank auf das SIMPLE-Wiederherstellungsmodell festlegen oder das Protokoll sichern. Wenn Sie AUTO_SHRINK auf OFF festlegen, werden die Datenbankdateien während der periodisch ausgeführten Überprüfung auf nicht verwendeten Speicherplatz nicht automatisch verkleinert.

Die Option AUTO_SHRINK verkleinert eine Datei, wenn mehr als 25 Prozent dieser aus nicht verwendetem Speicherplatz bestehen. Die Datei wird auf eine von zwei Größen verkleinert (je nachdem, welche größer ist):

  • die Größe, bei der 25 Prozent der Datei aus nicht verwendetem Speicherplatz bestehen
  • die Größe der Datei, als sie erstellt wurde

Eine schreibgeschützte Datenbank kann nicht verkleinert werden.

OFF
Die Datenbankdateien werden bei periodischen Prüfungen auf nicht verwendeten Speicherplatz nicht automatisch verkleinert.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_shrink_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoShrink-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Hinweis

Die AUTO_SHRINK-Option ist in einer eigenständigen Datenbank nicht verfügbar.

AUTO_UPDATE_STATISTICS { ON | OFF }

EIN
Gibt an, dass der Abfrageoptimierer Statistiken aktualisiert, wenn sie von einer Abfrage verwendet werden und veraltet sein könnten. Statistiken sind veraltet, wenn die Datenverteilung in der Tabelle oder indizierten Sicht durch die Vorgänge INSERT, UPDATE, DELETE oder MERGE geändert wurde. Der Abfrageoptimierer stellt fest, wann Statistiken veraltet sein könnten, indem er die Anzahl von Datenänderungen seit der letzten Statistikaktualisierung ermittelt und sie mit einem Schwellenwert vergleicht. Der Schwellenwert basiert auf der Anzahl von Zeilen in der Tabelle oder indizierten Sicht.

Bevor der Abfrageoptimierer eine Abfrage kompiliert und einen zwischengespeicherten Abfrageplan ausführt, sucht er nach veralteten Statistiken. Der Abfrageoptimierer ermittelt anhand der Spalten, Tabellen und indizierten Sichten im Abfrageprädikat, welche Statistiken veraltet sein könnten. Der Abfrageoptimierer ermittelt diese Informationen, bevor er eine Abfrage kompiliert. Vor dem Ausführen eines zwischengespeicherten Abfrageplans stellt die Datenbank-Engine sicher, dass der Abfrageplan auf aktuelle Statistiken verweist.

Die AUTO_UPDATE_STATISTICS-Option gilt für Statistikobjekte, die für Indizes, einzelne Spalten in Abfrageprädikaten und mit der CREATE STATISTICS-Anweisung generierte Statistiken erstellt wurden. Diese Option gilt auch für gefilterte Statistiken.

Der Standardwert ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

Verwenden Sie die AUTO_UPDATE_STATISTICS_ASYNC-Option, um anzugeben, ob die Statistiken synchron oder asynchron aktualisiert werden.

OFF
Gibt an, dass der Abfrageoptimierer Statistiken nicht aktualisiert, wenn sie von einer Abfrage verwendet werden. Der Abfrageoptimierer aktualisiert Statistiken auch nicht, wenn sie veraltet sein könnten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_update_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoUpdateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Verwenden der datenbankweiten Statistikoptionen“ unter Statistiken.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

EIN
Gibt an, dass Statistikupdates für die AUTO_UPDATE_STATISTICS-Option asynchron sind. Der Abfrageoptimierer wartet nicht, bis Statistikaktualisierungen abgeschlossen sind, bevor Abfragen kompiliert werden.

Das Festlegen dieser Option auf ON hat nur dann Auswirkungen, wenn AUTO_UPDATE_STATISTICS auf ON festgelegt ist.

Die Standardeinstellung der Option AUTO_UPDATE_STATISTICS_ASYNC ist „OFF“, und der Abfrageoptimierer aktualisiert Statistiken synchron.

OFF
Gibt an, dass Statistikupdates für die AUTO_UPDATE_STATISTICS-Option synchron sind. Der Abfrageoptimierer wartet, bis Statistikupdates abgeschlossen sind, bevor Abfragen kompiliert werden.

Hinweis

Das Festlegen dieser Option auf OFF hat nur dann Auswirkungen, wenn AUTO_UPDATE_STATISTICS auf ON festgelegt ist.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_update_stats_async_on in der sys.databases-Katalogsicht untersuchen.

Weitere Informationen dazu, wann synchrone bzw. asynchrone Statistikupdates verwendet werden sollten, finden Sie im Abschnitt „Statistikoptionen“ unter Statistiken.

<automatic_tuning_option> ::=

Gilt für: SQL Server (ab SQL Server 2017 (14.x))

Aktiviert bzw. deaktiviert die Option FORCE_LAST_GOOD_PLAN für die automatische Optimierung. Sie können den Status dieser Option in der Sicht sys.database_automatic_tuning_options anzeigen.

FORCE_LAST_GOOD_PLAN = { ON | OFF }

EIN
Die Datenbank-Engine erzwingt automatisch den neusten bekannten, geeigneten Plan bei Transact-SQL-Abfragen, bei denen neue Abfragepläne negative Auswirkungen auf die Leistung haben. Die Datenbank-Engine überwacht regelmäßig die Abfrageleistung der Transact-SQL-Abfrage mit dem erzwungenen Plan.

Wenn die Leistung verbessert wurde, verwendet die Datenbank-Engine weiterhin den neusten bekannten, geeigneten Plan. Wenn die Leistung nicht verbessert wurde, erstellt die Datenbank-Engine einen neuen Abfrageplan. Die Anweisung schlägt fehl, wenn der Abfragespeicher nicht aktiviert ist oder sich nicht im Lese-/Schreibmodus befindet.

OFF
Die Datenbank-Engine meldet potentielle Einbußen im Hinblick auf die Abfrageleistung, die von Änderungen des Abfrageplans in der sys.dm_db_tuning_recommendations-Sicht hervorgerufen werden könnten. Diese Empfehlungen werden allerdings nicht automatisch angewendet. Benutzer können aktive Empfehlungen überwachen und ermittelte Probleme beheben, indem sie die in der Sicht aufgeführten Transact-SQL-Skripts anwenden. Der Standardwert ist OFF.

<change_tracking_option> ::=

Gilt für : SQL Server und SQL-Datenbank

Steuert Änderungsnachverfolgungsoptionen. Sie können die Änderungsnachverfolgung aktivieren, Optionen festlegen, Optionen ändern und die Änderungsnachverfolgung deaktivieren. Beispiele hierzu finden Sie im Abschnitt „Beispiele“ weiter unten in diesem Artikel.

EIN
Aktiviert die Änderungsnachverfolgung für die Datenbank. Wenn die Änderungsnachverfolgung aktiviert wird, können auch die AUTO CLEANUP-Option und die CHANGE RETENTION-Option festgelegt werden.

AUTO_CLEANUP = { ON | OFF }
EIN
Die Änderungsnachverfolgungsdaten werden nach der angegebenen Beibehaltungsdauer automatisch entfernt.

OFF
Die Änderungsnachverfolgungsdaten werden nicht automatisch aus der Datenbank entfernt.

CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }

Gibt die Mindestdauer für die Beibehaltung von Änderungsnachverfolgungsdaten in der Datenbank an. Die Daten werden nur dann entfernt, wenn der Wert für AUTO_CLEANUP ON lautet.

retention_period ist ein Integer, der die numerische Komponente der Vermerkdauer angibt.

Die Standardbeibehaltungsdauer beträgt 2 Tage. Die Mindestbeibehaltungsdauer ist 1 Minute. Der Standardtyp für die Beibehaltung ist DAYS.

OFF
Deaktiviert die Änderungsnachverfolgung für die Datenbank. Deaktivieren Sie erst die Änderungsnachverfolgung für alle Tabellen, bevor Sie sie für die Datenbank deaktivieren.

<containment_option> ::=

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Steuert die Einschlussoptionen für Datenbanken.

CONTAINMENT = { NONE | PARTIAL}

Keine
Die Datenbank ist keine eigenständige Datenbank.

PARTIAL
Die Datenbank ist eine eigenständige Datenbank. Wenn für die Datenbank die Replikation, das Aufzeichnen oder das Nachverfolgen von Änderungsdaten aktiviert ist, tritt beim Festlegen des Datenbankeinschlusses auf einen partiellen Einschluss ein Fehler auf. Die Fehlerüberprüfung wird nach einem Fehler beendet. Weitere Informationen zu eigenständigen Datenbanken finden Sie unter Eigenständige Datenbanken.

<cursor_option> ::=

Steuert Cursoroptionen.

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

EIN
Alle beim Commit oder Rollback einer Transaktion geöffneten Cursor werden geschlossen.

OFF
Cursor bleiben beim Commit einer Transaktion geöffnet. Beim Rollback einer Transaktion werden alle Cursor geschlossen, sofern sie nicht als INSENSITIVE oder STATIC definiert sind.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für CURSOR_CLOSE_ON_COMMIT. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die CURSOR_CLOSE_ON_COMMIT für die Sitzung auf OFF festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET CURSOR_CLOSE_ON_COMMIT.

Sie können den Status dieser Option mithilfe der Spalte is_cursor_close_on_commit_on in der Katalogsicht sys.databases oder der IsCloseCursorsOnCommitEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

CURSOR_DEFAULT { LOCAL | GLOBAL }

Gilt für: SQL Server

Steuert, ob der Cursorbereich LOCAL oder GLOBAL verwendet.

LOCAL
Wenn Sie LOCAL angeben und keinen Cursor als GLOBAL definieren, wenn Sie den Cursor erstellen, ist der Gültigkeitsbereich des Cursors lokal. Insbesondere ist der Gültigkeitsbereich des Cursors für den Batch, die gespeicherte Prozedur oder den Trigger lokal, in dem bzw. der Sie ihn erstellt haben. Der Cursorname ist nur innerhalb dieses Bereichs gültig.

Auf den Cursor kann durch lokale Cursorvariablen im Batch, in der gespeicherten Prozedur, im Trigger oder im OUTPUT-Parameter einer gespeicherten Prozedur verwiesen werden. Die Zuordnung des Cursors wird implizit aufgehoben, wenn der Batch, die gespeicherte Prozedur oder der Trigger beendet wird. Die Zuordnung des Cursors wird aufgehoben, außer er wurde zurück in einen OUTPUT-Parameter übergeben. Der Cursor könnte zurück in einen OUTPUT-Parameter übergeben werden. Wenn die Rückgabe des Cursors auf diese Weise erfolgt, wird die Zuordnung des Cursors aufgehoben, wenn die Zuordnung der letzten auf ihn verweisenden Variablen aufgehoben wird, oder wenn der Cursor den Gültigkeitsbereich verlässt.

GLOBAL
Wenn GLOBAL angegeben wurde und beim Erstellen kein Cursor als LOCAL definiert wird, ist der Bereich des Cursors global für die Verbindung. Auf den Cursornamen kann in jeder gespeicherten Prozedur und in jedem Batch verwiesen werden, die bzw. der von der Verbindung ausgeführt wird.

Die Zuordnung des Cursors wird implizit nur aufgehoben, wenn die Verbindung getrennt wird. Weitere Informationen finden Sie unter DECLARE CURSOR.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_local_cursor_default in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsLocalCursorsDefault-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

<data_retention_policy> ::=

Gilt für: nur Azure SQL Edge

DATA_RETENTION { ON | OFF }
EIN
Aktiviert das auf der Datenaufbewahrungsrichtlinie basierende Bereinigen einer Datenbank.

OFF
Deaktiviert das auf der Datenaufbewahrungsrichtlinie basierende Bereinigen einer Datenbank.

<database_mirroring>

Gilt für: SQL Server

Die Argumentbeschreibungen finden Sie unter ALTER DATABASE-Datenbankspiegelung.

<date_correlation_optimization_option> ::=

Gilt für: SQL Server

Steuert die Option DATE_CORRELATION_OPTIMIZATION.

DATE_CORRELATION_OPTIMIZATION { ON | OFF }

EIN
SQL Server verwaltet die Korrelationsstatistiken, wenn zwei beliebige Tabellen in der Datenbank durch eine FOREIGN KEY-Einschränkung verknüpft sind, und die Tabellen über datetime-Spalten verfügen.

OFF
Es werden keine Korrelationsstatistiken verwaltet.

Wenn DATE_CORRELATION_OPTIMIZATION auf ON festgelegt werden soll, darf keine aktive Verbindung mit der Datenbank bestehen, außer der Verbindung, über die die ALTER DATABASE-Anweisung ausgeführt wird. Anschließend werden mehrere Verbindungen unterstützt.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_date_correlation_on in der sys.databases-Katalogsicht ermittelt werden.

<db_encryption_option> ::=

Steuert den Status der Datenbankverschlüsselung.

ENCRYPTION {ON | OFF | SUSPEND | RESUME}
EIN
Legt fest, dass die Datenbank verschlüsselt wird.

OFF
Legt fest, dass die Datenbank nicht verschlüsselt wird.

SUSPEND
Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Kann verwendet werden, um den Verschlüsselungsscan anzuhalten, nachdem TDE aktiviert oder deaktiviert wurde oder der Verschlüsselungsschlüssel geändert wurde.

RESUME
Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Kann verwendet werden, um einen zuvor angehaltenen Verschlüsselungsscan fortzusetzen.

Weitere Informationen finden Sie unter Transparent Data Encryption und Transparent Data Encryption in Azure SQL-Datenbank.

Wenn die Verschlüsselung auf Datenbankebene aktiviert wird, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank als READ ONLY festgelegt sind, tritt beim Datenbankverschlüsselungsvorgang ein Fehler auf.

Sie können den Verschlüsselungsstatus der Datenbank und den Status des Verschlüsselungsscans mithilfe der dynamischen Verwaltungssicht sys.dm_database_encryption_keys anzeigen.

<db_state_option> ::=

Gilt für: SQL Server

Steuert den Status der Datenbank.

OFFLINE
Die Datenbank ist geschlossen, ordnungsgemäß heruntergefahren und als offline gekennzeichnet. Die Datenbank kann nicht geändert werden, während sie als offline gekennzeichnet ist.

ONLINE
Die Datenbank ist geöffnet und kann verwendet werden.

EMERGENCY
Die Datenbank ist als READ_ONLY markiert, die Protokollierung deaktiviert und der Zugriff auf Mitglieder der festen Serverrolle sysadmin beschränkt. Der Status EMERGENCY wird hauptsächlich zu Problembehandlungszwecken verwendet. Beispielsweise kann für eine Datenbank, die wegen einer beschädigten Protokolldatei als fehlerverdächtig gekennzeichnet ist, der Status EMERGENCY festgelegt werden. Durch diese Einstellung wird u. U. für den Systemadministrator der schreibgeschützte Zugriff auf die Datenbank aktiviert. Nur Mitglieder der festen Serverrolle sysadmin können für eine Datenbank den Status NOTFALL festlegen.

Erfordert die ALTER DATABASE-Berechtigung für die Betreffdatenbank, um eine Datenbank in den Status OFFLINE oder EMERGENCY zu ändern, und die ALTER ANY DATABASE-Berechtigung auf Serverebene, um eine Datenbank von OFFLINE in ONLINE zu verschieben.

Sie können den Status dieser Option ermitteln, indem Sie die Spalten state und state_desc in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der Status-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen. Weitere Informationen finden Sie unter Database States.

Für eine Datenbank, die als RESTORING gekennzeichnet ist, kann nicht OFFLINE, ONLINE oder EMERGENCY festgelegt werden. 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.

<db_update_option> ::=

Steuert, ob Updates für die Datenbank zugelassen sind.

READ_ONLY
Benutzer können Daten aus der Datenbank lesen, aber nicht ändern.

Hinweis

Um die Abfrageleistung zu verbessern, sollten Sie vor dem Festlegen einer Datenbank auf READ_ONLY die Statistiken aktualisieren. Wenn weitere Statistiken benötigt werden, nachdem eine Datenbank auf READ_ONLY festgelegt wurde, werden von Datenbank-Engine Statistiken in der Systemdatenbank tempdb erstellt. Weitere Informationen zu Statistiken für eine schreibgeschützte Datenbank finden Sie unter Statistiken.

READ_WRITE
Die Datenbank ist für Lese- und Schreibvorgänge verfügbar.

Sie müssen über exklusiven Zugriff auf die Datenbank verfügen, um diesen Status zu ändern. Weitere Informationen finden Sie unter der SINGLE_USER-Klausel.

Hinweis

Bei Verbunddatenbanken in Azure SQL-Datenbank ist SET { READ_ONLY | READ_WRITE } deaktiviert.

<db_user_access_option> ::=

Steuert den Benutzerzugriff auf die Datenbank.

SINGLE_USER
Gilt für: SQL Server

Gibt an, dass jeweils nur ein Benutzer auf die Datenbank zugreifen kann. Wenn Sie SINGLE_USER angeben und ein anderer Benutzer eine Verbindung mit der Datenbank herstellt, wird die ALTER DATABASE-Anweisung blockiert, bis alle Benutzer die Verbindung mit der angegebenen Datenbank trennen. Informationen zur Außerkraftsetzung dieses Verhaltens finden Sie im Abschnitt zur WITH <termination>-Klausel.

Die Datenbank verbleibt im SINGLE_USER-Modus, selbst wenn sich der Benutzer abmeldet, der die Option festgelegt hat. Dadurch kann ein anderer Benutzer (aber nur einer) eine Verbindung mit der Datenbank herstellen.

Bevor Sie die Datenbank auf SINGLE_USER festlegen, müssen Sie überprüfen, ob die Option AUTO_UPDATE_STATISTICS_ASYNC auf OFF festgelegt ist. Wenn diese Option auf ON festgelegt ist, stellt der Hintergrundthread, der zum Aktualisieren von Statistiken verwendet wird, eine Verbindung mit der Datenbank her, und Sie können im Einzelbenutzermodus nicht auf die Datenbank zugreifen. Fragen Sie zum Anzeigen des Status dieser Option die is_auto_update_stats_async_on-Spalte in der sys.databases-Katalogsicht ab. Wenn die Option auf ON festgelegt wird, sollten Sie folgende Tasks ausführen:

  1. Legen Sie AUTO_UPDATE_STATISTICS_ASYNC auf OFF fest.

  2. Führen Sie eine Überprüfung auf aktive asynchrone Statistikaufträge aus, indem Sie die dynamische Verwaltungssicht sys.dm_exec_background_job_queue abfragen.

Wenn aktive Aufträge vorhanden sind, warten Sie, bis die Aufträge abgeschlossen sind, oder beenden Sie sie manuell mithilfe von KILL STATS JOB.

RESTRICTED_USER
Ermöglicht nur Mitgliedern der festen Datenbankrolle db_owner und der festen Serverrollen dbcreator und sysadmin eine Verbindung mit der Datenbank. RESTRICTED_USER beschränkt nicht deren Anzahl. Trennen Sie alle Verbindungen mit der Datenbank, indem Sie den durch die Beendigungsklausel der ALTER DATABASE-Anweisung angegebenen Zeitraum verwenden. Sobald die Datenbank in den Status RESTRICTED_USER gewechselt hat, werden Verbindungsversuche von nicht qualifizierten Benutzern abgelehnt.

MULTI_USER
Alle Benutzer, die über die entsprechenden Berechtigungen für die Verbindung mit der Datenbank verfügen, sind zugelassen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte user_access in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der UserAccess-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

<delayed_durability_option> ::=

Gilt für: SQL Server (ab SQL Server 2014 (12.x))

Steuert, ob für Transaktionen ein Commit mit vollständiger oder verzögerter Dauerhaftigkeit ausgeführt wird.

DISABLED
Alle Transaktionen nach SET DISABLED sind vollständig dauerhaft. Alle Dauerhaftigkeitsoptionen, die in einem Atomic-Block oder einer Commitanweisung festgelegt sind, werden ignoriert.

ALLOWED
Alle Transaktionen nach SET ALLOWED sind abhängig von der im atomischen Block oder der Commitanweisung festgelegten Dauerhaftigkeitsoption entweder vollständig dauerhaft oder verzögert dauerhaft.

FORCED
Alle Transaktionen nach SET FORCED sind verzögert dauerhaft. Alle Dauerhaftigkeitsoptionen, die in einem Atomic-Block oder einer Commitanweisung festgelegt sind, werden ignoriert.

<external_access_option> ::=

Gilt für: SQL Server

Steuert, ob externe Ressourcen, z. B. Objekte aus einer anderen Datenbank, auf die Datenbank zugreifen können.

DB_CHAINING { ON | OFF }

EIN
Die Datenbank kann Quelle oder Ziel einer datenbankübergreifenden Besitzverkettung sein.

OFF
Die Datenbank kann nicht an der datenbankübergreifenden Besitzverkettung teilnehmen.

Wichtig

Die Instanz von SQL Server erkennt diese Einstellung, wenn die Datenbankübergreifende Besitzverkettung-Serveroption deaktiviert (0 bzw. OFF) ist. Wenn für Datenbankübergreifende Besitzverkettung der Wert 1 (ON) festgelegt ist, können alle Benutzerdatenbanken unabhängig vom Wert dieser Option Teile von datenbankübergreifenden Besitzketten sein. Diese Option wird mit sp_configure festgelegt.

Für das Festlegen dieser Option ist die CONTROL SERVER-Berechtigung für die Datenbank erforderlich.

Die Option „DB_CHAINING“ kann für die Systemdatenbanken master, model und tempdb nicht festgelegt werden.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_db_chaining_on in der sys.databases-Katalogsicht untersuchen.

TRUSTWORTHY { ON | OFF }

EIN
Datenbankmodule (z. B. benutzerdefinierte Funktionen oder gespeicherte Prozeduren), die einen Identitätswechselkontext verwenden, können auf Ressourcen außerhalb der Datenbank zugreifen.

OFF
Datenbankmodule in einem Identitätswechselkontext können nicht auf Ressourcen außerhalb der Datenbank zugreifen.

TRUSTWORTHY wird auf OFF festgelegt, wenn die Datenbank angefügt wird.

Standardmäßig ist TRUSTWORTHY für alle Systemdatenbanken mit Ausnahme der Datenbank msdb auf OFF festgelegt. Für die Datenbanken model und tempdb kann der Wert nicht geändert werden. Für die Datenbank master sollten Sie die Option TRUSTWORTHY niemals auf ON festlegen.

Für das Festlegen dieser Option ist die CONTROL SERVER-Berechtigung für die Datenbank erforderlich.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_trustworthy_on in der sys.databases-Katalogsicht untersuchen.

DEFAULT_FULLTEXT_LANGUAGE

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Gibt den Standardsprachenwert für volltextindizierte Spalten an.

Wichtig

Diese Option ist nur zulässig, wenn CONTAINMENT auf PARTIAL festgelegt wurde. Wenn CONTAINMENT auf NONE festgelegt wird, treten Fehler auf.

DEFAULT_LANGUAGE

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Gibt die Standardsprache für alle neu erstellten Benutzernamen an. Die Sprache kann durch Bereitstellung der lokalen ID (lcid), des Sprachennamens oder des Sprachenalias angegeben werden. Eine Liste mit zulässigen Sprachennamen und -aliasen finden Sie unter sys.syslanguages. Diese Option ist nur zulässig, wenn CONTAINMENT auf PARTIAL festgelegt wurde. Wenn CONTAINMENT auf NONE festgelegt wird, treten Fehler auf.

NESTED_TRIGGERS

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Gibt an, ob ein AFTER-Trigger kaskadiert werden kann, d. h., ob er eine Aktion ausführen kann, durch die ein anderer Trigger initiiert wird, der einen weiteren Trigger initiiert usw. Diese Option ist nur zulässig, wenn CONTAINMENT auf PARTIAL festgelegt wurde. Wenn CONTAINMENT auf NONE festgelegt wird, treten Fehler auf.

TRANSFORM_NOISE_WORDS

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Wird zum Unterdrücken einer Fehlermeldung verwendet, wenn Füllwörter oder Stoppwörter bewirken, dass eine boolesche Operation für eine Volltextabfrage einen Fehler erzeugt. Diese Option ist nur zulässig, wenn CONTAINMENT auf PARTIAL festgelegt wurde. Wenn CONTAINMENT auf NONE festgelegt wird, treten Fehler auf.

TWO_DIGIT_YEAR_CUTOFF

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Gibt eine ganze Zahl zwischen 1753 und 9999 an, die das Umstellungsjahr für das Interpretieren zweistelliger Jahre als vierstellige Jahre darstellt. Diese Option ist nur zulässig, wenn CONTAINMENT auf PARTIAL festgelegt wurde. Wenn CONTAINMENT auf NONE festgelegt wird, treten Fehler auf.

<FILESTREAM_option> ::=

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Steuert die Einstellungen für FileTables.

NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
OFF
Nicht transaktionaler Zugriff auf FileTable-Daten ist deaktiviert.

READ_ONLY
FILESTREAM-Daten in FileTables in dieser Datenbank können von nicht transaktionalen Prozessen gelesen werden.

FULL
Aktiviert vollständigen, nicht transaktionalen Zugriff auf FILESTREAM-Daten in FileTables.

DIRECTORY_NAME = <directory_name>

Ein Windows-kompatibler Verzeichnisname. Dieser Name sollte für alle Verzeichnisnamen auf Datenbankebene in der SQL Server-Instanz eindeutig sein. Bei Eindeutigkeitsvergleichen wird unabhängig von den Sortiereinstellungen die Groß-/Kleinschreibung nicht beachtet. Diese Option muss vor dem Erstellen einer FileTable in dieser Datenbank festgelegt werden.

<HADR_options> ::=

Gilt für: SQL Server

Siehe ALTER DATABASE SET HADR.

<mixed_page_allocation_option> ::=

Gilt für: SQL Server (ab SQL Server 2016 (13.x))

Steuert, ob die Datenbank die ersten Seiten mit einem gemischten Block für die ersten acht Seiten einer Tabelle oder eines Index erstellen kann.

MIXED_PAGE_ALLOCATION { OFF | ON }

OFF
Die Datenbank erstellt die ersten Seiten immer mit gleichartigen Blöcken. OFF ist der Standardwert.

EIN
Die Datenbank erstellt die ersten Seiten immer mit gemischten Blöcken.

Diese Einstellung ist für alle Systemdatenbanken auf ON festgelegt. tempdb ist die einzige Systemdatenbank, die die Einstellung OFF unterstützt.

<PARAMETERIZATION_option> ::=

Steuert die Parametrisierungsoption. Weitere Informationen zur Parametrisierung finden Sie im Handbuch zur Architektur der Abfrageverarbeitung.

PARAMETERIZATION { SIMPLE | FORCED }

SIMPLE
Abfragen werden basierend auf dem Standardverhalten der Datenbank parametrisiert.

FORCED
SQL Server parametrisiert alle Abfragen in der Datenbank.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_parameterization_forced column in der sys.databases-Katalogsicht ermittelt werden.

<query_store_options> ::=

Gilt für: SQL Server (ab SQL Server 2016 (13.x))

ON | OFF [ ( FORCED ) ] | CLEAR [ ALL ]
Überprüft, ob der Abfragespeicher in dieser Datenbank aktiviert ist, und steuert außerdem das Entfernen des Inhalts des Abfragespeichers. Weitere Informationen finden Sie unter Verwendungsszenarios für den Abfragespeicher.

EIN
Aktiviert den Abfragespeicher.

OFF [ ( FORCED ) ]
Deaktiviert den Abfragespeicher. OFF ist der Standardwert. FORCED ist optional. FORCED bricht alle Hintergrundaufgaben, die gerade im Abfragespeicher ausgeführt werden, ab und überspringt die synchrone Leerung, wenn der Abfragespeicher deaktiviert wird. Bewirkt, dass der Abfragespeicher so schnell wie möglich heruntergefahren wird. FORCED gilt für SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 und höhere Builds.

Hinweis

In Azure SQL-Datenbank mit einer Einzeldatenbank oder einem Pool für elastische Datenbanken kann der Abfragespeicher nicht deaktiviert werden. Beim Ausführen von ALTER DATABASE [database] SET QUERY_STORE = OFF wird die Warnung 'QUERY_STORE=OFF' is not supported in this version of SQL Server. zurückgegeben.

CLEAR [ ALL ]
Entfernt abfragebezogene Daten aus dem Abfragespeicher. ALL ist optional. ALL entfernt abfragebezogene Daten und Metadaten aus dem Abfragespeicher.

OPERATION_MODE { READ_ONLY | READ_WRITE }

Beschreibt den Betriebsmodus des Abfragespeichers.

READ_WRITE

In diesem Modus sammelt und speichert der Abfragespeicher Angaben zum Abfrageplan und statistische Informationen zur Laufzeitausführung.

READ_ONLY

Im diesem Modus können Informationen aus dem Abfragespeicher gelesen werden, es werden jedoch keine neuen Informationen hinzugefügt. Wenn der maximal ausgegebene Speicherplatz des Abfragespeichers ausgelastet ist, wird der Betriebsmodus in READ_ONLY geändert.

CLEANUP_POLICY

Beschreibt die Datenaufbewahrungsrichtlinie des Abfragespeichers. STALE_QUERY_THRESHOLD_DAYS bestimmt die Anzahl an Tagen, für die die Informationen für eine Abfrage im Abfragespeicher aufbewahrt werden. STALE_QUERY_THRESHOLD_DAYS weist den Typ bigint auf. Der Standardwert ist 30.

DATA_FLUSH_INTERVAL_SECONDS

Bestimmt die Häufigkeit, mit der in den Abfragespeicher geschriebene Daten auf Datenträger gespeichert werden. Um die Leistung zu optimieren, werden durch den Abfragespeicher gesammelte Daten asynchron auf den Datenträger geschrieben. Die Häufigkeit, mit der diese asynchrone Übertragung stattfindet, wird mit dem Argument DATA_FLUSH_INTERVAL_SECONDS konfiguriert. DATA_FLUSH_INTERVAL_SECONDS weist den Typ bigint auf. Der Standardwert ist 900 (15 Minuten).

MAX_STORAGE_SIZE_MB

Bestimmt den Speicherplatz, der vom Abfragespeicher belegt wird. MAX_SIZE_MB weist den Typ bigint auf. Der Standardwert ist 100 MB für SQL Server (SQL Server 2016 (13.x) durch SQL Server 2017 (14.x)). Ab SQL Server 2019 (15.x) beträgt der Standardwert 1 GB.

Hinweis

Die Begrenzung MAX_STORAGE_SIZE_MB wird nicht streng erzwungen. Die Speichergröße wird nur überprüft, wenn der Abfragespeicher Daten auf einen Datenträger schreibt. Dieses Intervall wird durch die Option DATA_FLUSH_INTERVAL_SECONDS oder die Option Datenleerungsintervall im Dialogfeld des Management Studio-Abfragespeichers festgelegt. Der Standardwert des Intervalls liegt bei 900 Sekunden (oder 15 Minuten). Wenn der Abfragespeicher die Begrenzung MAX_STORAGE_SIZE_MB zwischen Speichergrößenüberprüfungen überschritten hat, wechselt er in den schreibgeschützten Modus. Bei Aktivierung von SIZE_BASED_CLEANUP_MODE wird auch der Bereinigungsmechanismus zum Erzwingen der Begrenzung MAX_STORAGE_SIZE_MB ausgelöst. Sobald ausreichend Speicherplatz befreit wurde, wird der Abfragespeichermodus automatisch in den Lese-/Schreibmodus gewechselt.

Wichtig

Wenn Sie glauben, dass für Ihre Arbeitsauslastungserfassung mehr als 10 GB Speicherplatz benötigt werden, sollten Sie vermutlich die Arbeitsauslastung überdenken und optimieren, um Abfragepläne wiederzuverwenden (z. B. mithilfe von erzwungener Parametrisierung), oder die Abfragespeicherkonfigurationen anpassen.
Ab SQL Server 2019 (15.x) und in Azure SQL-Datenbank können Sie für zusätzliche Kontrolle über die Abfrageerfassungsrichtlinie QUERY_CAPTURE_MODE auf CUSTOM festlegen.

INTERVAL_LENGTH_MINUTES

Bestimmt das Zeitintervall, mit dem statistische Daten zur Laufzeitausführung im Abfragespeicher aggregiert werden. Um die Speicherverwendung zu optimieren, werden die statistischen Daten zur Laufzeitausführung im Speicher für Laufzeitstatistiken über ein festes Zeitfenster aggregiert. Dieses feste Zeitfenster wird mit dem Argument INTERVAL_LENGTH_MINUTES konfiguriert. INTERVAL_LENGTH_MINUTES weist den Typ bigint auf. Der Standardwert lautet 60.

SIZE_BASED_CLEANUP_MODE { AUTO | OFF }

Steuert, ob die Bereinigung automatisch aktiviert wird, wenn sich die Gesamtmenge der Daten der maximalen Größe nähert.

AUTO
Eine auf der Größe basierende Bereinigung wird automatisch aktiviert, wenn die Größe auf dem Datenträger 90 % von MAX_STORAGE_SIZE_MB erreicht. Ein auf der Größe basierendes Cleanup entfernt die am wenigsten aufwendigen und die ältesten Abfragen. Bei ungefähr 80 % von MAX_STORAGE_SIZE_MB wird dieser Vorgang angehalten. Dies ist der Standardkonfigurationswert.

OFF
Eine auf der Größe basierte Bereinigung wird nicht automatisch aktiviert.

SIZE_BASED_CLEANUP_MODE ist vom Typ nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }

Bestimmt den zum aktuellen Zeitpunkt aktiven Abfrageerfassungsmodus. Für jeden Modus sind bestimmte Abfrageerfassungsrichtlinien definiert.

Hinweis

Cursor, Abfragen in gespeicherten Prozeduren und nativ kompilierte Abfragen werden immer erfasst, wenn der Abfrageerfassungsmodus auf ALL, AUTO oder CUSTOM festgelegt ist.

ALL
Erfasst alle Abfragen. ALL ist der Standardkonfigurationswert für SQL Server (SQL Server 2016 (13.x) bis SQL Server 2017 (14.x)).

AUTO
Relevante Abfragen werden anhand der Ausführungsanzahl und des Ressourcenverbrauchs erfasst. Dies ist der Standardkonfigurationswert für SQL Server (ab SQL Server 2019 (15.x)) und Azure SQL-Datenbank.

Keine
Es werden keine weiteren neuen Abfragen erfasst. Der Abfragespeicher sammelt weiterhin Statistiken zur Kompilierung und Runtime für Abfragen, die bereits erfasst wurden. Verwenden Sie diese Konfiguration mit Bedacht, da dadurch möglicherweise wichtige Abfragen verloren gehen.

CUSTOM
Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Ermöglicht die Kontrolle über die QUERY_CAPTURE_POLICY-Optionen.

QUERY_CAPTURE_MODE ist vom Typ nvarchar.

max_plans_per_query

Definiert die maximale Anzahl von Plänen, die für jede Abfrage beibehalten werden. MAX_PLANS_PER_QUERY ist vom Typ int. Der Standardwert ist 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Gilt für: SQL Server (ab SQL Server 2017 (14.x)))

Steuert, ob Wartestatistiken pro Abfrage erfasst werden

EIN
Wartestatistikinformationen pro Abfrage werden erfasst. Dies ist der Standardkonfigurationswert.

OFF
Wartestatistikinformationen pro Abfrage werden nicht erfasst.

<query_capture_policy_option_list> :: =

Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Steuert die Optionen für die Erfassungsrichtlinie des Abfragespeichers. Mit Ausnahme von STALE_CAPTURE_POLICY_THRESHOLD definieren diese Optionen die OR-Bedingungen, die auftreten müssen, damit Abfragen im definierten STALE_CAPTURE_POLICY_THRESHOLD-Wert erfasst werden.

STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }

Definiert den Zeitraum des Auswertungsintervalls um zu bestimmen, ob eine Abfrage erfasst werden sollte. Der Standardwert ist 1 Tag. Sie können Werte zwischen 1 Stunde und sieben Tagen festlegen.

EXECUTION_COUNT = integer

Definiert die Häufigkeit, mit der eine Abfrage im Auswertungszeitraum ausgeführt wird. Der Standardwert ist 30, was bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage mindestens 30 Mal an einem Tag ausgeführt werden muss, um im Abfragespeicher persistent gespeichert zu werden. EXECUTION_COUNT ist vom Typ int.

TOTAL_COMPILE_CPU_TIME_MS = integer

Definiert die gesamte verstrichene Kompilierungs-CPU-Zeit, die eine Abfrage über den Auswertungszeitraum in Anspruch nimmt. Der Standardwert ist 1.000. Dies bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage insgesamt mindestens eine Sekunde CPU-Zeit während der Abfragekompilierung an einem Tag verbraucht haben muss, um im Abfragespeicher persistent gespeichert zu werden. TOTAL_COMPILE_CPU_TIME_MS ist vom Typ int.

TOTAL_EXECUTION_CPU_TIME_MS = integer

Definiert die gesamte verstrichene Ausführungs-CPU-Zeit, die eine Abfrage über den Auswertungszeitraum in Anspruch nimmt. Der Standardwert ist 100, was bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage insgesamt mindestens 100 ms CPU-Zeit während der Ausführung an einem Tag verbraucht haben muss, um im Abfragespeicher persistent gespeichert zu werden. TOTAL_EXECUTION_CPU_TIME_MS ist vom Typ int.

<recovery_option> ::=

Gilt für: SQL Server

Steuert Datenbankwiederherstellungsoptionen und Datenträger-E/A-Fehlerprüfung.

FULL
Stellt nach einem Medienausfall mithilfe von Transaktionsprotokollsicherungen eine vollständige Wiederherstellung bereit. Falls eine Datendatei beschädigt ist, kann die Medienwiederherstellung alle Transaktionen wiederherstellen, für die ein Commit ausgeführt wurde. Weitere Informationen finden Sie unter Wiederherstellungsmodelle.

BULK_LOGGED
Stellt nach einem Medienausfall Wiederherstellung bereit. Kombiniert hierzu die beste Leistung mit der geringsten Verwendung von Protokollspeicher für bestimmte umfangreiche Vorgänge oder Massenvorgänge. Informationen zu Vorgängen, die minimal protokolliert werden können, finden Sie unter Das Transaktionsprotokoll. Bei dem BULK_LOGGED-Wiederherstellungsmodell ist die Protokollierung für diese Vorgänge minimal. Weitere Informationen finden Sie unter Wiederherstellungsmodelle.

SIMPLE
Es wird eine einfache Sicherungsstrategie bereitgestellt, die minimalen Protokollspeicherplatz verwendet. Protokollspeicherplatz kann automatisch erneut verwendet werden, wenn er für die Wiederherstellung nach einem Serverfehler nicht mehr benötigt wird. Weitere Informationen finden Sie unter Wiederherstellungsmodelle.

Wichtig

Das Modell der einfachen Wiederherstellung ist einfacher zu verwalten als die anderen beiden Modelle, jedoch auf Kosten eines höheren Datenverlustes, falls eine Datendatei beschädigt ist. Alle Änderungen, die nach der neuesten Datenbank- oder differenziellen Datenbanksicherung durchgeführt wurden, gehen verloren und müssen manuell erneut eingegeben werden.

Das Standard-Wiederherstellungsmodell wird durch das Wiederherstellungsmodell der Systemdatenbank model bestimmt. Weitere Informationen zum Auswählen des geeigneten Wiederherstellungsmodells finden Sie unter Wiederherstellungsmodelle.

Sie können den Status dieser Option ermitteln, indem Sie die Spalten recovery_model und recovery_model_desc in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der Recovery-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

TORN_PAGE_DETECTION { ON | OFF }

EIN
Unvollständige Seiten können vom Datenbank-Engine erkannt werden.

OFF
Unvollständige Seiten können nicht vom Datenbank-Engine erkannt werden.

Wichtig

Die TORN_PAGE_DETECTION ON | OFF-Syntaxstruktur wird in zukünftigen Versionen von SQL Server entfernt. Vermeiden Sie das Verwenden dieser Syntaxstruktur bei neuen Entwicklungsarbeiten, und planen Sie die Änderung von Anwendungen, die diese Syntaxstruktur zurzeit verwenden. Verwenden Sie stattdessen die Option PAGE_VERIFY.

PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }

Entdeckt Datenbankseiten, die durch Datenträger-E/A-Pfadfehler beschädigt wurden. Datenträger-E/A-Pfadfehler können die Ursache von Datenbankbeschädigungen sein. Diese Fehler werden am häufigsten durch Stromausfälle oder Datenträger-Hardwarefehler verursacht, die beim Schreiben der Seite auf den Datenträger auftreten.

CHECKSUM
Berechnet eine Prüfsumme für den Inhalt der gesamten Seite und speichert den Wert im Seitenkopf, wenn eine Seite auf den Datenträger geschrieben wird. Wenn die Seite vom Datenträger gelesen wird, wird die Prüfsumme erneut berechnet und mit dem im Seitenkopf gespeicherten Prüfsummenwert verglichen. Stimmen die Werte nicht überein, wird Fehlermeldung 824 (Hinweis auf einen Prüfsummenfehler) an das SQL Server-Fehlerprotokoll und an das Windows-Ereignisprotokoll gemeldet. Ein Prüfsummenfehler weist auf ein Problem mit dem E/A-Pfad hin. Um die eigentliche Ursache zu ermitteln, müssen die Hardware, die Firmwaretreiber, das BIOS, die Filtertreiber (z. B. Antivirussoftware) und andere Komponenten des E/A-Pfads untersucht werden.

TORN_PAGE_DETECTION
Speichert ein bestimmtes 2-Bit-Muster für jeden 512-Byte-Sektor in der 8-KB-Datenbankseite und wird im Kopf der Datenbankseite gespeichert, wenn die Seite auf den Datenträger geschrieben wird. Wenn die Seite vom Datenträger gelesen wird, werden die im Seitenkopf gespeicherten zerrissenen Bits mit den tatsächlichen Seitensektorinformationen verglichen.

Nicht übereinstimmende Werte weisen darauf hin, dass nur ein Teil der Seite auf den Datenträger geschrieben wurde. In dieser Situation wird Fehlermeldung 824 (Hinweis auf einen Fehler durch eine zerrissene Seite) an das SQL Server-Fehlerprotokoll und an das Windows-Ereignisprotokoll gemeldet. Zerrissene Seiten werden im Allgemeinen bei der Datenbankwiederherstellung entdeckt, wenn es sich tatsächlich um einen unvollständigen Schreibvorgang für eine Seite handelt. Allerdings können auch andere E/A-Pfadfehler jederzeit eine zerrissene Seite verursachen.

Keine
Schreibvorgänge auf Datenbankseiten generieren keinen CHECKSUM- oder TORN_PAGE_DETECTION-Wert. SQL Server überprüft während eines Lesevorgangs selbst dann keine Prüfsummen oder zerrissenen Seiten, wenn ein CHECKSUM- oder TORN_PAGE_DETECTION-Wert im Seitenkopf vorhanden ist.

Beachten Sie beim Verwenden der PAGE_VERIFY-Option die folgenden wichtigen Punkte:

  • Der Standardwert ist CHECKSUM.

  • Wenn eine Benutzer- oder Systemdatenbank auf SQL Server 2005 (9.x) oder eine höhere Version aktualisiert wird, bleibt der PAGE_VERIFY-Wert (NONE oder TORN_PAGE_DETECTION) unverändert. Sie sollten den Wert in CHECKSUM ändern.

    Hinweis

    In früheren Versionen von SQL Server ist die Datenbankoption „PAGE_VERIFY“ für die Datenbank tempdb auf NONE festgelegt und kann nicht geändert werden. Ab SQL Server 2008 lautet der Standardwert für die Datenbank tempdb für neue Installationen von SQL Server „CHECKSUM“. Bei dem Upgrade einer Installation von SQL Server bleibt der Standardwert NONE. Die Option kann geändert werden. Sie sollten CHECKSUM für die Datenbank tempdb verwenden.

  • TORN_PAGE_DETECTION verwendet zwar weniger Ressourcen, bietet jedoch einen minimalen Teil des Schutzes von CHECKSUM.

  • PAGE_VERIFY kann festgelegt werden, ohne die Datenbank offline zu schalten, zu sperren oder die Parallelität der Datenbank anderweitig zu beeinträchtigen.

  • CHECKSUM und TORN_PAGE_DETECTION schließen sich gegenseitig aus. Beide Optionen können nicht gleichzeitig aktiviert werden.

Bei Entdecken einer zerrissenen Seite oder eines Prüfsummenfehlers können Sie eine Wiederherstellung ausführen, indem Sie die Daten wiederherstellen oder den Index u. U. neu erstellen, wenn der Fehler auf Indexseiten beschränkt ist. Führen Sie DBCC CHECKDB aus, um bei einem Prüfsummenfehler den Typ der betroffenen Datenbankseite(n) zu bestimmen. Weitere Informationen zu RESTORE-Optionen finden Sie unter RESTORE-Argumente. Auch wenn das Datenbeschädigungsproblem durch das Wiederherstellen der Daten behoben wird, sollte die eigentliche Ursache, wie z. B. ein Datenträger-Hardwarefehler, diagnostiziert und baldmöglichst behoben werden, um wiederholte Fehler zu vermeiden.

SQL Server wiederholt Lesevorgänge, die wegen eines Prüfsummenfehlers, einer zerrissenen Seite oder eines anderen E/A-Fehlers fehlschlagen, vier Mal. Ist der Lesevorgang bei einem dieser Wiederholungsversuche erfolgreich, wird eine Meldung in das Fehlerprotokoll geschrieben. Der Befehl, der den Lesevorgang ausgelöst hat, wird fortgesetzt. Schlagen alle Wiederholungsversuche fehl, schlägt der Befehl mit Fehlermeldung 824 fehl.

Weitere Informationen zu den Fehlermeldungen 823, 824 und 825 finden Sie unter:

Die aktuelle Einstellung dieser Option kann mithilfe der page_verify_option-Spalte in der sys.databases-Katalogsicht oder der IsTornPageDetectionEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion ermittelt werden.

<remote_data_archive_option> ::=

Gilt für: SQL Server (ab SQL Server 2016 (13.x))

Aktiviert bzw. Deaktiviert Stretch Database für die Datenbank. Weitere Informationen finden Sie unter Stretch Database.

REMOTE_DATA_ARCHIVE = {ON (SERVER = <server_name> , {CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ON | OFF})| OFF

EIN
Aktiviert Stretch Database für die Datenbank. Weitere Informationen, einschließlich zusätzlicher Voraussetzungen, finden Sie unter Aktivieren von Stretch Database für eine Datenbank.

Erfordert die db_owner-Berechtigung, um Stretch Database für eine Tabelle zu aktivieren. Erfordert die db_owner- und CONTROL DATABASE-Berechtigungen, um Stretch Database für eine Datenbank zu aktivieren.

SERVER = <server_name>

Gibt die Adresse des Azure-Servers an. Fügen Sie den .database.windows.net-Anteil des Namens ein. Beispiel: MyStretchDatabaseServer.database.windows.net.

CREDENTIAL = <db_scoped_credential_name>

Gibt die datenbankbezogenen Anmeldeinformationen an, die die Instanz von SQL Server verwendet, um eine Verbindung mit dem Azure-Server herzustellen. Vergewissern Sie sich, dass die Anmeldinformationen bestehen, bevor Sie den Befehl ausführen. Weitere Informationen finden Sie unter CREATE DATABASE SCOPED CREDENTIAL.

FEDERATED_SERVICE_ACCOUNT = { ON | OFF }

Sie können ein Verbunddienstkonto verwenden, damit SQL Server lokal mit dem Azure-Remoteserver kommunizieren kann, wenn sämtliche der folgenden Bedingungen zutreffen.

  • Das Dienstkonto, unter dem die SQL Server-Instanz ausgeführt wird, ist ein Domänenkonto.
  • Das Domänenkonto gehört zu einer Domäne, deren Active Directory mit Azure Active Directory verbunden ist.
  • Der Azure-Remoteserver wird konfiguriert, um die Azure Active Directory-Authentifizierung zu unterstützen.
  • Das Dienstkonto, unter dem die SQL Server-Instanz ausgeführt wird, muss auf dem Azure-Remoteserver als ein dbmanager- oder sysadmin-Konto konfiguriert worden sein.

Wenn Sie angeben, dass das Konto des Verbunddiensts ON ist, können Sie nicht auch noch das CREDENTIAL-Argument angeben. Wenn Sie Off angeben, geben Sie gleichzeitig auch das CREDENTIAL-Argument an.

OFF
Deaktiviert Stretch Database für die Datenbank. Weitere Informationen finden Sie unter Deaktivieren von Stretch Database und Zurückholen von Remotedaten.

Sie können Stretch Database für eine Datenbank erst deaktivieren, wenn diese keine Tabellen mehr enthält, die für Stretch Database aktiviert sind. Nachdem Sie Stretch Database deaktiviert haben, wird die Datenmigration beendet. Außerdem enthalten Abfrageergebnisse keine Ergebnisse mehr aus Remotetabellen.

Wenn Stretch Database deaktiviert wird, wird die Remotedatenbank nicht entfernt. Das Löschen der Remotedatenbank muss über das Azure-Portal erfolgen.

<service_broker_option> ::=

Gilt für: SQL Server

Steuert die folgenden Service Broker-Optionen: Aktivieren oder Deaktivieren der Nachrichtenübermittlung, Festlegen eines neuen Service Broker-Bezeichners oder Festlegen der Konversationsprioritäten auf ON oder OFF.

ENABLE_BROKER

Gibt an, dass Service Broker für die angegebene Datenbank aktiviert ist. Die Nachrichtenübermittlung ist gestartet, und das is_broker_enabled-Flag ist in der sys.databases-Katalogsicht auf TRUE festgelegt. Die Datenbank behält den vorhandenen Service Broker-Bezeichner bei. Service Broker kann nicht aktiviert werden, während die Datenbank der Prinzipal in einer Datenbank-Spiegelungskonfiguration ist.

Hinweis

ENABLE_BROKER benötigt eine exklusive Datenbanksperre. Wenn Ressourcen in der Datenbank durch andere Sitzungen gesperrt wurden, wartet ENABLE_BROKER, bis die anderen Sitzungen ihre Sperren freigeben. Um Service Broker in einer Benutzerdatenbank zu aktivieren, sollten Sie sicherstellen, dass keine anderen Sitzungen auf die Datenbank zugreifen, bevor Sie die Anweisung ALTER DATABASE SET ENABLE_BROKER ausführen. Versetzen Sie die Datenbank beispielsweise in den Einzelbenutzermodus. Um Service Broker in der msdb-Datenbank zu aktivieren, beenden Sie zunächst den SQL Server-Agenten, sodass Service Broker die erforderliche Sperre abrufen kann.

DISABLE_BROKER

Gibt an, dass Service Broker für die angegebene Datenbank deaktiviert ist. Die Nachrichtenübermittlung ist angehalten, und das is_broker_enabled-Flag ist in der sys.databases-Katalogsicht auf FALSE festgelegt. Die Datenbank behält den vorhandenen Service Broker-Bezeichner bei.

NEW_BROKER

Gibt an, dass die Datenbank einen neuen Broker-Bezeichner erhalten sollte. Die Datenbank fungiert als neuer Service Broker. Somit werden alle bestehenden Konversationen in der Datenbank sofort entfernt, ohne Nachrichten über das Beenden des Dialogs zu erstellen. Jede Route, die auf den alten Service Broker-Bezeichner verweist, muss mit dem neuen Bezeichner neu erstellt werden.

ERROR_BROKER_CONVERSATIONS

Gibt an, dass die Service Broker-Nachrichtenübermittlung aktiviert ist. Mit dieser Einstellung wird der vorhandene Service Broker-Bezeichner für die Datenbank beibehalten. Service Broker beendet alle Konversationen in der Datenbank mit einem Fehler. Diese Einstellung ermöglicht Anwendungen, reguläre Cleanups für bestehende Konversationen ausführen.

HONOR_BROKER_PRIORITY {ON | OFF}

EIN
Bei Sendevorgängen werden die den Konversationen zugewiesenen Prioritätsstufen berücksichtigt. Nachrichten aus Konversationen mit hohen Prioritätsstufen werden in der Regel vor Nachrichten aus Konversationen mit niedrigen Prioritätsstufen gesendet.

OFF
Sendevorgänge werden so ausgeführt, als ob alle Konversationen die Standardprioritätsstufe haben.

Änderungen an der HONOR_BROKER_PRIORITY-Option treten bei neuen Dialogfeldern oder Dialogfeldern, in denen keine Nachrichten darauf warten, gesendet zu werden, sofort in Kraft. Dialogfelder mit Nachrichten, die gesendet werden sollen, wenn ALTER DATABASE ausgeführt wird, übernehmen die neue Einstellung erst, nachdem einige Nachrichten für das Dialogfeld gesendet wurden. Es kann unterschiedlich lange dauern, bis in allen Dialogfeldern die neue Einstellung verwendet wird.

Die aktuelle Einstellung dieser Eigenschaft wird in der is_broker_priority_honored-Spalte der sys.databases-Katalogsicht angezeigt.

<snapshot_option> ::=

Berechnet die Isolationsstufe für die Transaktionen.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

EIN
Aktiviert die Momentaufnahmeoption auf Datenbankebene. Wenn die Option aktiviert ist, beginnen DML-Anweisungen mit der Generierung von Zeilenversionen, auch wenn keine Transaktion die Momentaufnahmeisolation verwendet. Sobald diese Option aktiviert ist, können Transaktionen die SNAPSHOT-Transaktionsisolationsstufe angeben. Wenn eine Transaktion auf der SNAPSHOT-Isolationsebene ausgeführt wird, sehen alle Anweisungen eine Momentaufnahme der Daten, wie sie beim Start der Transaktion vorlagen. Greift eine Transaktion, die auf der SNAPSHOT-Isolationsstufe ausgeführt wird, auf Daten in mehreren Datenbanken zu, muss entweder in allen Datenbanken ALLOW_SNAPSHOT_ISOLATION auf ON festgelegt sein oder jede Anweisung in der Transaktion muss Sperrhinweise für alle Verweise in einer FROM-Klausel verwenden, die auf eine Tabelle in einer Datenbank verweisen, bei der ALLOW_SNAPSHOT_ISOLATION auf OFF festgelegt ist.

OFF
Deaktiviert die Momentaufnahmeoption auf Datenbankebene. Transaktionen können die SNAPSHOT-Isolationsstufe für Transaktionen nicht angeben.

Wenn Sie ALLOW_SNAPSHOT_ISOLATION auf einen neuen Status festlegen (von ON zu OFF oder von OFF zu ON), gibt ALTER DATABASE die Kontrolle erst dann an den Aufrufer zurück, wenn ein Commit aller bestehenden Transaktionen in der Datenbank ausgeführt wurde. Hat die Datenbank bereits den in der ALTER DATABASE-Anweisung angegebenen Status, wird die Kontrolle direkt an den Aufrufer zurückgegeben. Wenn keine schnelle Rückgabe durch die ALTER DATABASE-Anweisung erfolgt, verwenden Sie sys.dm_tran_active_snapshot_database_transactions, um zu bestimmen, ob lang andauernde Transaktionen vorhanden sind. Wird die ALTER DATABASE-Anweisung abgebrochen, bleibt die Datenbank in dem Status, in dem sie sich vor dem Start von ALTER DATABASE befand. In der sys.databases-Katalogsicht wird der Status von Isolationstransaktionen von Momentaufnahmen in der Datenbank angegeben. Wenn „snapshot_isolation_state_desc = IN_TRANSITION_TO_ON“ gilt, wartet der Befehl ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF sechs Sekunden lang ab und versucht dann, den Vorgang zu wiederholen.

Sie können den Status von ALLOW_SNAPSHOT_ISOLATION nicht ändern, wenn die Datenbank OFFLINE ist.

Wenn Sie ALLOW_SNAPSHOT_ISOLATION in einer READ_ONLY-Datenbank festlegen, wird die Einstellung gespeichert, wenn die Datenbank später auf READ_WRITE festgelegt wird.

Sie können die ALLOW_SNAPSHOT_ISOLATION-Einstellungen für die Datenbanken master, model, msdb und tempdb ändern. Wenn Sie die Einstellung für tempdb ändern, wird die Einstellung jedes Mal beibehalten, wenn die Instanz von Datenbank-Engine beendet und neu gestartet wird. Wenn Sie die Einstellung für model ändern, wird die Einstellung zur Standardeinstellung für alle neu erstellten Datenbanken, mit Ausnahme von tempdb.

Die Option ist für die Datenbanken master und msdb standardmäßig auf ON festgelegt.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte snapshot_isolation_state in der sys.databases-Katalogsicht ermittelt werden.

READ_COMMITTED_SNAPSHOT { ON | OFF }

EIN
Aktiviert die Option READ COMMITTED-Snapshot auf Datenbankebene. Wenn die Option aktiviert ist, beginnen DML-Anweisungen mit der Generierung von Zeilenversionen, auch wenn keine Transaktion die Momentaufnahmeisolation verwendet. Sobald diese Option aktiviert ist, verwenden Transaktionen, die die Read Committed-Isolationsstufe angeben, anstelle von Sperren die Zeilenversionsverwaltung. Wenn eine Transaktion auf der READ COMMITTED-Isolationsstufe ausgeführt wird, sehen alle Anweisungen eine Momentaufnahme der Daten, wie sie beim Start der Anweisung vorlagen.

OFF
Deaktiviert die Option READ COMMITTED-Snapshot auf Datenbankebene. Transaktionen, die die READ COMMITTED-Isolationsstufe angeben, verwenden Sperren.

Wenn READ_COMMITTED_SNAPSHOT auf ON oder OFF festgelegt werden soll, dürfen außer der Verbindung, die den ALTER DATABASE-Befehl ausführt, keine aktiven Verbindungen zur Datenbank bestehen. Die Datenbank muss sich jedoch nicht im Einzelbenutzermodus befinden. Sie können den Status dieser Option nicht ändern, wenn die Datenbank OFFLINE ist.

Wenn Sie READ_COMMITTED_SNAPSHOT in einer READ_ONLY-Datenbank festlegen, wird die Einstellung beibehalten, wenn die Datenbank später auf READ_WRITE festgelegt wird.

READ_COMMITTED_SNAPSHOT kann für die Systemdatenbanken master, tempdb und msdb nicht auf ON festgelegt werden. Wenn Sie die Einstellung für model ändern, wird die Einstellung zur Standardeinstellung für alle neu erstellten Datenbanken, mit Ausnahme von tempdb.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_read_committed_snapshot_on in der sys.databases-Katalogsicht ermittelt werden.

Warnung

Wenn eine Tabelle mit DURABILITY = SCHEMA_ONLY erstellt wird und READ_COMMITTED_SNAPSHOT anschließend mithilfe von ALTER DATABASE geändert wird, gehen Daten in der Tabelle verloren.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

Gilt für: SQL Server (ab SQL Server 2014 (12.x))

EIN
Wenn die Isolationsstufe für Transaktionen auf eine niedrigere Isolationsstufe als SNAPSHOT festgelegt wird, werden alle interpretierten Transact-SQL-Vorgänge für speicheroptimierte Tabelle unter der Isolationsstufe SNAPSHOT ausgeführt. Beispiele für Isolationsstufen, die niedriger als SNAPSHOT sind, sind READ COMMITTED oder READ UNCOMMITTED. Diese Vorgänge erfolgen ungeachtet des Umstands, ob die Transaktionsisolationsstufe explizit auf der Sitzungsebene festgelegt ist, oder ob implizit die Standardeinstellung verwendet wird.

OFF
Erhöht nicht die Isolationsstufe für Transaktionen für interpretierte Transact-SQL-Vorgänge für speicheroptimierte Tabellen.

Sie können den Status von MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT nicht ändern, wenn die Datenbank OFFLINE ist.

Die Standardoption ist OFF.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_memory_optimized_elevate_to_snapshot_on in der sys.databases-Katalogsicht ermittelt werden.

<sql_option> ::=

Steuert die ANSI-Kompatibilitätsoptionen auf der Datenbankebene.

ANSI_NULL_DEFAULT { ON | OFF }

Legt den Standardwert (NULL oder NOT NULL) einer Spalte oder CLR user-defined type fest, für den die NULL-Zulässigkeit nicht explizit in den CREATE TABLE- oder ALTER TABLE-Anweisungen festgelegt wurde. Spalten, die mit Einschränkungen definiert werden, folgen den Einschränkungsregeln, egal wie diese Einstellung lautet.

EIN
Der Standardwert für eine nicht definierte Spalte ist NULL.

OFF
Der Standardwert für eine nicht definierte Spalte ist NOT NULL.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_NULL_DEFAULT. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_NULL_DEFAULT für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_NULL_DFLT_ON.

Für die ANSI-Kompatibilität wird durch Festlegen der Datenbankoption ANSI_NULL_DEFAULT auf ON der Datenbankstandardwert auf NULL geändert.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_null_default_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiNullDefault-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_NULLS { ON | OFF }

EIN
Alle Vergleiche mit einem Nullwert ergeben UNKNOWN.

OFF
Vergleiche von Nicht-UNICODE-Werten mit einem Nullwert ergeben TRUE, wenn beide Werte NULL sind.

Wichtig

In einer späteren Version von SQL Server wird ANSI_NULLS immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt wird, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_NULLS. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_NULLS für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_NULLS.

Wichtig

SET ANSI_NULLS muss ebenfalls auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_nulls_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiNullsEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_PADDING { ON | OFF }

EIN
Zeichenfolgen werden vor der Konvertierung auf dieselbe Länge aufgefüllt. Sie werden auch vor dem Einfügen in einen varchar- oder nvarchar-Datentyp durch Einfügen von Leerstellen auf dieselbe Länge gebracht.

OFF
Fügt nachfolgende Leerräume in Zeichenwerte in varchar oder nvarchar-Spalten ein. Belässt außerdem nachfolgende Nullen in Binärwerten, die in varbinary-Spalten eingefügt werden. Werte werden nicht bis zur Spaltenlänge aufgefüllt.

Ist OFF festgelegt, wirkt sich diese Einstellung nur auf die Definition neuer Spalten aus.

Wichtig

In einer späteren Version von SQL Server wird ANSI_PADDING immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt ist, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Es wird empfohlen, für ANSI_PADDING stets den Wert ON festzulegen. ANSI_PADDING muss beim Erstellen oder Bearbeiten von Indizes für berechnete Spalten oder indizierte Sichten auf ON festgelegt sein.

char(n) - und binary(n) -Spalten, die NULL-Werte zulassen, werden bis zur Spaltenlänge aufgefüllt, wenn ANSI_PADDING auf ON festgelegt ist. Ist ANSI_PADDING hingegen auf OFF festgelegt, werden nachfolgende Leerzeichen und Nullen abgeschnitten. char(n) - und binary(n) -Spalten, die keine NULL-Werte zulassen, werden immer bis zur Spaltenlänge aufgefüllt.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_PADDING. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_PADDING für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_PADDING.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_padding_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiPaddingEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_WARNINGS { ON | OFF }

EIN
Fehler und Warnungen werden ausgegeben, wenn z.B. ein Fehler wegen „Division durch Null“ auftritt. Fehler oder Warnungen werden ebenfalls ausgegeben, wenn Nullwerte in Aggregatfunktionen auftreten.

OFF
Bei Bedingungen wie einer Division durch Null werden keine Warnungen ausgegeben, und Nullwerte werden zurückgegeben.

Wichtig

SET ANSI_WARNINGS muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_WARNINGS. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_WARNINGS für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_WARNINGS.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_warnings_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiWarningsEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ARITHABORT { ON | OFF }

EIN
Eine Abfrage wird beendet, wenn während der Abfrage ein Überlauffehler oder ein Fehler aufgrund einer Division durch Null auftritt.

OFF
Eine Warnmeldung wird angezeigt, wenn einer dieser Fehler auftritt. Die Verarbeitung der Abfrage, des Batches oder der Transaktion wird fortgesetzt, als wäre kein Fehler aufgetreten, selbst wenn eine Warnung angezeigt wird.

Wichtig

SET ARITHABORT muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_arithabort_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsArithmeticAbortEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 }

Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

EIN
Das Ergebnis einer Verkettungsoperation ist NULL, wenn einer der Operanden NULL ist. Wenn z. B. die Zeichenfolge „This is“ und NULL verkettet werden und NULL den NULL-Wert anstelle des „This is“-Werts zurückgibt.

OFF
Der Nullwert wird als leere Zeichenfolge behandelt.

[WICHTIG] CONCAT_NULL_YIELDS_NULL muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

In zukünftigen Versionen von SQL Server wird CONCAT_NULL_YIELDS_NULL immer auf ON festgelegt, und jede Anwendung, die für die Option explizit OFF festlegt, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für CONCAT_NULL_YIELDS_NULL. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die CONCAT_NULL_YIELDS_NULL für die Sitzung auf ON festgelegt wird, wenn sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET CONCAT_NULL_YIELDS_NULL.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_concat_null_yields_null_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsNullConcat-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

NUMERIC_ROUNDABORT { ON | OFF }

EIN
Es wird ein Fehler generiert, wenn ein Genauigkeitsverlust in einem Ausdruck auftritt.

OFF
Bei einem Genauigkeitsverlust wird keine Fehlermeldung generiert, und das Ergebnis wird auf die Genauigkeit der Spalte oder Variablen gerundet, die das Ergebnis speichert.

Wichtig

NUMERIC_ROUNDABORT muss auf OFF festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option in der Spalte is_numeric_roundabort_on in der sys.databases-Katalogsicht ermitteln. Sie können den Status auch durch Untersuchen der IsNumericRoundAbortEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

QUOTED_IDENTIFIER { ON | OFF }

EIN
Doppelte Anführungszeichen können nur zum Einschließen von Begrenzungsbezeichnern verwendet werden.

Alle Zeichenfolgen, die durch doppelte Anführungszeichen begrenzt werden, werden als Objektbezeichner interpretiert. Bezeichner in Anführungszeichen müssen nicht den Transact-SQL-Regeln für Bezeichner entsprechen. Sie können Schlüsselwörter darstellen und Zeichen einschließen, die in Transact-SQL-Bezeichnern nicht zulässig sind. Ein einfaches Anführungszeichen (’), das zur Literalzeichenfolge selbst gehört, kann durch doppelte Anführungszeichen (’’) dargestellt werden.

OFF
Bezeichner dürfen nicht in Anführungszeichen eingeschlossen werden und müssen allen Transact-SQL-Regeln für Bezeichner entsprechen. Literale können in einfache oder doppelte Anführungszeichen eingeschlossen werden.

In SQL Server ist es zudem möglich, Bezeichner durch eckige Klammern ([ ]) zu begrenzen. Bezeichner in eckigen Klammern können immer verwendet werden, egal wie die Einstellung für QUOTED_IDENTIFIER lautet. Weitere Informationen finden Sie unter Datenbankbezeichner.

Beim Erstellen einer Tabelle wird die Option QUOTED IDENTIFIER immer als ON in den Metadaten der Tabelle gespeichert. Die Option wird gespeichert, selbst wenn die Option beim Erstellen der Tabelle auf OFF festgelegt ist.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für QUOTED_IDENTIFIER. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die QUOTED_IDENTIFIER auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET QUOTED_IDENTIFIER.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_quoted_identifier_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsQuotedIdentifiersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

RECURSIVE_TRIGGERS { ON | OFF }

EIN
Das rekursive Auslösen von AFTER-Triggern ist zugelassen.

OFF
Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_recursive_triggers_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsRecursiveTriggersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Hinweis

Nur die direkte Rekursion wird verhindert, wenn RECURSIVE_TRIGGERS auf OFF festgelegt ist. Sie müssen auch die Geschachtelte Trigger-Serveroption auf 0 festlegen, um die indirekte Rekursion zu deaktivieren.

Sie können den Status dieser Option mithilfe der Spalte is_recursive_triggers_on in der Katalogsicht sys.databases oder der IsRecursiveTriggersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

<target_recovery_time_option> ::=

Gilt für: SQL Server (ab SQL Server 2012 (11.x))

Gibt die Frequenz indirekter Prüfpunkte auf Basis einzelner Datenbanken an. Ab SQL Server 2016 (13.x) beträgt der Standardwert für neue Datenbanken, der darauf hindeutet, dass Datenbanken indirekte Prüfpunkte verwendet werden, eine Minute. Der Standard für ältere Versionen ist 0 (null) und gibt an, dass die Datenbank automatische Prüfpunkte verwendet, deren Frequenz von der Einstellung für das Wiederherstellungsintervall der Serverinstanz abhängt. Für Microsoft ist für die meisten Systeme eine Minute empfohlen.

TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

target_recovery_time
Gibt die maximale Grenze für die Zeit an, die für die Wiederherstellung der angegebenen Datenbank im Fall eines Fehlers aufgewendet wird. target_recovery_time ist vom Typ int.

SECONDS
Gibt an, dass target_recovery_time die Anzahl von Sekunden darstellt.

MINUTES
Gibt an, dass target_recovery_time die Anzahl von Minuten darstellt.

Weitere Informationen zu indirekten Prüfpunkten finden Sie unter Datenbankprüfpunkte.

WITH <termination> ::=

Gibt an, wann beim Übergang der Datenbank von einem Status in einen anderen für unvollständige Transaktionen ein Rollback ausgeführt werden soll. Wird die Beendigungsklausel ausgelassen, wartet die ALTER DATABASE-Anweisung auf unbestimmte Zeit, wenn keine Sperre für die Datenbank besteht. Es kann nur eine Beendigungsklausel angegeben werden, und diese steht hinter den SET-Klauseln.

Hinweis

Nicht alle Datenbankoptionen verwenden die WITH <termination>-Klausel. Weitere Informationen finden Sie in der Tabelle unter Festlegen von Optionen im Abschnitt „Hinweise“ dieses Artikels.

ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Gibt an, ob ein Rollback sofort oder nach Ablauf der angegebenen Sekundenzahl ausgeführt werden soll.

NO_WAIT
Gibt an, dass die Anforderung fehlschlägt, wenn diese Änderung des Datenbankstatus oder der Datenbankoption nicht sofort vollständig vorgenommen werden kann. Der sofortige Abschluss des Vorgangs bedeutet, dass nicht darauf gewartet wird, dass Transaktionen eigenständig einen Commit oder Rollback ausführen.

Festlegen von Optionen

Verwenden Sie die sys.databases-Katalogsicht oder DATABASEPROPERTYEX, um die aktuellen Einstellungen für Datenbankoptionen abzurufen.

Wenn Sie eine Datenbankoption festlegen, tritt die neue Einstellung sofort in Kraft.

Sie können die Standardwerte einer Datenbankoption für alle neu erstellten Datenbanken ändern. Ändern Sie hierfür die entsprechende Datenbankoption in der Datenbank model.

Nicht alle Datenbankoptionen verwenden die WITH <termination>-Klausel oder können zusammen mit anderen Optionen festgelegt werden. In der folgenden Tabelle sind die Optionen und ihr Options- und Beendigungsstatus aufgeführt.

Optionskategorie Kann mit anderen Optionen angegeben werden Kann WITH <termination>-Klausel verwenden
<db_state_option> Ja Ja
<db_user_access_option> Ja Ja
<db_update_option> Ja Ja
<delayed_durability_option> Ja Ja
<external_access_option> Ja Nein
<cursor_option> Ja Nein
<auto_option> Ja Nein
<sql_option> Ja Nein
<recovery_option> Ja Nein
<target_recovery_time_option> Nein Ja
<database_mirroring_option> Nein Nein
ALLOW_SNAPSHOT_ISOLATION Nein Nein
READ_COMMITTED_SNAPSHOT Nein Ja
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT Ja Ja
<service_broker_option> Ja Nein
DATE_CORRELATION_OPTIMIZATION Ja Ja
<parameterization_option> Ja Ja
<change_tracking_option> Ja Ja
<db_encryption_option> Ja Nein
<accelerated_database_recovery> Ja Ja

Der Plancache für die Instanz von SQL Server wird gelöscht, indem eine der folgenden Optionen festgelegt wird:

OFFLINE

ONLINE

MODIFY_NAME

COLLATE

READ_ONLY

READ_WRITE

MODIFY FILEGROUP DEFAULT

MODIFY FILEGROUP READ_WRITE

MODIFY FILEGROUP READ_ONLY

Der Plancache wird auch in den folgenden Szenarios 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.

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 Infonachricht: SQL 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.

Beispiele

A. Festlegen von Optionen für eine Datenbank

Im folgenden Beispiel werden die Optionen für das Wiederherstellungsmodell und die Datenseitenüberprüfung für die AdventureWorks2012-Beispieldatenbank festgelegt.

USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO

B. Festlegen der Datenbank auf READ_ONLY

Für die Änderung des Status einer Datenbank oder Dateigruppe in READ_ONLY oder READ_WRITE wird der exklusive Zugriff auf die Datenbank benötigt. Im folgenden Beispiel wird die Datenbank auf den SINGLE_USER-Modus festgelegt, um exklusiven Zugriff zu erhalten. Anschließend wird in dem Beispiel der Status der AdventureWorks2012-Datenbank auf READ_ONLY festgelegt und der Zugriff auf die Datenbank an alle Benutzer zurückgegeben.

Hinweis

In diesem Beispiel wird die Beendigungsoption WITH ROLLBACK IMMEDIATE in der ersten ALTER DATABASE-Anweisung verwendet. Für alle unvollständigen Transaktionen wird ein Rollback ausgeführt, und alle anderen Verbindungen zur AdventureWorks2012-Datenbank werden sofort getrennt.

USE master;
GO
ALTER DATABASE [database_name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

C. Aktivieren der Momentaufnahmeisolation für eine Datenbank

Im folgenden Beispiel wird die Option für das Momentaufnahmeisolations-Framework für die AdventureWorks2012-Datenbank aktiviert.

USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO

Das Resultset zeigt, dass das Framework für die Momentaufnahmeisolation aktiviert ist.

name snapshot_isolation_state description
[database_name] 1 EIN

D: Aktivieren, Ändern und Deaktivieren der Änderungsnachverfolgung

Im folgenden Beispiel wird die Änderungsnachverfolgung für die AdventureWorks2012-Datenbank aktiviert und die Aufbewahrungsdauer auf 2 Tage festgelegt.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

Das folgende Beispiel veranschaulicht, wie die Beibehaltungsdauer in 3 Tage geändert wird.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

Das folgende Beispiel veranschaulicht, wie die Änderungsnachverfolgung für die AdventureWorks2012-Datenbank deaktiviert wird.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

E. Aktivieren des Abfragespeichers

Gilt für: SQL Server (ab SQL Server 2016 (13.x))

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      QUERY_CAPTURE_MODE = AUTO,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60
    );

F. Aktivieren des Abfragespeichers mit Wartestatistiken

Gilt für: SQL Server (ab SQL Server 2017 (14.x))

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
    );

G. Aktivieren des Abfragespeichers mit benutzerdefinierten Erfassungsrichtlinienoptionen

Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
      QUERY_CAPTURE_MODE = CUSTOM,
      QUERY_CAPTURE_POLICY = (
        STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
        EXECUTION_COUNT = 30,
        TOTAL_COMPILE_CPU_TIME_MS = 1000,
        TOTAL_EXECUTION_CPU_TIME_MS = 100
      )
    );

Siehe auch

* SQL-Datenbank *  

 

SQL-Datenbank

Kompatibilitätsgrade sind SET-Optionen, die jedoch unter ALTER DATABASE-Kompatibilitätsgrad beschrieben werden.

Hinweis

Viele DATABASE SET-Optionen können mithilfe von SET-Anweisungen konfiguriert werden; häufig werden sie bei der Verbindung von Anwendungen konfiguriert. Die ALTER DATABASE SET-Werte werden durch SET-Optionen auf Sitzungsebene überschrieben. Die unten beschriebenen Datenbankoptionen entsprechen Werten, die für Sitzungen festgelegt werden können, von denen explizit keine weiteren Werte für SET-Optionen bereitgestellt werden.

Syntax

ALTER DATABASE { database_name | Current }
SET
{
    <option_spec> [ ,...n ] [ WITH <termination> ]
}
;

<option_spec> ::=
{
    <auto_option>
  | <automatic_tuning_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
}
;

<auto_option> ::=
{
    AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
  | AUTO_SHRINK { ON | OFF }
  | AUTO_UPDATE_STATISTICS { ON | OFF }
  | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<automatic_tuning_option> ::=
{
    AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
  | AUTOMATIC_TUNING ( CREATE_INDEX = { DEFAULT | ON | OFF } )
  | AUTOMATIC_TUNING ( DROP_INDEX = { DEFAULT | ON | OFF } )
  | AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}

<change_tracking_option> ::=
{
    CHANGE_TRACKING
    {
        = OFF
      | = ON [ ( <change_tracking_option_list > [,...n] ) ]
      | ( <change_tracking_option_list> [,...n] )
    }
}

<change_tracking_option_list> ::=
   {
       AUTO_CLEANUP = { ON | OFF }
     | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
   }

<cursor_option> ::=
{
    CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}

<db_encryption_option> ::=
  ENCRYPTION { ON | OFF }

<db_update_option> ::=
  { READ_ONLY | READ_WRITE }

<db_user_access_option> ::=
  { RESTRICTED_USER | MULTI_USER }

<delayed_durability_option> ::= DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }

<parameterization_option> ::=
  PARAMETERIZATION { SIMPLE | FORCED }

<query_store_options> ::=
{
  QUERY_STORE
  {
      = OFF
    | = ON [ ( <query_store_option_list> [,... n] ) ]
    | ( < query_store_option_list> [,... n] )
    | CLEAR [ ALL ]
  }
}

<query_store_option_list> ::=
{
  OPERATION_MODE = { READ_WRITE | READ_ONLY }
  | CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
  | DATA_FLUSH_INTERVAL_SECONDS = number
  | MAX_STORAGE_SIZE_MB = number
  | INTERVAL_LENGTH_MINUTES = number
  | SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
  | QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
  | MAX_PLANS_PER_QUERY = number
  | WAIT_STATS_CAPTURE_MODE = { ON | OFF }
  | QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}

<query_capture_policy_option_list> :: =
{
    STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
    | EXECUTION_COUNT = number
    | TOTAL_COMPILE_CPU_TIME_MS = number
    | TOTAL_EXECUTION_CPU_TIME_MS = number
}

<snapshot_option> ::=
{
    ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
  | READ_COMMITTED_SNAPSHOT {ON | OFF }
  | MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT {ON | OFF }
}
<sql_option> ::=
{
    ANSI_NULL_DEFAULT { ON | OFF }
  | ANSI_NULLS { ON | OFF }
  | ANSI_PADDING { ON | OFF }
  | ANSI_WARNINGS { ON | OFF }
  | ARITHABORT { ON | OFF }
  | COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<termination>::=
{
    ROLLBACK AFTER integer [ SECONDS ]
  | ROLLBACK IMMEDIATE
  | NO_WAIT
}

<temporal_history_retention>::=TEMPORAL_HISTORY_RETENTION { ON | OFF }

Argumente

database_name

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

CURRENT
CURRENT führt die Aktion in der aktuellen Datenbank aus. CURRENT wird nicht in allen Kontexten für alle Optionen unterstützt. Wenn CURRENT einen Fehler verursacht, geben Sie den Datenbanknamen an.

<auto_option> ::=

Steuert automatische Optionen.

AUTO_CREATE_STATISTICS { ON | OFF }

EIN
Der Abfrageoptimierer erstellt nach Bedarf Statistiken für einzelne Spalten in Abfrageprädikaten, um Abfragepläne sowie die Abfrageleistung zu verbessern. Diese Statistiken für einzelne Spalten werden erstellt, wenn der Abfrageoptimierer Abfragen kompiliert. Die Statistiken für einzelne Spalten werden nur für Spalten erstellt, die noch nicht der ersten Spalte eines vorhandenen Statistikobjekts entsprechen.

Der Standardwert ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

OFF
Der Abfrageoptimierer erstellt beim Kompilieren von Abfragen keine Statistiken für einzelne Spalten in Abfrageprädikaten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_create_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoCreateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Statistikoptionen“ unter Statistiken.

INCREMENTAL = ON | OFF

Legen Sie AUTO_CREATE_STATISTICS auf ON und INCREMENTAL auf ON fest. Diese Einstellung erstellt automatisch Statistiken als inkrementell, wann immer inkrementelle Statistiken unterstützt werden. Der Standardwert ist OFF. Weitere Informationen finden Sie unter CREATE STATISTICS.

AUTO_SHRINK { ON | OFF }

EIN
Die Datenbankdateien sind Kandidaten für das periodische Verkleinern. Legen Sie die Datenbankoption AUTO_SHRINK nicht auf ON fest, es sei denn, besondere Anforderungen machen dies erforderlich. Weitere Informationen finden Sie unter Verkleinern einer Datenbank.

Sowohl Daten- als auch Protokolldateien können automatisch verkleinert werden. AUTO_SHRINK reduziert die Größe des Transaktionsprotokolls nur, wenn Sie die Datenbank auf das SIMPLE-Wiederherstellungsmodell festlegen oder das Protokoll sichern. Ist diese Option auf OFF festgelegt, werden die Datenbankdateien während der periodisch ausgeführten Überprüfung auf nicht verwendeten Speicherplatz nicht automatisch verkleinert.

Durch die Option AUTO_SHRINK werden Dateien dann verkleinert, wenn mehr als 25 Prozent der Datei aus nicht verwendetem Speicherplatz bestehen. Die Option bewirkt, dass die Datei, auf eine von zwei Größen verkleinert wird. Sie wird auf den jeweils größeren Wert verkleinert:

  • die Größe, bei der 25 Prozent der Datei aus nicht verwendetem Speicherplatz bestehen
  • die Größe der Datei, als sie erstellt wurde

Eine schreibgeschützte Datenbank kann nicht verkleinert werden.

OFF
Die Datenbankdateien werden bei periodischen Prüfungen auf nicht verwendeten Speicherplatz nicht automatisch verkleinert.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_shrink_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoShrink-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Hinweis

Die AUTO_SHRINK-Option ist in einer eigenständigen Datenbank nicht verfügbar.

AUTO_UPDATE_STATISTICS { ON | OFF }

EIN
Gibt an, dass der Abfrageoptimierer Statistiken aktualisiert, wenn sie von einer Abfrage verwendet werden und veraltet sein könnten. Statistiken sind veraltet, wenn die Datenverteilung in der Tabelle oder indizierten Sicht durch die Vorgänge INSERT, UPDATE, DELETE oder MERGE geändert wurde. Der Abfrageoptimierer stellt fest, wann Statistiken veraltet sein könnten, indem er die Anzahl von Datenänderungen seit der letzten Statistikaktualisierung ermittelt und sie mit einem Schwellenwert vergleicht. Der Schwellenwert basiert auf der Anzahl von Zeilen in der Tabelle oder indizierten Sicht.

Bevor der Abfrageoptimierer eine Abfrage kompiliert und einen zwischengespeicherten Abfrageplan ausführt, sucht er nach veralteten Statistiken. Der Abfrageoptimierer ermittelt anhand der Spalten, Tabellen und indizierten Sichten im Abfrageprädikat, welche Statistiken veraltet sein könnten. Der Abfrageoptimierer ermittelt diese Informationen, bevor er eine Abfrage kompiliert. Vor dem Ausführen eines zwischengespeicherten Abfrageplans stellt die Datenbank-Engine sicher, dass der Abfrageplan auf aktuelle Statistiken verweist.

Die AUTO_UPDATE_STATISTICS-Option gilt für Statistikobjekte, die für Indizes, einzelne Spalten in Abfrageprädikaten und mit der CREATE STATISTICS-Anweisung generierte Statistiken erstellt wurden. Diese Option gilt auch für gefilterte Statistiken.

Der Standardwert ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

Verwenden Sie die AUTO_UPDATE_STATISTICS_ASYNC-Option, um anzugeben, ob die Statistiken synchron oder asynchron aktualisiert werden.

OFF
Gibt an, dass der Abfrageoptimierer Statistiken nicht aktualisiert, wenn sie von einer Abfrage verwendet werden. Der Abfrageoptimierer aktualisiert Statistiken auch nicht, wenn sie veraltet sein könnten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_update_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoUpdateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Statistikoptionen“ unter Statistiken.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

EIN
Gibt an, dass Statistikupdates für die AUTO_UPDATE_STATISTICS-Option asynchron sind. Der Abfrageoptimierer wartet nicht, bis Statistikaktualisierungen abgeschlossen sind, bevor Abfragen kompiliert werden.

Das Festlegen dieser Option auf ON hat nur dann Auswirkungen, wenn AUTO_UPDATE_STATISTICS auf ON festgelegt ist.

Die AUTO_UPDATE_STATISTICS_ASYNC-Option ist standardmäßig auf OFF festgelegt, sodass der Abfrageoptimierer Statistiken synchron aktualisiert.

OFF
Gibt an, dass Statistikupdates für die AUTO_UPDATE_STATISTICS-Option synchron sind. Der Abfrageoptimierer wartet, bis Statistikupdates abgeschlossen sind, bevor Abfragen kompiliert werden.

Das Festlegen dieser Option auf OFF hat nur dann Auswirkungen, wenn AUTO_UPDATE_STATISTICS auf ON festgelegt ist.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_update_stats_async_on in der sys.databases-Katalogsicht untersuchen.

Weitere Informationen dazu, wann synchrone bzw. asynchrone Statistikupdates verwendet werden sollten, finden Sie im Abschnitt „Statistikoptionen“ unter Statistiken.

<automatic_tuning_option> ::=

Steuert automatische Optionen für die automatische Optimierung. Sie können die Optionen für die folgenden Einstellungen im Azure-Portal oder per T-SQL in der Sicht sys.database_automatic_tuning_options anzeigen.

AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }

AUTO
Durch Festlegen des Werts AUTOMATIC_TUNING auf AUTO werden die Azure-Konfigurationsstandards für die automatische Optimierung festgelegt. Im Azure-Portal spiegelt dies die Option für „Erben von: Azure-Standardwerte“ wider.

INHERIT
Durch das Verwenden des Werts INHERIT wird die Standardkonfiguration vom übergeordneten Server geerbt. Im Azure-Portal spiegelt dies die Option für „Erben von: Server“ wider. Dies ist besonders nützlich, wenn Sie die Konfiguration für die automatische Optimierung auf einem übergeordneten Server anpassen möchten und alle Datenbanken auf dem Server diese benutzerdefinierten Einstellung erben sollen. Beachten Sie, dass die drei Optimierungsoptionen „FORCE_LAST_GOOD_PLAN“, „CREATE_INDEX“ und „DROP_INDEX“ auf diesen Datenbanken auf „DEFAULT“ festgelegt sein müssen, damit die Vererbung funktioniert.

CUSTOM
Durch das Verwenden des CUSTOM-Werts müssen Sie alle in den Datenbanken verfügbaren Optionen für die automatische Optimierung benutzerdefiniert konfigurieren. Im Azure-Portal spiegelt dies die Option für „Erben von: Nicht erben“ wider.

CREATE_INDEX = { DEFAULT | ON | OFF }

Aktiviert oder deaktiviert die automatische Indexverwaltungsoption CREATE_INDEX der automatischen Optimierung. Sie können den Status für diese Option im Azure-Portal oder per T-SQL in der Sicht sys.database_automatic_tuning_options anzeigen.

DEFAULT
Standardeinstellungen werden vom Server geerbt. In diesem Fall werden die Optionen für das Aktivieren oder Deaktivieren der einzelnen Features für die automatische Optimierung auf Serverebene definiert.

EIN
Wenn diese Option aktiviert ist, werden fehlende Indizes automatisch für eine Datenbank generiert. Nach der Indexerstellung wird überprüft, ob sich die Leistung der Workload verbessert hat. Wenn ein erstellter Index die Workloadleistung nicht mehr verbessert, wird er automatisch zurückgesetzt. Automatische erstellte Indizes werden als systemgenerierte Indizes gekennzeichnet.

OFF
Fehlende Indizes werden nicht automatisch in der Datenbank generiert.

DROP_INDEX = { DEFAULT | ON | OFF }

Aktiviert oder deaktiviert die automatische Indexverwaltungsoption DROP_INDEX der automatischen Optimierung. Sie können den Status für diese Option im Azure-Portal oder per T-SQL in der Sicht sys.database_automatic_tuning_options anzeigen.

DEFAULT
Standardeinstellungen werden vom Server geerbt. In diesem Fall werden die Optionen für das Aktivieren oder Deaktivieren der einzelnen Features für die automatische Optimierung auf Serverebene definiert.

EIN
Indizes, die doppelt vorhanden sind oder nicht mehr für die Workloadleistung benötigt werden, werden automatisch gelöscht.

OFF
Fehlende Indizes werden nicht automatisch für die Datenbank gelöscht.

FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }

Aktiviert oder deaktiviert die automatische Plankorrekturoption FORCE_LAST_GOOD_PLAN der automatischen Optimierung. Sie können den Status für diese Option im Azure-Portal oder per T-SQL in der Sicht sys.database_automatic_tuning_options anzeigen.

DEFAULT
Standardeinstellungen werden vom Server geerbt. In diesem Fall werden die Optionen für das Aktivieren oder Deaktivieren der einzelnen Features für die automatische Optimierung auf Serverebene definiert. Dies ist der Standardwert. Der Standardwert für neue Azure SQL-Server ist ON. Dies bedeutet, dass neue Datenbanken standardmäßig die Einstellung ON erben.

EIN
Die Datenbank-Engine erzwingt automatisch den neusten bekannten, geeigneten Plan bei Transact-SQL-Abfragen, bei denen neue Abfragepläne negative Auswirkungen auf die Leistung haben. Die Datenbank-Engine überwacht regelmäßig die Abfrageleistung der Transact-SQL-Abfrage mit dem erzwungenen Plan. Wenn die Leistung verbessert wurde, verwendet die Datenbank-Engine weiterhin den neusten bekannten, geeigneten Plan. Wenn die Leistung nicht verbessert wurde, erstellt die Datenbank-Engine einen neuen Abfrageplan. Bei der Anweisung tritt ein Fehler auf, wenn der Abfragespeicher nicht aktiviert ist oder sich nicht im Lese-/Schreibmodus befindet.

OFF
Die Datenbank-Engine meldet potentielle Einbußen im Hinblick auf die Abfrageleistung, die von Änderungen des Abfrageplans in der sys.dm_db_tuning_recommendations-Sicht hervorgerufen werden könnten. Diese Empfehlungen werden allerdings nicht automatisch angewendet. Benutzer können aktive Empfehlungen überwachen und ermittelte Probleme beheben, indem sie die in der Sicht aufgeführten Transact-SQL-Skripts anwenden.

<change_tracking_option> ::=

Steuert Änderungsnachverfolgungsoptionen. Sie können die Änderungsnachverfolgung aktivieren, Optionen festlegen, Optionen ändern und die Änderungsnachverfolgung deaktivieren. Beispiele hierzu finden Sie im Abschnitt „Beispiele“ weiter unten in diesem Artikel.

EIN
Aktiviert die Änderungsnachverfolgung für die Datenbank. Wenn die Änderungsnachverfolgung aktiviert wird, können auch die AUTO CLEANUP-Option und die CHANGE RETENTION-Option festgelegt werden.

AUTO_CLEANUP = { ON | OFF }

EIN
Die Änderungsnachverfolgungsdaten werden nach der angegebenen Beibehaltungsdauer automatisch entfernt.

OFF
Die Änderungsnachverfolgungsdaten werden nicht aus der Datenbank entfernt.

CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }

Gibt die Mindestdauer für die Beibehaltung von Änderungsnachverfolgungsdaten in der Datenbank an. Die Daten werden nur dann entfernt, wenn der Wert für AUTO_CLEANUP ON lautet.

retention_period ist ein Integer, der die numerische Komponente der Vermerkdauer angibt.

Die Standardbeibehaltungsdauer beträgt 2 Tage. Die Mindestbeibehaltungsdauer ist 1 Minute. Der Standardtyp für die Beibehaltung ist DAYS.

OFF
Deaktiviert die Änderungsnachverfolgung für die Datenbank. Deaktivieren Sie erst die Änderungsnachverfolgung für alle Tabellen, bevor Sie sie für die Datenbank deaktivieren.

<cursor_option> ::=

Steuert Cursoroptionen.

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

EIN
Alle beim Commit oder Rollback einer Transaktion geöffneten Cursor werden geschlossen.

OFF
Cursor bleiben beim Commit einer Transaktion geöffnet. Beim Rollback einer Transaktion werden alle Cursor geschlossen, sofern sie nicht als INSENSITIVE oder STATIC definiert sind.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für CURSOR_CLOSE_ON_COMMIT. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die CURSOR_CLOSE_ON_COMMIT für die Sitzung auf OFF festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET CURSOR_CLOSE_ON_COMMIT.

Sie können den Status dieser Option mithilfe der Spalte is_cursor_close_on_commit_on in der Katalogsicht sys.databases oder der IsCloseCursorsOnCommitEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln. Die Zuordnung des Cursors wird implizit nur aufgehoben, wenn die Verbindung getrennt wird. Weitere Informationen finden Sie unter DECLARE CURSOR.

<db_encryption_option> ::=

Steuert den Status der Datenbankverschlüsselung.

ENCRYPTION { ON | OFF }

Legt fest, ob die Datenbank verschlüsselt (ON) oder nicht verschlüsselt (OFF) werden soll. Weitere Informationen finden Sie unter Transparent Data Encryption und Transparent Data Encryption in Azure SQL-Datenbank.

Wenn die Verschlüsselung auf Datenbankebene aktiviert wird, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank als READ ONLY festgelegt sind, tritt beim Datenbankverschlüsselungsvorgang ein Fehler auf.

Der Verschlüsselungsstatus der Datenbank wird mit der dynamischen Verwaltungssicht sys.dm_database_encryption_keys angezeigt.

<db_update_option> ::=

Steuert, ob Updates für die Datenbank zugelassen sind.

READ_ONLY
Benutzer können Daten aus der Datenbank lesen, aber nicht ändern.

Hinweis

Um die Abfrageleistung zu verbessern, sollten Sie vor dem Festlegen einer Datenbank auf READ_ONLY die Statistiken aktualisieren. Wenn weitere Statistiken benötigt werden, nachdem eine Datenbank auf READ_ONLY festgelegt wurde, werden von Datenbank-Engine Statistiken in tempdb erstellt. Weitere Informationen zu Statistiken für eine schreibgeschützte Datenbank finden Sie unter Statistiken.

READ_WRITE
Die Datenbank ist für Lese- und Schreibvorgänge verfügbar.

Sie müssen über exklusiven Zugriff auf die Datenbank verfügen, um diesen Status zu ändern. Weitere Informationen finden Sie unter der SINGLE_USER-Klausel.

Hinweis

Bei Verbunddatenbanken in Azure SQL-Datenbank ist SET { READ_ONLY | READ_WRITE } deaktiviert.

<db_user_access_option> ::=

Steuert den Benutzerzugriff auf die Datenbank.

RESTRICTED_USER
Ermöglicht nur Mitgliedern der festen Datenbankrolle db_owner und der festen Serverrollen dbcreator und sysadmin eine Verbindung mit der Datenbank, begrenzt jedoch nicht deren Anzahl. Alle Verbindungen zur Datenbank werden in dem durch die Beendigungsklausel der ALTER DATABASE-Anweisung angegebenen Zeitraum getrennt. Sobald die Datenbank in den Status RESTRICTED_USER gewechselt hat, werden Verbindungsversuche von nicht qualifizierten Benutzern abgelehnt. RESTRICTED_USER kann nicht mit SQL Managed Instance geändert werden.

MULTI_USER
Alle Benutzer, die über die entsprechenden Berechtigungen für die Verbindung mit der Datenbank verfügen, sind zugelassen.

Sie können den Status dieser Option mithilfe der Spalte user_access in der Katalogsicht sys.databases oder der UserAccess-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

<delayed_durability_option> ::=
Steuert, ob für Transaktionen ein Commit mit vollständiger oder verzögerter Dauerhaftigkeit ausgeführt wird.

DISABLED
Alle Transaktionen nach SET DISABLED sind vollständig dauerhaft. Alle Dauerhaftigkeitsoptionen, die in einem Atomic-Block oder einer Commitanweisung festgelegt sind, werden ignoriert.

ALLOWED
Alle Transaktionen nach SET ALLOWED sind abhängig von der im atomischen Block oder der Commitanweisung festgelegten Dauerhaftigkeitsoption entweder vollständig dauerhaft oder verzögert dauerhaft.

FORCED
Alle Transaktionen nach SET FORCED sind verzögert dauerhaft. Alle Dauerhaftigkeitsoptionen, die in einem Atomic-Block oder einer Commitanweisung festgelegt sind, werden ignoriert.

<PARAMETERIZATION_option> ::=
Steuert die Parametrisierungsoption.

PARAMETERIZATION { SIMPLE | FORCED }

SIMPLE
Abfragen werden basierend auf dem Standardverhalten der Datenbank parametrisiert.

FORCED
SQL Server parametrisiert alle Abfragen in der Datenbank.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_parameterization_forced in der sys.databases-Katalogsicht ermittelt werden.

<query_store_options> ::=

ON | OFF | CLEAR [ ALL ]
Überprüft, ob der Abfragespeicher in dieser Datenbank aktiviert ist, und steuert außerdem das Entfernen des Inhalts des Abfragespeichers.

EIN
Aktiviert den Abfragespeicher. ON ist der Standardwert.

OFF
Deaktiviert den Abfragespeicher.

Hinweis

In Azure SQL-Datenbank mit einer Einzeldatenbank oder einem Pool für elastische Datenbanken kann der Abfragespeicher nicht deaktiviert werden. Beim Ausführen von ALTER DATABASE [database] SET QUERY_STORE = OFF wird die Warnung 'QUERY_STORE=OFF' is not supported in this version of SQL Server. zurückgegeben.

CLEAR
Entfernt den Inhalt des Abfragespeichers.

OPERATION_MODE

Beschreibt den Betriebsmodus des Abfragespeichers. Gültige Werte sind READ_ONLY und READ_WRITE. Im Modus READ_WRITE sammelt und speichert der Abfragespeicher Angaben zum Abfrageplan und statistische Informationen zur Laufzeitausführung. Im Modus READ_ONLY können Informationen aus dem Abfragespeicher gelesen werden, es werden jedoch keine neuen Informationen hinzugefügt. Wenn die maximale Speicherplatzbelegung des Abfragespeichers ausgelastet ist, wird der Betriebsmodus in READ_ONLY geändert.

CLEANUP_POLICY

Beschreibt die Datenaufbewahrungsrichtlinie des Abfragespeichers. STALE_QUERY_THRESHOLD_DAYS bestimmt die Anzahl an Tagen, für die die Informationen für eine Abfrage im Abfragespeicher aufbewahrt werden. STALE_QUERY_THRESHOLD_DAYS weist den Typ bigint auf. Der Standardwert ist 30. Für die Basic Edition von SQL-Datenbank ist der Standardwert 7 Tage.

DATA_FLUSH_INTERVAL_SECONDS

Bestimmt die Häufigkeit, mit der in den Abfragespeicher geschriebene Daten auf Datenträger gespeichert werden. Um die Leistung zu optimieren, werden durch den Abfragespeicher gesammelte Daten asynchron auf den Datenträger geschrieben. Die Häufigkeit, mit der diese asynchrone Übertragung stattfindet, wird mit dem Argument DATA_FLUSH_INTERVAL_SECONDS konfiguriert. DATA_FLUSH_INTERVAL_SECONDS weist den Typ bigint auf. Der Standardwert ist 900 (15 Minuten).

MAX_STORAGE_SIZE_MB

Bestimmt den Speicherplatz, der vom Abfragespeicher belegt wird. MAX_SIZE_MB weist den Typ bigint auf. Der Standardwert für die Premium Edition von SQL-Datenbank liegt bei 1 GB, für die Basic Edition von SQL-Datenbank bei 10 MB.

Hinweis

Die Grenze für die Einstellung MAX_STORAGE_SIZE_MB ist bei Azure SQL-Datenbank 10.240 MB.

Hinweis

Die Begrenzung MAX_STORAGE_SIZE_MB wird nicht streng erzwungen. Die Speichergröße wird nur überprüft, wenn der Abfragespeicher Daten auf einen Datenträger schreibt. Dieses Intervall wird durch die Option DATA_FLUSH_INTERVAL_SECONDS oder die Option Datenleerungsintervall im Dialogfeld des Management Studio-Abfragespeichers festgelegt. Der Standardwert des Intervalls liegt bei 900 Sekunden (oder 15 Minuten). Wenn der Abfragespeicher die Begrenzung MAX_STORAGE_SIZE_MB zwischen Speichergrößenüberprüfungen überschritten hat, wechselt er in den schreibgeschützten Modus. Bei Aktivierung von SIZE_BASED_CLEANUP_MODE wird auch der Bereinigungsmechanismus zum Erzwingen der Begrenzung MAX_STORAGE_SIZE_MB ausgelöst. Sobald ausreichend Speicherplatz befreit wurde, wird der Abfragespeichermodus automatisch in den Lese-/Schreibmodus gewechselt.

Wichtig

Wenn Sie glauben, dass für Ihre Arbeitsauslastungserfassung mehr als 10 GB Speicherplatz benötigt werden, sollten Sie vermutlich die Arbeitsauslastung überdenken und optimieren, um Abfragepläne wiederzuverwenden (z. B. mithilfe von erzwungener Parametrisierung), oder die Abfragespeicherkonfigurationen anpassen.
Ab SQL Server 2019 (15.x) und in Azure SQL-Datenbank können Sie für zusätzliche Kontrolle über die Abfrageerfassungsrichtlinie QUERY_CAPTURE_MODE auf CUSTOM festlegen.

INTERVAL_LENGTH_MINUTES

Bestimmt das Zeitintervall, mit dem statistische Daten zur Laufzeitausführung im Abfragespeicher aggregiert werden. Um die Speicherverwendung zu optimieren, werden die statistischen Daten zur Laufzeitausführung im Speicher für Laufzeitstatistiken über ein festes Zeitfenster aggregiert. Dieses feste Zeitfenster wird mit dem Argument INTERVAL_LENGTH_MINUTES konfiguriert. INTERVAL_LENGTH_MINUTES weist den Typ bigint auf. Der Standardwert lautet 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }

Steuert, ob die Bereinigung automatisch aktiviert wird, wenn sich die Gesamtmenge der Daten der maximalen Größe nähert.

OFF
Eine auf der Größe basierte Bereinigung wird nicht automatisch aktiviert.

AUTO
Eine auf der Größe basierende Bereinigung wird automatisch aktiviert, wenn die Größe auf dem Datenträger 90 Prozent von max_storage_size_mb übersteigt. Ein auf der Größe basierendes Cleanup entfernt die am wenigsten aufwendigen und die ältesten Abfragen. Bei ungefähr 80 Prozent von max_storage_size_mb wird dieser Vorgang angehalten. Dies ist der Standardkonfigurationswert.

SIZE_BASED_CLEANUP_MODE ist vom Typ nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }

Bestimmt den zum aktuellen Zeitpunkt aktiven Abfrageerfassungsmodus. Für jeden Modus sind bestimmte Abfrageerfassungsrichtlinien definiert.

Hinweis

Cursor, Abfragen in gespeicherten Prozeduren und nativ kompilierte Abfragen werden immer erfasst, wenn der Abfrageerfassungsmodus auf ALL, AUTO oder CUSTOM festgelegt ist.

ALL
Erfasst alle Abfragen.

AUTO
Relevante Abfragen werden anhand der Ausführungsanzahl und des Ressourcenverbrauchs erfasst. Dies ist der Standardkonfigurationswert für Azure SQL-Datenbank.

Keine
Es werden keine weiteren neuen Abfragen erfasst. Der Abfragespeicher sammelt weiterhin Statistiken zur Kompilierung und Runtime für Abfragen, die bereits erfasst wurden. Verwenden Sie diese Konfiguration mit Bedacht, da dadurch möglicherweise wichtige Abfragen verloren gehen.

CUSTOM
Ermöglicht die Kontrolle über die QUERY_CAPTURE_POLICY-Optionen.

QUERY_CAPTURE_MODE ist vom Typ nvarchar.

max_plans_per_query

Definiert die maximale Anzahl von Plänen, die für jede Abfrage beibehalten werden. MAX_PLANS_PER_QUERY ist vom Typ int. Der Standardwert ist 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Steuert, ob Wartestatistiken pro Abfrage erfasst werden

EIN
Wartestatistikinformationen pro Abfrage werden erfasst. Dies ist der Standardkonfigurationswert.

OFF
Wartestatistikinformationen pro Abfrage werden nicht erfasst.

<query_capture_policy_option_list> :: =

Steuert die Optionen für die Erfassungsrichtlinie des Abfragespeichers. Mit Ausnahme von STALE_CAPTURE_POLICY_THRESHOLD definieren diese Optionen die OR-Bedingungen, die auftreten müssen, damit Abfragen im definierten STALE_CAPTURE_POLICY_THRESHOLD-Wert erfasst werden.

STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }

Definiert den Zeitraum des Auswertungsintervalls um zu bestimmen, ob eine Abfrage erfasst werden sollte. Der Standardwert ist 1 Tag. Sie können Werte zwischen 1 Stunde und sieben Tagen festlegen. number ist vom Datentyp int.

EXECUTION_COUNT = integer

Definiert die Häufigkeit, mit der eine Abfrage im Auswertungszeitraum ausgeführt wird. Der Standardwert ist 30, was bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage mindestens 30 Mal an einem Tag ausgeführt werden muss, um im Abfragespeicher persistent gespeichert zu werden. EXECUTION_COUNT ist vom Typ int.

TOTAL_COMPILE_CPU_TIME_MS = integer

Definiert die gesamte verstrichene Kompilierungs-CPU-Zeit, die eine Abfrage über den Auswertungszeitraum in Anspruch nimmt. Der Standardwert ist 1.000. Dies bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage insgesamt mindestens eine Sekunde CPU-Zeit während der Abfragekompilierung an einem Tag verbraucht haben muss, um im Abfragespeicher persistent gespeichert zu werden. TOTAL_COMPILE_CPU_TIME_MS ist vom Typ int.

TOTAL_EXECUTION_CPU_TIME_MS = integer

Definiert die gesamte verstrichene Ausführungs-CPU-Zeit, die eine Abfrage über den Auswertungszeitraum in Anspruch nimmt. Der Standardwert ist 100, was bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage insgesamt mindestens 100 ms CPU-Zeit während der Ausführung an einem Tag verbraucht haben muss, um im Abfragespeicher persistent gespeichert zu werden. TOTAL_EXECUTION_CPU_TIME_MS ist vom Typ int.

<snapshot_option> ::=

Bestimmt die Isolationsstufe für Transaktionen.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

EIN
Aktiviert die Momentaufnahmeoption auf Datenbankebene. Wenn die Option aktiviert ist, beginnen DML-Anweisungen mit der Generierung von Zeilenversionen, auch wenn keine Transaktion die Momentaufnahmeisolation verwendet. Sobald diese Option aktiviert ist, können Transaktionen die SNAPSHOT-Transaktionsisolationsstufe angeben. Wenn eine Transaktion auf der SNAPSHOT-Isolationsebene ausgeführt wird, sehen alle Anweisungen eine Momentaufnahme der Daten, wie sie beim Start der Transaktion vorlagen. Greift eine Transaktion, die auf der SNAPSHOT-Isolationsstufe ausgeführt wird, auf Daten in mehreren Datenbanken zu, muss entweder in allen Datenbanken ALLOW_SNAPSHOT_ISOLATION auf ON festgelegt sein oder jede Anweisung in der Transaktion muss Sperrhinweise für alle Verweise in einer FROM-Klausel verwenden, die auf eine Tabelle in einer Datenbank verweisen, bei der ALLOW_SNAPSHOT_ISOLATION auf OFF festgelegt ist.

OFF
Deaktiviert die Momentaufnahmeoption auf Datenbankebene. Transaktionen können die SNAPSHOT-Isolationsstufe für Transaktionen nicht angeben.

Wenn Sie ALLOW_SNAPSHOT_ISOLATION auf einen neuen Status festlegen (von ON zu OFF oder von OFF zu ON), gibt ALTER DATABASE die Kontrolle erst dann an den Aufrufer zurück, wenn ein Commit aller bestehenden Transaktionen in der Datenbank ausgeführt wurde. Hat die Datenbank bereits den in der ALTER DATABASE-Anweisung angegebenen Status, wird die Kontrolle direkt an den Aufrufer zurückgegeben. Wenn keine schnelle Rückgabe durch die ALTER DATABASE-Anweisung erfolgt, verwenden Sie sys.dm_tran_active_snapshot_database_transactions, um zu bestimmen, ob lang andauernde Transaktionen vorhanden sind. Wird die ALTER DATABASE-Anweisung abgebrochen, bleibt die Datenbank in dem Status, in dem sie sich vor dem Start von ALTER DATABASE befand. In der sys.databases-Katalogsicht wird der Status von Isolationstransaktionen von Momentaufnahmen in der Datenbank angegeben. Wenn „snapshot_isolation_state_desc = IN_TRANSITION_TO_ON“ gilt, wartet die Anweisung ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF sechs Sekunden lang ab und versucht dann, den Vorgang zu wiederholen.

Sie können den Status von ALLOW_SNAPSHOT_ISOLATION nicht ändern, wenn die Datenbank OFFLINE ist.

Wenn Sie ALLOW_SNAPSHOT_ISOLATION in einer READ_ONLY-Datenbank festlegen, wird die Einstellung gespeichert, wenn die Datenbank später auf READ_WRITE festgelegt wird.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte snapshot_isolation_state in der sys.databases-Katalogsicht ermittelt werden.

READ_COMMITTED_SNAPSHOT { ON | OFF }

EIN
Aktiviert die Option READ COMMITTED-Snapshot auf Datenbankebene. Wenn die Option aktiviert ist, beginnen DML-Anweisungen mit der Generierung von Zeilenversionen, auch wenn keine Transaktion die Momentaufnahmeisolation verwendet. Sobald diese Option aktiviert ist, verwenden Transaktionen, die die READ COMMITTED-Isolationsstufe angeben, anstelle von Sperren die Zeilenversionsverwaltung. Wenn eine Transaktion auf der READ COMMITTED-Isolationsstufe ausgeführt wird, sehen alle Anweisungen eine Momentaufnahme der Daten, wie sie beim Start der Anweisung vorlagen.

OFF
Deaktiviert die Option READ COMMITTED-Snapshot auf Datenbankebene. Transaktionen, die die READ COMMITTED-Isolationsstufe angeben, verwenden Sperren.

Wenn READ_COMMITTED_SNAPSHOT auf ON oder OFF festgelegt werden soll, dürfen außer der Verbindung, die den ALTER DATABASE-Befehl ausführt, keine aktiven Verbindungen zur Datenbank bestehen. Die Datenbank muss sich jedoch nicht im Einzelbenutzermodus befinden. Sie können den Status dieser Option nicht ändern, wenn die Datenbank OFFLINE ist.

Wenn Sie READ_COMMITTED_SNAPSHOT in einer READ_ONLY-Datenbank festlegen, wird die Einstellung beibehalten, wenn die Datenbank später auf READ_WRITE festgelegt wird.

READ_COMMITTED_SNAPSHOT kann für die Systemdatenbanken master, tempdb und msdb nicht auf ON festgelegt werden. Wenn Sie die Einstellung für model ändern, wird die Einstellung zur Standardeinstellung für alle neu erstellten Datenbanken, mit Ausnahme von tempdb.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_read_committed_snapshot_on in der sys.databases-Katalogsicht ermittelt werden.

Warnung

Wenn eine Tabelle mit DURABILITY = SCHEMA_ONLY erstellt wird und READ_COMMITTED_SNAPSHOT anschließend mithilfe von ALTER DATABASE geändert wird, gehen die in der Tabelle enthaltenen Daten verloren.

Tipp

In Azure SQL-Datenbank muss der ALTER DATABASE-Befehl zum Festlegen von READ_COMMITTED_SNAPSHOT auf ON oder OFF für eine Datenbank in der master-Datenbank ausgeführt werden.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

EIN
Wenn die Isolationsstufe für Transaktionen auf eine niedrigere Isolationsstufe als SNAPSHOT festgelegt wird, werden alle interpretierten Transact-SQL-Vorgänge für speicheroptimierte Tabelle unter der Isolationsstufe SNAPSHOT ausgeführt. Beispiele für Isolationsstufen, die niedriger als SNAPSHOT sind, sind READ COMMITTED oder READ UNCOMMITTED. Diese Vorgänge erfolgen ungeachtet des Umstands, ob die Transaktionsisolationsstufe explizit auf der Sitzungsebene festgelegt ist, oder ob implizit die Standardeinstellung verwendet wird.

OFF
Erhöht nicht die Isolationsstufe für Transaktionen für interpretierte Transact-SQL-Vorgänge für speicheroptimierte Tabellen.

Sie können den Status von MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT nicht ändern, wenn die Datenbank OFFLINE ist.

Der Standardwert ist OFF.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_memory_optimized_elevate_to_snapshot_on in der sys.databases-Katalogsicht ermittelt werden.

<sql_option> ::=

Steuert die ANSI-Kompatibilitätsoptionen auf der Datenbankebene.

ANSI_NULL_DEFAULT { ON | OFF }

Legt den Standardwert (NULL oder NOT NULL) einer Spalte oder CLR user-defined type fest, für den die NULL-Zulässigkeit nicht explizit in den CREATE TABLE- oder ALTER TABLE-Anweisungen festgelegt wurde. Spalten, die mit Einschränkungen definiert werden, folgen den Einschränkungsregeln, egal wie diese Einstellung lautet.

EIN
Der Standardwert ist NULL.

OFF
Der Standardwert ist NOT NULL.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_NULL_DEFAULT. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_NULL_DEFAULT für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_NULL_DFLT_ON.

Für die ANSI-Kompatibilität wird durch Festlegen der Datenbankoption ANSI_NULL_DEFAULT auf ON der Datenbankstandardwert auf NULL geändert.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_null_default_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiNullDefault-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_NULLS { ON | OFF }

EIN
Alle Vergleiche mit einem Nullwert ergeben UNKNOWN.

OFF
Vergleiche von Nicht-UNICODE-Werten mit einem Nullwert ergeben TRUE, wenn beide Werte NULL sind.

Wichtig

In einer späteren Version von SQL Server wird ANSI_NULLS immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt wird, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_NULLS. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_NULLS für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_NULLS.

Hinweis

SET ANSI_NULLS muss ebenfalls auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_nulls_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiNullsEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_PADDING { ON | OFF }

EIN
Zeichenfolgen werden vor der Konvertierung auf dieselbe Länge aufgefüllt. Sie werden auch vor dem Einfügen in einen varchar- oder nvarchar-Datentyp durch Einfügen von Leerstellen auf dieselbe Länge gebracht.

OFF
Fügt nachfolgende Leerräume in Zeichenwerte in varchar oder nvarchar-Spalten ein. Belässt außerdem nachfolgende Nullen in Binärwerten, die in varbinary-Spalten eingefügt werden. Werte werden nicht bis zur Spaltenlänge aufgefüllt.

Ist OFF festgelegt, wirkt sich diese Einstellung nur auf die Definition neuer Spalten aus.

Wichtig

In einer späteren Version von SQL Server wird ANSI_PADDING immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt ist, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Es wird empfohlen, für ANSI_PADDING stets den Wert ON festzulegen. ANSI_PADDING muss beim Erstellen oder Bearbeiten von Indizes für berechnete Spalten oder indizierte Sichten auf ON festgelegt sein.

char(n) - und binary(n) -Spalten, die NULL-Werte zulassen, werden bis zur Spaltenlänge aufgefüllt, wenn ANSI_PADDING auf ON festgelegt ist. Ist ANSI_PADDING hingegen auf OFF festgelegt, werden nachfolgende Leerzeichen und Nullen abgeschnitten. char(n) - und binary(n) -Spalten, die keine NULL-Werte zulassen, werden immer bis zur Spaltenlänge aufgefüllt.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_PADDING. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_PADDING für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_PADDING.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_padding_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiPaddingEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_WARNINGS { ON | OFF }

EIN
Fehler und Warnungen werden ausgegeben, wenn z.B. ein Fehler wegen „Division durch Null“ auftritt. Fehler oder Warnungen werden ebenfalls ausgegeben, wenn Nullwerte in Aggregatfunktionen auftreten.

OFF
Bei Bedingungen wie einer Division durch Null werden keine Warnungen ausgegeben, und Nullwerte werden zurückgegeben.

Hinweis

SET ANSI_WARNINGS muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_WARNINGS. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_WARNINGS für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_WARNINGS.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_warnings_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiWarningsEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ARITHABORT { ON | OFF }

EIN
Eine Abfrage wird beendet, wenn während der Abfrage ein Überlauffehler oder ein Fehler aufgrund einer Division durch Null auftritt.

OFF
Eine Warnmeldung wird angezeigt, wenn einer dieser Fehler auftritt. Die Verarbeitung der Abfrage, des Batches oder der Transaktion wird fortgesetzt, als wäre kein Fehler aufgetreten, selbst wenn eine Warnung angezeigt wird.

Hinweis

SET ARITHABORT muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_arithabort_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsArithmeticAbortEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

COMPATIBILITY_LEVEL = {150 | 140 | 130 | 120 | 110 | 100}

Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

EIN
Das Ergebnis einer Verkettungsoperation ist NULL, wenn einer der Operanden NULL ist. Wenn z. B. die Zeichenfolge "This is" und NULL verkettet wird, ist das Ergebnis NULL statt "This is".

OFF
Der Nullwert wird als leere Zeichenfolge behandelt.

Hinweis

CONCAT_NULL_YIELDS_NULL muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

In einer späteren Version von SQL Server wird CONCAT_NULL_YIELDS_NULL immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt wurde, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für CONCAT_NULL_YIELDS_NULL. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die CONCAT_NULL_YIELDS_NULL für die Sitzung auf ON festgelegt wird, wenn sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET CONCAT_NULL_YIELDS_NULL.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_concat_null_yields_null_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsNullConcat-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

NUMERIC_ROUNDABORT { ON | OFF }

EIN
Es wird ein Fehler generiert, wenn ein Genauigkeitsverlust in einem Ausdruck auftritt.

OFF
Bei einem Genauigkeitsverlust wird keine Fehlermeldung generiert, und das Ergebnis wird auf die Genauigkeit der Spalte oder Variablen gerundet, die das Ergebnis speichert.

Wichtig

NUMERIC_ROUNDABORT muss auf OFF festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status für diese Option in der Spalte is_numeric_roundabort_on in der sys.databases-Katalogsicht ermitteln. Sie können den Status auch durch Untersuchen der IsNumericRoundAbortEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

QUOTED_IDENTIFIER { ON | OFF }

EIN
Doppelte Anführungszeichen können nur zum Einschließen von Begrenzungsbezeichnern verwendet werden.

Alle Zeichenfolgen, die durch doppelte Anführungszeichen begrenzt werden, werden als Objektbezeichner interpretiert. Bezeichner in Anführungszeichen müssen nicht den Transact-SQL-Regeln für Bezeichner entsprechen. Sie können Schlüsselwörter darstellen und Zeichen einschließen, die in Transact-SQL-Bezeichnern nicht zulässig sind. Ein einfaches Anführungszeichen (’), das zur Literalzeichenfolge selbst gehört, kann durch doppelte Anführungszeichen (’’) dargestellt werden.

OFF
Bezeichner dürfen nicht in Anführungszeichen eingeschlossen werden und müssen allen Transact-SQL-Regeln für Bezeichner entsprechen. Literale können in einfache oder doppelte Anführungszeichen eingeschlossen werden.

In SQL Server ist es zudem möglich, Bezeichner durch eckige Klammern ([ ]) zu begrenzen. Bezeichner in eckigen Klammern können immer verwendet werden, egal wie die Einstellung für QUOTED_IDENTIFIER lautet. Weitere Informationen finden Sie unter Datenbankbezeichner.

Beim Erstellen einer Tabelle wird die Option QUOTED IDENTIFIER immer als ON in den Metadaten der Tabelle gespeichert. Die Option wird gespeichert, selbst wenn die Option beim Erstellen der Tabelle auf OFF festgelegt ist.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für QUOTED_IDENTIFIER. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die QUOTED_IDENTIFIER auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET QUOTED_IDENTIFIER.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_quoted_identifier_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsQuotedIdentifiersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

RECURSIVE_TRIGGERS { ON | OFF }

EIN
Das rekursive Auslösen von AFTER-Triggern ist zugelassen.

OFF
Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_recursive_triggers_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsRecursiveTriggersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Hinweis

Nur die direkte Rekursion wird verhindert, wenn RECURSIVE_TRIGGERS auf OFF festgelegt ist. Sie müssen auch die Geschachtelte Trigger-Serveroption auf 0 festlegen, um die indirekte Rekursion zu deaktivieren.

Sie können den Status dieser Option mithilfe der Spalte is_recursive_triggers_on in der Katalogsicht sys.databases oder der IsRecursiveTriggersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

<target_recovery_time_option> ::=

Gibt die Frequenz indirekter Prüfpunkte auf Basis einzelner Datenbanken an. Ab SQL Server 2016 (13.x) beträgt der Standardwert für neue Datenbanken, der darauf hindeutet, dass Datenbanken indirekte Prüfpunkte verwendet werden, eine Minute. Der Standard für ältere Versionen ist 0 (null) und gibt an, dass die Datenbank automatische Prüfpunkte verwendet, deren Frequenz von der Einstellung für das Wiederherstellungsintervall der Serverinstanz abhängt. Für Microsoft ist für die meisten Systeme eine Minute empfohlen.

TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

target_recovery_time
Gibt die maximale Grenze für die Zeit an, die für die Wiederherstellung der angegebenen Datenbank im Fall eines Fehlers aufgewendet wird. target_recovery_time ist vom Typ int.

SECONDS
Gibt an, dass target_recovery_time die Anzahl von Sekunden darstellt.

MINUTES
Gibt an, dass target_recovery_time die Anzahl von Minuten darstellt.

Weitere Informationen zu indirekten Prüfpunkten finden Sie unter Datenbankprüfpunkte.

WITH <termination> ::=

Gibt an, wann beim Übergang der Datenbank von einem Status in einen anderen für unvollständige Transaktionen ein Rollback ausgeführt werden soll. Wird die Beendigungsklausel ausgelassen, wartet die ALTER DATABASE-Anweisung auf unbestimmte Zeit, wenn keine Sperre für die Datenbank besteht. Es kann nur eine Beendigungsklausel angegeben werden, und diese steht hinter den SET-Klauseln.

Hinweis

Nicht alle Datenbankoptionen verwenden die WITH <termination>-Klausel. Weitere Informationen finden Sie in der Tabelle unter Festlegen von Optionen im Abschnitt „Hinweise“ dieses Artikels.

ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Gibt an, ob ein Rollback sofort oder nach Ablauf der angegebenen Sekundenzahl ausgeführt werden soll.

NO_WAIT
Gibt an, dass die Anforderung fehlschlägt, wenn diese Änderung des Datenbankstatus oder der Datenbankoption nicht sofort vollständig vorgenommen werden kann. Der sofortige Abschluss des Vorgangs bedeutet, dass nicht darauf gewartet wird, dass Transaktionen eigenständig einen Commit oder Rollback ausführen.

Festlegen von Optionen

Verwenden Sie die sys.databases-Katalogsicht oder DATABASEPROPERTYEX, um die aktuellen Einstellungen für Datenbankoptionen abzurufen.

Wenn Sie eine Datenbankoption festlegen, tritt die neue Einstellung sofort in Kraft.

Sie können die Standardwerte einer Datenbankoption für alle neu erstellten Datenbanken ändern. Ändern Sie hierfür die entsprechende Datenbankoption in der Datenbank model.

Nicht alle Datenbankoptionen verwenden die WITH <termination>-Klausel oder können zusammen mit anderen Optionen festgelegt werden. In der folgenden Tabelle sind die Optionen und ihr Options- und Beendigungsstatus aufgeführt.

Optionskategorie Kann mit anderen Optionen angegeben werden Kann WITH <termination>-Klausel verwenden
<auto_option> Ja Nein
<change_tracking_option> Ja Ja
<cursor_option> Ja Nein
<db_encryption_option> Ja Nein
<db_update_option> Ja Ja
<db_user_access_option> Ja Ja
<delayed_durability_option> Ja Ja
<parameterization_option> Ja Ja
ALLOW_SNAPSHOT_ISOLATION Nein Nein
READ_COMMITTED_SNAPSHOT Nein Ja
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT Ja Ja
DATE_CORRELATION_OPTIMIZATION Ja Ja
<sql_option> Ja Nein
<target_recovery_time_option> Nein Ja

Beispiele

A. Festlegen der Datenbank auf READ_ONLY

Für die Änderung des Status einer Datenbank oder Dateigruppe in READ_ONLY oder READ_WRITE wird der exklusive Zugriff auf die Datenbank benötigt. Im folgenden Beispiel wird die Datenbank in den RESTRICTED_USER-Modus gesetzt, um eingeschränkten Zugriff zu erhalten. Anschließend wird in dem Beispiel der Status der AdventureWorks2012-Datenbank auf READ_ONLY festgelegt und der Zugriff auf die Datenbank an alle Benutzer zurückgegeben.

USE master;
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

B. Aktivieren der Momentaufnahmeisolation für eine Datenbank

Im folgenden Beispiel wird die Option für das Momentaufnahmeisolations-Framework für die AdventureWorks2012-Datenbank aktiviert.

USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO

Das Resultset zeigt, dass das Framework für die Momentaufnahmeisolation aktiviert ist.

name snapshot_isolation_state description
[database_name] 1 EIN

C. Aktivieren, Ändern und Deaktivieren der Änderungsnachverfolgung

Im folgenden Beispiel wird die Änderungsnachverfolgung für die AdventureWorks2012-Datenbank aktiviert und die Aufbewahrungsdauer auf 2 Tage festgelegt.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

Das folgende Beispiel veranschaulicht, wie die Beibehaltungsdauer in drei Tage geändert wird.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

Das folgende Beispiel veranschaulicht, wie die Änderungsnachverfolgung für die AdventureWorks2012-Datenbank deaktiviert wird.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

D: Aktivieren des Abfragespeichers

Im folgenden Beispiel werden der Abfragespeicher aktiviert und Parameter des Abfragespeichers konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      QUERY_CAPTURE_MODE = AUTO,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60
    );

E. Aktivieren des Abfragespeichers mit Wartestatistiken

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
    );

F. Aktivieren des Abfragespeichers mit benutzerdefinierten Erfassungsrichtlinienoptionen

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
      QUERY_CAPTURE_MODE = CUSTOM,
      QUERY_CAPTURE_POLICY = (
        STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
        EXECUTION_COUNT = 30,
        TOTAL_COMPILE_CPU_TIME_MS = 1000,
        TOTAL_EXECUTION_CPU_TIME_MS = 100
      )
    );

Siehe auch

* SQL Managed Instance *  

 

Verwaltete Azure SQL-Instanz

Kompatibilitätsgrade sind SET-Optionen, die jedoch unter ALTER DATABASE-Kompatibilitätsgrad beschrieben werden.

Hinweis

Viele DATABASE SET-Optionen können mithilfe von SET-Anweisungen konfiguriert werden; häufig werden sie bei der Verbindung von Anwendungen konfiguriert. Die ALTER DATABASE SET-Werte werden durch SET-Optionen auf Sitzungsebene überschrieben. Die unten beschriebenen Datenbankoptionen entsprechen Werten, die für Sitzungen festgelegt werden können, von denen explizit keine weiteren Werte für SET-Optionen bereitgestellt werden.

Syntax

ALTER DATABASE { database_name | Current }
SET
{
    <optionspec> [ ,...n ]
}
;

<optionspec> ::=
{
    <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
}
;
<auto_option> ::=
{
    AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
  | AUTO_SHRINK { ON | OFF }
  | AUTO_UPDATE_STATISTICS { ON | OFF }
  | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<automatic_tuning_option> ::=
{
    AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { ON | OFF } )
}

<change_tracking_option> ::=
{
    CHANGE_TRACKING
    {
       = OFF
     | = ON [ ( <change_tracking_option_list > [,...n] ) ]
     | ( <change_tracking_option_list> [,...n] )
    }
}

<change_tracking_option_list> ::=
   {
       AUTO_CLEANUP = { ON | OFF }
     | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
   }

<cursor_option> ::=
{
    CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}

<db_encryption_option> ::=
  ENCRYPTION { ON | OFF }

<delayed_durability_option> ::=DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }

<parameterization_option> ::=
  PARAMETERIZATION { SIMPLE | FORCED }

<query_store_options> ::=
{
  QUERY_STORE
  {
    = OFF
    | = ON [ ( <query_store_option_list> [,... n] ) ]
    | ( < query_store_option_list> [,... n] )
    | CLEAR [ ALL ]
  }
}

<query_store_option_list> ::=
{
  OPERATION_MODE = { READ_WRITE | READ_ONLY }
  | CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
  | DATA_FLUSH_INTERVAL_SECONDS = number
  | MAX_STORAGE_SIZE_MB = number
  | INTERVAL_LENGTH_MINUTES = number
  | SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
  | QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
  | MAX_PLANS_PER_QUERY = number
  | WAIT_STATS_CAPTURE_MODE = { ON | OFF }
  | QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}

<query_capture_policy_option_list> :: =
{
    STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
    | EXECUTION_COUNT = number
    | TOTAL_COMPILE_CPU_TIME_MS = number
    | TOTAL_EXECUTION_CPU_TIME_MS = number
}

<snapshot_option> ::=
{
    ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
  | READ_COMMITTED_SNAPSHOT {ON | OFF }
  | MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT {ON | OFF }
}
<sql_option> ::=
{
    ANSI_NULL_DEFAULT { ON | OFF }
  | ANSI_NULLS { ON | OFF }
  | ANSI_PADDING { ON | OFF }
  | ANSI_WARNINGS { ON | OFF }
  | ARITHABORT { ON | OFF }
  | COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<temporal_history_retention>::= TEMPORAL_HISTORY_RETENTION { ON | OFF }

Argumente

database_name

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

CURRENT

CURRENT führt die Aktion in der aktuellen Datenbank aus. CURRENT wird nicht in allen Kontexten für alle Optionen unterstützt. Wenn CURRENT einen Fehler verursacht, geben Sie den Datenbanknamen an.

<auto_option> ::=

Steuert automatische Optionen.

AUTO_CREATE_STATISTICS { ON | OFF }

EIN
Der Abfrageoptimierer erstellt nach Bedarf Statistiken für einzelne Spalten in Abfrageprädikaten, um Abfragepläne sowie die Abfrageleistung zu verbessern. Diese Statistiken für einzelne Spalten werden erstellt, wenn der Abfrageoptimierer Abfragen kompiliert. Die Statistiken für einzelne Spalten werden nur für Spalten erstellt, die noch nicht der ersten Spalte eines vorhandenen Statistikobjekts entsprechen.

Der Standardwert ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

OFF
Der Abfrageoptimierer erstellt beim Kompilieren von Abfragen keine Statistiken für einzelne Spalten in Abfrageprädikaten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_create_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoCreateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Statistikoptionen“ unter Statistiken.

INCREMENTAL = ON | OFF

Legen Sie AUTO_CREATE_STATISTICS auf ON und INCREMENTAL auf ON fest. Diese Einstellung erstellt automatisch Statistiken als inkrementell, wann immer inkrementelle Statistiken unterstützt werden. Der Standardwert ist OFF. Weitere Informationen finden Sie unter CREATE STATISTICS.

AUTO_SHRINK { ON | OFF }

EIN
Die Datenbankdateien sind Kandidaten für das periodische Verkleinern. Legen Sie die Datenbankoption AUTO_SHRINK nicht auf ON fest, es sei denn, besondere Anforderungen machen dies erforderlich. Weitere Informationen finden Sie unter Verkleinern einer Datenbank.

Sowohl Daten- als auch Protokolldateien können automatisch verkleinert werden. AUTO_SHRINK reduziert die Größe des Transaktionsprotokolls nur, wenn Sie die Datenbank auf das SIMPLE-Wiederherstellungsmodell festlegen oder das Protokoll sichern. Ist diese Option auf OFF festgelegt, werden die Datenbankdateien während der periodisch ausgeführten Überprüfung auf nicht verwendeten Speicherplatz nicht automatisch verkleinert.

Durch die Option AUTO_SHRINK werden Dateien dann verkleinert, wenn mehr als 25 Prozent der Datei aus nicht verwendetem Speicherplatz bestehen. Die Option bewirkt, dass die Datei, auf eine von zwei Größen verkleinert wird. Sie wird auf den jeweils größeren Wert verkleinert:

  • die Größe, bei der 25 Prozent der Datei aus nicht verwendetem Speicherplatz bestehen
  • die Größe der Datei, als sie erstellt wurde

Eine schreibgeschützte Datenbank kann nicht verkleinert werden.

OFF
Die Datenbankdateien werden bei periodischen Prüfungen auf nicht verwendeten Speicherplatz nicht automatisch verkleinert.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_shrink_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoShrink-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Hinweis

Die AUTO_SHRINK-Option ist in einer eigenständigen Datenbank nicht verfügbar.

AUTO_UPDATE_STATISTICS { ON | OFF }

EIN
Gibt an, dass der Abfrageoptimierer Statistiken aktualisiert, wenn sie von einer Abfrage verwendet werden und veraltet sein könnten. Statistiken sind veraltet, wenn die Datenverteilung in der Tabelle oder indizierten Sicht durch die Vorgänge INSERT, UPDATE, DELETE oder MERGE geändert wurde. Der Abfrageoptimierer stellt fest, wann Statistiken veraltet sein könnten, indem er die Anzahl von Datenänderungen seit der letzten Statistikaktualisierung ermittelt und sie mit einem Schwellenwert vergleicht. Der Schwellenwert basiert auf der Anzahl von Zeilen in der Tabelle oder indizierten Sicht.

Bevor der Abfrageoptimierer eine Abfrage kompiliert und einen zwischengespeicherten Abfrageplan ausführt, sucht er nach veralteten Statistiken. Der Abfrageoptimierer ermittelt anhand der Spalten, Tabellen und indizierten Sichten im Abfrageprädikat, welche Statistiken veraltet sein könnten. Der Abfrageoptimierer ermittelt diese Informationen, bevor er eine Abfrage kompiliert. Vor dem Ausführen eines zwischengespeicherten Abfrageplans stellt die Datenbank-Engine sicher, dass der Abfrageplan auf aktuelle Statistiken verweist.

Die AUTO_UPDATE_STATISTICS-Option gilt für Statistikobjekte, die für Indizes, einzelne Spalten in Abfrageprädikaten und mit der CREATE STATISTICS-Anweisung generierte Statistiken erstellt wurden. Diese Option gilt auch für gefilterte Statistiken.

Der Standardwert ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

Verwenden Sie die AUTO_UPDATE_STATISTICS_ASYNC-Option, um anzugeben, ob die Statistiken synchron oder asynchron aktualisiert werden.

OFF
Gibt an, dass der Abfrageoptimierer Statistiken nicht aktualisiert, wenn sie von einer Abfrage verwendet werden. Der Abfrageoptimierer aktualisiert Statistiken auch nicht, wenn sie veraltet sein könnten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_update_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoUpdateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Verwenden der datenbankweiten Statistikoptionen“ unter Statistiken.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

EIN
Gibt an, dass Statistikupdates für die AUTO_UPDATE_STATISTICS-Option asynchron sind. Der Abfrageoptimierer wartet nicht, bis Statistikaktualisierungen abgeschlossen sind, bevor Abfragen kompiliert werden.

Das Festlegen dieser Option auf ON hat nur dann Auswirkungen, wenn AUTO_UPDATE_STATISTICS auf ON festgelegt ist.

Die AUTO_UPDATE_STATISTICS_ASYNC-Option ist standardmäßig auf OFF festgelegt, sodass der Abfrageoptimierer Statistiken synchron aktualisiert.

OFF
Gibt an, dass Statistikupdates für die AUTO_UPDATE_STATISTICS-Option synchron sind. Der Abfrageoptimierer wartet, bis Statistikupdates abgeschlossen sind, bevor Abfragen kompiliert werden.

Das Festlegen dieser Option auf OFF hat nur dann Auswirkungen, wenn AUTO_UPDATE_STATISTICS auf ON festgelegt ist.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_update_stats_async_on in der sys.databases-Katalogsicht untersuchen.

Weitere Informationen dazu, wann synchrone bzw. asynchrone Statistikupdates verwendet werden sollten, finden Sie im Abschnitt „Verwenden der datenbankweiten Statistikoptionen“ unter Statistiken.

<automatic_tuning_option> ::=

Steuert automatische Optionen für die automatische Optimierung.

FORCE_LAST_GOOD_PLAN = { ON | OFF }

Aktiviert bzw. deaktiviert die Option FORCE_LAST_GOOD_PLAN für die automatische Optimierung.

EIN
Die Datenbank-Engine erzwingt automatisch den neusten bekannten, geeigneten Plan bei Transact-SQL-Abfragen, bei denen neue Abfragepläne negative Auswirkungen auf die Leistung haben. Die Datenbank-Engine überwacht regelmäßig die Abfrageleistung der Transact-SQL-Abfrage mit dem erzwungenen Plan. Wenn die Leistung verbessert wurde, verwendet die Datenbank-Engine weiterhin den neusten bekannten, geeigneten Plan. Wenn die Leistung nicht verbessert wurde, erstellt die Datenbank-Engine einen neuen Abfrageplan. Bei der Anweisung tritt ein Fehler auf, wenn der Abfragespeicher nicht aktiviert ist oder sich nicht im Lese-/Schreibmodus befindet.

OFF
Die Datenbank-Engine meldet potentielle Einbußen im Hinblick auf die Abfrageleistung, die von Änderungen des Abfrageplans in der sys.dm_db_tuning_recommendations-Sicht hervorgerufen werden könnten. Diese Empfehlungen werden allerdings nicht automatisch angewendet. Benutzer können aktive Empfehlungen überwachen und ermittelte Probleme beheben, indem sie die in der Sicht aufgeführten Transact-SQL-Skripts anwenden. Dies ist der Standardwert.

<change_tracking_option> ::=

Steuert Änderungsnachverfolgungsoptionen. Sie können die Änderungsnachverfolgung aktivieren, Optionen festlegen, Optionen ändern und die Änderungsnachverfolgung deaktivieren. Beispiele hierzu finden Sie im Abschnitt „Beispiele“ weiter unten in diesem Artikel.

ON Aktiviert die Änderungsnachverfolgung für die Datenbank. Wenn die Änderungsnachverfolgung aktiviert wird, können auch die AUTO CLEANUP-Option und die CHANGE RETENTION-Option festgelegt werden.

AUTO_CLEANUP = { ON | OFF }

EIN
Die Änderungsnachverfolgungsdaten werden nach der angegebenen Beibehaltungsdauer automatisch entfernt.

OFF
Die Änderungsnachverfolgungsdaten werden nicht aus der Datenbank entfernt.

CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }

Gibt die Mindestdauer für die Beibehaltung von Änderungsnachverfolgungsdaten in der Datenbank an. Die Daten werden nur dann entfernt, wenn der Wert für AUTO_CLEANUP ON lautet.

retention_period ist ein Integer, der die numerische Komponente der Vermerkdauer angibt.

Die Standardbeibehaltungsdauer beträgt 2 Tage. Die Mindestbeibehaltungsdauer ist 1 Minute. Der Standardtyp für die Beibehaltung ist DAYS.

OFF
Deaktiviert die Änderungsnachverfolgung für die Datenbank. Deaktivieren Sie erst die Änderungsnachverfolgung für alle Tabellen, bevor Sie sie für die Datenbank deaktivieren.

<cursor_option> ::=

Steuert Cursoroptionen.

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

EIN
Alle beim Commit oder Rollback einer Transaktion geöffneten Cursor werden geschlossen.

OFF
Cursor bleiben beim Commit einer Transaktion geöffnet. Beim Rollback einer Transaktion werden alle Cursor geschlossen, sofern sie nicht als INSENSITIVE oder STATIC definiert sind.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für CURSOR_CLOSE_ON_COMMIT. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die CURSOR_CLOSE_ON_COMMIT für die Sitzung auf OFF festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET CURSOR_CLOSE_ON_COMMIT.

Sie können den Status dieser Option mithilfe der Spalte is_cursor_close_on_commit_on in der sys.databases-Katalogsicht oder der „IsCloseCursorsOnCommitEnabled“-Eigenschaft der Funktion DATABASEPROPERTYEX ermitteln. Die Zuordnung des Cursors wird implizit nur aufgehoben, wenn die Verbindung getrennt wird. Weitere Informationen finden Sie unter DECLARE CURSOR.

<db_encryption_option> ::=

Steuert den Status der Datenbankverschlüsselung.

ENCRYPTION { ON | OFF }

Legt fest, ob die Datenbank verschlüsselt (ON) oder nicht verschlüsselt (OFF) werden soll. Weitere Informationen finden Sie unter Transparent Data Encryption und Transparent Data Encryption in Azure SQL-Datenbank.

Wenn die Verschlüsselung auf Datenbankebene aktiviert wird, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank als READ ONLY festgelegt sind, tritt beim Datenbankverschlüsselungsvorgang ein Fehler auf.

Der Verschlüsselungsstatus der Datenbank wird mit der dynamischen Verwaltungssicht sys.dm_database_encryption_keys angezeigt.

<db_update_option> ::=

Steuert, ob Updates für die Datenbank zugelassen sind.

READ_ONLY
Benutzer können Daten aus der Datenbank lesen, aber nicht ändern.

Hinweis

Um die Abfrageleistung zu verbessern, sollten Sie vor dem Festlegen einer Datenbank auf READ_ONLY die Statistiken aktualisieren. Wenn weitere Statistiken benötigt werden, nachdem eine Datenbank auf READ_ONLY festgelegt wurde, werden von Datenbank-Engine Statistiken in tempdb erstellt. Weitere Informationen zu Statistiken für eine schreibgeschützte Datenbank finden Sie unter Statistiken.

READ_WRITE
Die Datenbank ist für Lese- und Schreibvorgänge verfügbar.

Sie müssen über exklusiven Zugriff auf die Datenbank verfügen, um diesen Status zu ändern.

<db_user_access_option> ::=

Steuert den Benutzerzugriff auf die Datenbank.

RESTRICTED_USER
Ermöglicht nur Mitgliedern der festen Datenbankrolle db_owner und der festen Serverrollen dbcreator und sysadmin eine Verbindung mit der Datenbank, begrenzt jedoch nicht deren Anzahl. Alle Verbindungen zur Datenbank werden in dem durch die Beendigungsklausel der ALTER DATABASE-Anweisung angegebenen Zeitraum getrennt. Sobald die Datenbank in den Status RESTRICTED_USER gewechselt hat, werden Verbindungsversuche von nicht qualifizierten Benutzern abgelehnt. RESTRICTED_USER kann nicht mit SQL Managed Instance geändert werden.

MULTI_USER
Alle Benutzer, die über die entsprechenden Berechtigungen für die Verbindung mit der Datenbank verfügen, sind zugelassen.

Sie können den Status dieser Option mithilfe der Spalte user_access in der Katalogsicht sys.databases oder der UserAccess-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

<delayed_durability_option> ::=

Steuert, ob für Transaktionen ein Commit mit vollständiger oder verzögerter Dauerhaftigkeit ausgeführt wird.

DISABLED
Alle Transaktionen nach SET DISABLED sind vollständig dauerhaft. Alle Dauerhaftigkeitsoptionen, die in einem Atomic-Block oder einer Commitanweisung festgelegt sind, werden ignoriert.

ALLOWED
Alle Transaktionen nach SET ALLOWED sind abhängig von der im atomischen Block oder der Commitanweisung festgelegten Dauerhaftigkeitsoption entweder vollständig dauerhaft oder verzögert dauerhaft.

FORCED
Alle Transaktionen nach SET FORCED sind verzögert dauerhaft. Alle Dauerhaftigkeitsoptionen, die in einem Atomic-Block oder einer Commitanweisung festgelegt sind, werden ignoriert.

<PARAMETERIZATION_option> ::=

Steuert die Parametrisierungsoption.

PARAMETERIZATION { SIMPLE | FORCED }

SIMPLE
Abfragen werden basierend auf dem Standardverhalten der Datenbank parametrisiert.

FORCED
SQL Server parametrisiert alle Abfragen in der Datenbank.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_parameterization_forced in der sys.databases-Katalogsicht ermittelt werden.

<query_store_options> ::=

ON | OFF | CLEAR [ ALL ]
Überprüft, ob der Abfragespeicher in dieser Datenbank aktiviert ist, und steuert außerdem das Entfernen des Inhalts des Abfragespeichers.

EIN
Aktiviert den Abfragespeicher.

OFF
Deaktiviert den Abfragespeicher. Dies ist der Standardwert.

CLEAR
Entfernt den Inhalt des Abfragespeichers.

OPERATION_MODE

Beschreibt den Betriebsmodus des Abfragespeichers. Gültige Werte sind READ_ONLY und READ_WRITE. Im Modus READ_WRITE sammelt und speichert der Abfragespeicher Angaben zum Abfrageplan und statistische Informationen zur Laufzeitausführung. Im Modus READ_ONLY können Informationen aus dem Abfragespeicher gelesen werden, es werden jedoch keine neuen Informationen hinzugefügt. Wenn die maximale Speicherplatzbelegung des Abfragespeichers ausgelastet ist, wird der Betriebsmodus in READ_ONLY geändert.

CLEANUP_POLICY

Beschreibt die Datenaufbewahrungsrichtlinie des Abfragespeichers. STALE_QUERY_THRESHOLD_DAYS bestimmt die Anzahl an Tagen, für die die Informationen für eine Abfrage im Abfragespeicher aufbewahrt werden. STALE_QUERY_THRESHOLD_DAYS weist den Typ bigint auf. Der Standardwert ist 30. Für die Basic Edition von SQL-Datenbank ist der Standardwert 7 Tage.

DATA_FLUSH_INTERVAL_SECONDS

Bestimmt die Häufigkeit, mit der in den Abfragespeicher geschriebene Daten auf Datenträger gespeichert werden. Um die Leistung zu optimieren, werden durch den Abfragespeicher gesammelte Daten asynchron auf den Datenträger geschrieben. Die Häufigkeit, mit der diese asynchrone Übertragung stattfindet, wird mit dem Argument DATA_FLUSH_INTERVAL_SECONDS konfiguriert. DATA_FLUSH_INTERVAL_SECONDS weist den Typ bigint auf. Der Standardwert ist 900 (15 Minuten).

MAX_STORAGE_SIZE_MB

Bestimmt den Speicherplatz, der vom Abfragespeicher belegt wird. MAX_SIZE_MB weist den Typ bigint auf. Der Standardwert ist 100 MB.

Hinweis

Die Begrenzung MAX_STORAGE_SIZE_MB wird nicht streng erzwungen. Die Speichergröße wird nur überprüft, wenn der Abfragespeicher Daten auf einen Datenträger schreibt. Dieses Intervall wird durch die Option DATA_FLUSH_INTERVAL_SECONDS oder die Option Datenleerungsintervall im Dialogfeld des Management Studio-Abfragespeichers festgelegt. Der Standardwert des Intervalls liegt bei 900 Sekunden (oder 15 Minuten). Wenn der Abfragespeicher die Begrenzung MAX_STORAGE_SIZE_MB zwischen Speichergrößenüberprüfungen überschritten hat, wechselt er in den schreibgeschützten Modus. Bei Aktivierung von SIZE_BASED_CLEANUP_MODE wird auch der Bereinigungsmechanismus zum Erzwingen der Begrenzung MAX_STORAGE_SIZE_MB ausgelöst. Sobald ausreichend Speicherplatz befreit wurde, wird der Abfragespeichermodus automatisch in den Lese-/Schreibmodus gewechselt.

Wichtig

Wenn Sie glauben, dass für Ihre Arbeitsauslastungserfassung mehr als 10 GB Speicherplatz benötigt werden, sollten Sie vermutlich die Arbeitsauslastung überdenken und optimieren, um Abfragepläne wiederzuverwenden (z. B. mithilfe von erzwungener Parametrisierung), oder die Abfragespeicherkonfigurationen anpassen.
Ab SQL Server 2019 (15.x) und in Azure SQL-Datenbank können Sie für zusätzliche Kontrolle über die Abfrageerfassungsrichtlinie QUERY_CAPTURE_MODE auf CUSTOM festlegen.

INTERVAL_LENGTH_MINUTES

Bestimmt das Zeitintervall, mit dem statistische Daten zur Laufzeitausführung im Abfragespeicher aggregiert werden. Um die Speicherverwendung zu optimieren, werden die statistischen Daten zur Laufzeitausführung im Speicher für Laufzeitstatistiken über ein festes Zeitfenster aggregiert. Dieses feste Zeitfenster wird mit dem Argument INTERVAL_LENGTH_MINUTES konfiguriert. INTERVAL_LENGTH_MINUTES weist den Typ bigint auf. Der Standardwert lautet 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }

Steuert, ob die Bereinigung automatisch aktiviert wird, wenn sich die Gesamtmenge der Daten der maximalen Größe nähert.

OFF
Eine auf der Größe basierte Bereinigung wird nicht automatisch aktiviert.

AUTO
Eine auf der Größe basierende Bereinigung wird automatisch aktiviert, wenn die Größe auf dem Datenträger 90 Prozent von max_storage_size_mb übersteigt. Ein auf der Größe basierendes Cleanup entfernt die am wenigsten aufwendigen und die ältesten Abfragen. Bei ungefähr 80 Prozent von max_storage_size_mb wird dieser Vorgang angehalten. Dies ist der Standardkonfigurationswert.

SIZE_BASED_CLEANUP_MODE ist vom Typ nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }

Bestimmt den zum aktuellen Zeitpunkt aktiven Abfrageerfassungsmodus.

ALL
Alle Abfragen werden erfasst.

AUTO
Relevante Abfragen werden anhand der Ausführungsanzahl und des Ressourcenverbrauchs erfasst. Dies ist der Standardkonfigurationswert für Azure SQL-Datenbank.

Keine
Es werden keine weiteren neuen Abfragen erfasst. Der Abfragespeicher sammelt weiterhin Statistiken zur Kompilierung und Runtime für Abfragen, die bereits erfasst wurden. Verwenden Sie diese Konfiguration mit Bedacht, da dadurch möglicherweise wichtige Abfragen verloren gehen.

QUERY_CAPTURE_MODE ist vom Typ nvarchar.

max_plans_per_query

Eine ganze Zahl, die die maximale Anzahl von Plänen darstellt, die für jede Abfrage beibehalten werden. MAX_PLANS_PER_QUERY ist vom Typ int. Der Standardwert ist 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Steuert, ob Wartestatistiken pro Abfrage erfasst werden

EIN
Wartestatistikinformationen pro Abfrage werden erfasst. Dies ist der Standardkonfigurationswert.

OFF
Wartestatistikinformationen pro Abfrage werden nicht erfasst.

<query_capture_policy_option_list> :: =

Steuert die Optionen für die Erfassungsrichtlinie des Abfragespeichers. Mit Ausnahme von STALE_CAPTURE_POLICY_THRESHOLD definieren diese Optionen die OR-Bedingungen, die auftreten müssen, damit Abfragen im definierten STALE_CAPTURE_POLICY_THRESHOLD-Wert erfasst werden.

STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }

Definiert den Zeitraum des Auswertungsintervalls um zu bestimmen, ob eine Abfrage erfasst werden sollte. Der Standardwert ist 1 Tag. Sie können Werte zwischen 1 Stunde und sieben Tagen festlegen.

EXECUTION_COUNT = integer

Definiert die Häufigkeit, mit der eine Abfrage im Auswertungszeitraum ausgeführt wird. Der Standardwert ist 30, was bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage mindestens 30 Mal an einem Tag ausgeführt werden muss, um im Abfragespeicher persistent gespeichert zu werden. EXECUTION_COUNT ist vom Typ int.

TOTAL_COMPILE_CPU_TIME_MS = integer

Definiert die gesamte verstrichene Kompilierungs-CPU-Zeit, die eine Abfrage über den Auswertungszeitraum in Anspruch nimmt. Der Standardwert ist 1.000. Dies bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage insgesamt mindestens eine Sekunde CPU-Zeit während der Abfragekompilierung an einem Tag verbraucht haben muss, um im Abfragespeicher persistent gespeichert zu werden. TOTAL_COMPILE_CPU_TIME_MS ist vom Typ int.

TOTAL_EXECUTION_CPU_TIME_MS = integer

Definiert die gesamte verstrichene Ausführungs-CPU-Zeit, die eine Abfrage über den Auswertungszeitraum in Anspruch nimmt. Der Standardwert ist 100. Dies bedeutet, dass für den Stale Capture Policy Threshold-Standardwert eine Abfrage insgesamt mindestens 100 ms CPU-Zeit während der Ausführung an einem Tag verbraucht haben muss, um im Abfragespeicher persistent gespeichert zu werden. TOTAL_EXECUTION_CPU_TIME_MS ist vom Typ int.

<snapshot_option> ::=

Bestimmt die Isolationsstufe für Transaktionen.

ALLOW_SNAPSHOT_ISOLATION { ON| OFF }

EIN
Aktiviert die Momentaufnahmeoption auf Datenbankebene. Wenn die Option aktiviert ist, beginnen DML-Anweisungen mit der Generierung von Zeilenversionen, auch wenn keine Transaktion die Momentaufnahmeisolation verwendet. Nachdem diese Option aktiviert wurde, können Transaktionen die SNAPSHOT-Transaktionsisolationsstufe angeben. Wenn eine Transaktion auf der SNAPSHOT-Isolationsebene ausgeführt wird, sehen alle Anweisungen eine Momentaufnahme der Daten, wie sie beim Start der Transaktion vorlagen. Greift eine Transaktion, die auf der SNAPSHOT-Isolationsstufe ausgeführt wird, auf Daten in mehreren Datenbanken zu, muss entweder in allen Datenbanken ALLOW_SNAPSHOT_ISOLATION auf ON festgelegt sein oder jede Anweisung in der Transaktion muss Sperrhinweise für alle Verweise in einer FROM-Klausel verwenden, die auf eine Tabelle in einer Datenbank verweisen, bei der ALLOW_SNAPSHOT_ISOLATION auf OFF festgelegt ist.

OFF
Deaktiviert die Momentaufnahmeoption auf Datenbankebene. Transaktionen können die SNAPSHOT-Isolationsstufe für Transaktionen nicht angeben.

Wenn Sie ALLOW_SNAPSHOT_ISOLATION auf einen neuen Status festlegen (von ON zu OFF oder von OFF zu ON), gibt ALTER DATABASE die Kontrolle erst dann an den Aufrufer zurück, wenn ein Commit aller bestehenden Transaktionen in der Datenbank ausgeführt wurde. Hat die Datenbank bereits den in der ALTER DATABASE-Anweisung angegebenen Status, wird die Kontrolle direkt an den Aufrufer zurückgegeben. Wenn keine schnelle Rückgabe durch die ALTER DATABASE-Anweisung erfolgt, verwenden Sie sys.dm_tran_active_snapshot_database_transactions, um zu bestimmen, ob lang andauernde Transaktionen vorhanden sind. Wird die ALTER DATABASE-Anweisung abgebrochen, bleibt die Datenbank in dem Status, in dem sie sich vor dem Start von ALTER DATABASE befand. In der sys.databases-Katalogsicht wird der Status von Isolationstransaktionen von Momentaufnahmen in der Datenbank angegeben. Wenn „snapshot_isolation_state_desc = IN_TRANSITION_TO_ON“ gilt, wartet die Anweisung ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF sechs Sekunden lang ab und versucht dann, den Vorgang zu wiederholen.

Sie können den Status von ALLOW_SNAPSHOT_ISOLATION nicht ändern, wenn die Datenbank OFFLINE ist.

Wenn Sie ALLOW_SNAPSHOT_ISOLATION in einer READ_ONLY-Datenbank festlegen, wird die Einstellung gespeichert, wenn die Datenbank später auf READ_WRITE festgelegt wird.

Sie können die ALLOW_SNAPSHOT_ISOLATION-Einstellungen für die Datenbanken master, model, msdb und tempdb ändern. Wenn Sie die Einstellung für tempdb ändern, wird die Einstellung jedes Mal beibehalten, wenn die Instanz von Datenbank-Engine beendet und neu gestartet wird. Wenn Sie die Einstellung für die Systemdatenbank model ändern, wird die Einstellung zur Standardeinstellung für alle neu erstellten Datenbanken, mit Ausnahme von tempdb.

Die Option ist für die Datenbanken master und msdb standardmäßig auf ON festgelegt.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte snapshot_isolation_state in der sys.databases-Katalogsicht ermittelt werden.

READ_COMMITTED_SNAPSHOT { ON | OFF }

EIN
Aktiviert die Option READ_COMMITTED_SNAPSHOT auf Datenbankebene. Wenn die Option aktiviert ist, beginnen DML-Anweisungen mit der Generierung von Zeilenversionen, auch wenn keine Transaktion die Momentaufnahmeisolation verwendet. Nachdem diese Option aktiviert wurde, verwenden Transaktionen, die die READ COMMITTED-Isolationsstufe angeben, anstelle von Sperren die Zeilenversionsverwaltung. Wenn eine Transaktion auf der READ COMMITTED-Isolationsstufe ausgeführt wird, sehen alle Anweisungen eine Momentaufnahme der Daten, wie sie beim Start der Anweisung vorlagen.

OFF
Deaktiviert die Option READ_COMMITTED_SNAPSHOT auf Datenbankebene. Transaktionen, die die READ COMMITTED-Isolationsstufe angeben, verwenden Sperren.

Wenn READ_COMMITTED_SNAPSHOT auf ON oder OFF festgelegt werden soll, dürfen außer der Verbindung, die den ALTER DATABASE-Befehl ausführt, keine aktiven Verbindungen zur Datenbank bestehen. Die Datenbank muss sich jedoch nicht im Einzelbenutzermodus befinden. Sie können den Status dieser Option nicht ändern, wenn die Datenbank OFFLINE ist.

Wenn Sie READ_COMMITTED_SNAPSHOT in einer READ_ONLY-Datenbank festlegen, wird die Einstellung beibehalten, wenn die Datenbank später auf READ_WRITE festgelegt wird.

READ_COMMITTED_SNAPSHOT kann für die Systemdatenbanken master, tempdb und msdb nicht auf ON festgelegt werden. Wenn Sie die Einstellung für die Systemdatenbank model ändern, wird die Einstellung zur Standardeinstellung für alle neu erstellten Datenbanken, mit Ausnahme von tempdb.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_read_committed_snapshot_on in der sys.databases-Katalogsicht ermittelt werden.

Warnung

Wenn eine Tabelle mit DURABILITY = SCHEMA_ONLY erstellt wird und READ_COMMITTED_SNAPSHOT anschließend mithilfe von ALTER DATABASE geändert wird, gehen Daten in der Tabelle verloren.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

EIN
Wenn die Isolationsstufe für Transaktionen auf eine niedrigere Isolationsstufe als SNAPSHOT festgelegt wird, werden alle interpretierten Transact-SQL-Vorgänge für speicheroptimierte Tabelle unter der Isolationsstufe SNAPSHOT ausgeführt. Beispiele für Isolationsstufen, die niedriger als SNAPSHOT sind, sind READ COMMITTED oder READ UNCOMMITTED. Diese Vorgänge erfolgen ungeachtet des Umstands, ob die Transaktionsisolationsstufe explizit auf der Sitzungsebene festgelegt ist, oder ob implizit die Standardeinstellung verwendet wird.

OFF
Erhöht nicht die Isolationsstufe für Transaktionen für interpretierte Transact-SQL-Vorgänge für speicheroptimierte Tabellen.

Sie können den Status von MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT nicht ändern, wenn die Datenbank OFFLINE ist.

Der Standardwert ist OFF.

Die aktuelle Einstellung dieser Option kann mithilfe der Spalte is_memory_optimized_elevate_to_snapshot_on in der sys.databases-Katalogsicht ermittelt werden.

<sql_option> ::=

Steuert die ANSI-Kompatibilitätsoptionen auf der Datenbankebene.

ANSI_NULL_DEFAULT { ON | OFF }

Legt den Standardwert (NULL oder NOT NULL) einer Spalte oder CLR user-defined type fest, für den die NULL-Zulässigkeit nicht explizit in den CREATE TABLE- oder ALTER TABLE-Anweisungen festgelegt wurde. Spalten, die mit Einschränkungen definiert werden, folgen den Einschränkungsregeln, egal wie diese Einstellung lautet.

EIN
Der Standardwert ist NULL.

OFF
Der Standardwert ist NOT NULL.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_NULL_DEFAULT. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_NULL_DEFAULT für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_NULL_DFLT_ON.

Für die ANSI-Kompatibilität wird durch Festlegen der Datenbankoption ANSI_NULL_DEFAULT auf ON der Datenbankstandardwert auf NULL geändert.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_null_default_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiNullDefault-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_NULLS { ON | OFF }

EIN
Alle Vergleiche mit einem Nullwert ergeben UNKNOWN.

OFF
Vergleiche von Nicht-UNICODE-Werten mit einem Nullwert ergeben TRUE, wenn beide Werte NULL sind.

Wichtig

In einer späteren Version von SQL Server wird ANSI_NULLS immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt wird, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_NULLS. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_NULLS für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_NULLS.

Wichtig

SET ANSI_NULLS muss ebenfalls auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_nulls_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiNullsEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_PADDING { ON | OFF }

EIN
Zeichenfolgen werden vor der Konvertierung auf dieselbe Länge aufgefüllt. Sie werden auch vor dem Einfügen in einen varchar- oder nvarchar-Datentyp durch Einfügen von Leerstellen auf dieselbe Länge gebracht.

OFF
Fügt nachfolgende Leerräume in Zeichenwerte in varchar oder nvarchar-Spalten ein. Belässt außerdem nachfolgende Nullen in Binärwerten, die in varbinary-Spalten eingefügt werden. Werte werden nicht bis zur Spaltenlänge aufgefüllt.

Ist OFF festgelegt, wirkt sich diese Einstellung nur auf die Definition neuer Spalten aus.

Wichtig

In einer späteren Version von SQL Server wird ANSI_PADDING immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt ist, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Es wird empfohlen, für ANSI_PADDING stets den Wert ON festzulegen. ANSI_PADDING muss beim Erstellen oder Bearbeiten von Indizes für berechnete Spalten oder indizierte Sichten auf ON festgelegt sein.

char(n) - und binary(n) -Spalten, die NULL-Werte zulassen, werden bis zur Spaltenlänge aufgefüllt, wenn ANSI_PADDING auf ON festgelegt ist. Ist ANSI_PADDING hingegen auf OFF festgelegt, werden nachfolgende Leerzeichen und Nullen abgeschnitten. char(n) - und binary(n) -Spalten, die keine NULL-Werte zulassen, werden immer bis zur Spaltenlänge aufgefüllt.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_PADDING. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_PADDING für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_PADDING.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_padding_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiPaddingEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ANSI_WARNINGS { ON | OFF }

EIN
Fehler und Warnungen werden ausgegeben, wenn z.B. ein Fehler wegen „Division durch Null“ auftritt. Fehler oder Warnungen werden ebenfalls ausgegeben, wenn Nullwerte in Aggregatfunktionen auftreten.

OFF
Bei Bedingungen wie einer Division durch Null werden keine Warnungen ausgegeben, und Nullwerte werden zurückgegeben.

Wichtig

SET ANSI_WARNINGS muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für ANSI_WARNINGS. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die ANSI_WARNINGS für die Sitzung auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET ANSI_WARNINGS.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_ansi_warnings_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAnsiWarningsEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

ARITHABORT { ON | OFF }

EIN
Eine Abfrage wird beendet, wenn während der Abfrage ein Überlauffehler oder ein Fehler aufgrund einer Division durch Null auftritt.

OFF
Eine Warnmeldung wird angezeigt, wenn einer dieser Fehler auftritt. Die Verarbeitung der Abfrage, des Batches oder der Transaktion wird fortgesetzt, als wäre kein Fehler aufgetreten, selbst wenn eine Warnung angezeigt wird.

Wichtig

SET ARITHABORT muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_arithabort_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsArithmeticAbortEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

COMPATIBILITY_LEVEL = {150 | 140 | 130 | 120 | 110 | 100}

Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

EIN
Das Ergebnis einer Verkettungsoperation ist NULL, wenn einer der Operanden NULL ist. Wenn z. B. die Zeichenfolge "This is" und NULL verkettet wird, ist das Ergebnis NULL statt "This is".

OFF
Der Nullwert wird als leere Zeichenfolge behandelt.

Wichtig

CONCAT_NULL_YIELDS_NULL muss auf ON festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

In einer späteren Version von SQL Server wird CONCAT_NULL_YIELDS_NULL immer auf ON festgelegt, und jede Anwendung, für die die Option explizit auf OFF festgelegt wurde, löst einen Fehler aus. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für CONCAT_NULL_YIELDS_NULL. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die CONCAT_NULL_YIELDS_NULL für die Sitzung auf ON festgelegt wird, wenn sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET CONCAT_NULL_YIELDS_NULL.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_concat_null_yields_null_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsNullConcat-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

NUMERIC_ROUNDABORT { ON | OFF }

EIN
Es wird ein Fehler generiert, wenn ein Genauigkeitsverlust in einem Ausdruck auftritt.

OFF
Bei einem Genauigkeitsverlust wird keine Fehlermeldung generiert, und das Ergebnis wird auf die Genauigkeit der Spalte oder Variablen gerundet, die das Ergebnis speichert.

Wichtig

NUMERIC_ROUNDABORT muss auf OFF festgelegt sein, wenn Sie Indizes auf berechneten Spalten oder indizierten Sichten erstellen oder ändern.

Sie können den Status dieser Option in der Spalte is_numeric_roundabort_on in der sys.databases-Katalogsicht ermitteln. Sie können den Status auch durch Untersuchen der IsNumericRoundAbortEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

QUOTED_IDENTIFIER { ON | OFF }

EIN
Doppelte Anführungszeichen können nur zum Einschließen von Begrenzungsbezeichnern verwendet werden.

Alle Zeichenfolgen, die durch doppelte Anführungszeichen begrenzt werden, werden als Objektbezeichner interpretiert. Bezeichner in Anführungszeichen müssen nicht den Transact-SQL-Regeln für Bezeichner entsprechen. Sie können Schlüsselwörter darstellen und Zeichen einschließen, die in Transact-SQL-Bezeichnern nicht zulässig sind. Ein einfaches Anführungszeichen (’), das zur Literalzeichenfolge selbst gehört, kann durch doppelte Anführungszeichen (’’) dargestellt werden.

OFF
Bezeichner dürfen nicht in Anführungszeichen eingeschlossen werden und müssen allen Transact-SQL-Regeln für Bezeichner entsprechen. Literale können in einfache oder doppelte Anführungszeichen eingeschlossen werden.

In SQL Server ist es zudem möglich, Bezeichner durch eckige Klammern ([ ]) zu begrenzen. Bezeichner in eckigen Klammern können immer verwendet werden, egal wie die Einstellung für QUOTED_IDENTIFIER lautet. Weitere Informationen finden Sie unter Datenbankbezeichner.

Beim Erstellen einer Tabelle wird die Option QUOTED IDENTIFIER immer als ON in den Metadaten der Tabelle gespeichert. Die Option wird gespeichert, selbst wenn die Option beim Erstellen der Tabelle auf OFF festgelegt ist.

Einstellungen auf Verbindungsebene, die mithilfe der SET-Anweisung festgelegt werden, überschreiben die Standardeinstellung der Datenbank für QUOTED_IDENTIFIER. ODBC- und OLE DB-Clients geben standardmäßig eine SET-Anweisung aus, durch die QUOTED_IDENTIFIER auf ON festgelegt wird. Die Clients führen die Anweisung aus, wenn Sie eine Verbindung mit einer Instanz von SQL Server herstellen. Weitere Informationen finden Sie unter SET QUOTED_IDENTIFIER.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_quoted_identifier_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsQuotedIdentifiersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

RECURSIVE_TRIGGERS { ON | OFF }

EIN
Das rekursive Auslösen von AFTER-Triggern ist zugelassen.

OFF
Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_recursive_triggers_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsRecursiveTriggersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Hinweis

Nur die direkte Rekursion wird verhindert, wenn RECURSIVE_TRIGGERS auf OFF festgelegt ist. Sie müssen auch die Geschachtelte Trigger-Serveroption auf 0 festlegen, um die indirekte Rekursion zu deaktivieren.

Sie können den Status dieser Option mithilfe der Spalte is_recursive_triggers_on in der Katalogsicht sys.databases oder der IsRecursiveTriggersEnabled-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln.

<target_recovery_time_option> ::=

Gibt die Frequenz indirekter Prüfpunkte auf Basis einzelner Datenbanken an. Ab SQL Server 2016 (13.x) beträgt der Standardwert für neue Datenbanken, der darauf hindeutet, dass Datenbanken indirekte Prüfpunkte verwendet werden, eine Minute. Der Standard für ältere Versionen ist 0 (null) und gibt an, dass die Datenbank automatische Prüfpunkte verwendet, deren Frequenz von der Einstellung für das Wiederherstellungsintervall der Serverinstanz abhängt. Für Microsoft ist für die meisten Systeme eine Minute empfohlen.

TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

target_recovery_time
Gibt die maximale Grenze für die Zeit an, die für die Wiederherstellung der angegebenen Datenbank im Fall eines Fehlers aufgewendet wird. target_recovery_time ist vom Typ int.

SECONDS
Gibt an, dass target_recovery_time die Anzahl von Sekunden darstellt.

MINUTES
Gibt an, dass target_recovery_time die Anzahl von Minuten darstellt.

Weitere Informationen zu indirekten Prüfpunkten finden Sie unter Datenbankprüfpunkte.

WITH <termination> ::=

Gibt an, wann beim Übergang der Datenbank von einem Status in einen anderen für unvollständige Transaktionen ein Rollback ausgeführt werden soll. Wird die Beendigungsklausel ausgelassen, wartet die ALTER DATABASE-Anweisung auf unbestimmte Zeit, wenn keine Sperre für die Datenbank besteht. Es kann nur eine Beendigungsklausel angegeben werden, und diese steht hinter den SET-Klauseln.

Hinweis

Nicht alle Datenbankoptionen verwenden die WITH <termination>-Klausel. Weitere Informationen finden Sie in der Tabelle unter Festlegen von Optionen im Abschnitt „Hinweise“ dieses Artikels.

ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
Gibt an, ob ein Rollback sofort oder nach Ablauf der angegebenen Sekundenzahl ausgeführt werden soll.

NO_WAIT
Gibt an, dass die Anforderung fehlschlägt, wenn diese Änderung des Datenbankstatus oder der Datenbankoption nicht sofort vollständig vorgenommen werden kann. Der sofortige Abschluss des Vorgangs bedeutet, dass nicht darauf gewartet wird, dass Transaktionen eigenständig einen Commit oder Rollback ausführen.

Festlegen von Optionen

Verwenden Sie die sys.databases-Katalogsicht oder DATABASEPROPERTYEX, um die aktuellen Einstellungen für Datenbankoptionen abzurufen.

Wenn Sie eine Datenbankoption festlegen, tritt die neue Einstellung sofort in Kraft.

Sie können die Standardwerte einer Datenbankoption für alle neu erstellten Datenbanken ändern. Ändern Sie hierfür die entsprechende Datenbankoption in der Systemdatenbank model.

Beispiele

A. Festlegen der Datenbank auf READ_ONLY

Für die Änderung des Status einer Datenbank oder Dateigruppe in READ_ONLY oder READ_WRITE wird der exklusive Zugriff auf die Datenbank benötigt. Im folgenden Beispiel wird die Datenbank in den RESTRICTED_USER-Modus gesetzt, um eingeschränkten Zugriff zu erhalten. Anschließend wird in dem Beispiel der Status der AdventureWorks2012-Datenbank auf READ_ONLY festgelegt und der Zugriff auf die Datenbank an alle Benutzer zurückgegeben.

USE master;
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

B. Aktivieren der Momentaufnahmeisolation für eine Datenbank

Im folgenden Beispiel wird die Option für das Momentaufnahmeisolations-Framework für die AdventureWorks2012-Datenbank aktiviert.

USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO

Das Resultset zeigt, dass das Framework für die Momentaufnahmeisolation aktiviert ist.

name snapshot_isolation_state description
[database_name] 1 EIN

C. Aktivieren, Ändern und Deaktivieren der Änderungsnachverfolgung

Im folgenden Beispiel wird die Änderungsnachverfolgung für die AdventureWorks2012-Datenbank aktiviert und die Aufbewahrungsdauer auf 2 Tage festgelegt.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

Das folgende Beispiel veranschaulicht, wie die Beibehaltungsdauer in 3 Tage geändert wird.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

Das folgende Beispiel veranschaulicht, wie die Änderungsnachverfolgung für die AdventureWorks2012-Datenbank deaktiviert wird.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

D: Aktivieren des Abfragespeichers

Im folgenden Beispiel werden der Abfragespeicher aktiviert und Parameter des Abfragespeichers konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      QUERY_CAPTURE_MODE = AUTO,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60
    );

E. Aktivieren des Abfragespeichers mit Wartestatistiken

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
    );

F. Aktivieren des Abfragespeichers mit benutzerdefinierten Erfassungsrichtlinienoptionen

Im folgenden Beispiel werden der Abfragespeicher aktiviert und dessen Parameter konfiguriert.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
      QUERY_CAPTURE_MODE = CUSTOM,
      QUERY_CAPTURE_POLICY = (
        STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
        EXECUTION_COUNT = 30,
        TOTAL_COMPILE_CPU_TIME_MS = 1000,
        TOTAL_EXECUTION_CPU_TIME_MS = 100
      )
    );

Siehe auch

* Azure Synapse
Analytics *
 

 

Azure Synapse Analytics

Syntax

ALTER DATABASE { database_name }
SET
{
    <optionspec> [ ,...n ]
}
;

<option_spec>::=
{
    <auto_option>
  | <db_encryption_option>
  | <query_store_options>
  | <result_set_caching>
  | <snapshot_option>
}
;

<auto_option> ::=
{
    AUTO_CREATE_STATISTICS { OFF | ON }
}

<db_encryption_option> ::=
{
    ENCRYPTION { ON | OFF }
}

<query_store_option> ::=
{
    QUERY_STORE { OFF |  ON }
}

<result_set_caching_option> ::=
{
    RESULT_SET_CACHING {ON | OFF}
}

<snapshot_option> ::=
{
    READ_COMMITTED_SNAPSHOT {ON | OFF }
}

Argumente

database_name

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

<auto_option> ::=

Steuert automatische Optionen.

AUTO_CREATE_STATISTICS { ON | OFF }

EIN
Der Abfrageoptimierer erstellt nach Bedarf Statistiken für einzelne Spalten in Abfrageprädikaten, um Abfragepläne sowie die Abfrageleistung zu verbessern. Diese Statistiken für einzelne Spalten werden erstellt, wenn der Abfrageoptimierer Abfragen kompiliert. Die Statistiken für einzelne Spalten werden nur für Spalten erstellt, die noch nicht der ersten Spalte eines vorhandenen Statistikobjekts entsprechen.

Der Standardwert ist ON. Für die meisten Datenbanken empfiehlt sich die Verwendung der Standardeinstellung.

OFF
Der Abfrageoptimierer erstellt beim Kompilieren von Abfragen keine Statistiken für einzelne Spalten in Abfrageprädikaten. Das Festlegen dieser Option auf OFF kann zu suboptimalen Abfrageplänen und einer beeinträchtigten Abfrageleistung führen.

Sie müssen während der Ausführung dieses Befehls mit der Benutzerdatenbank verbunden sein.

Sie können den Status dieser Option ermitteln, indem Sie die Spalte is_auto_create_stats_on in der sys.databases-Katalogsicht untersuchen. Sie können den Status auch durch Untersuchen der IsAutoCreateStatistics-Eigenschaft der DATABASEPROPERTYEX-Funktion bestimmen.

Weitere Informationen finden Sie im Abschnitt „Verwenden der datenbankweiten Statistikoptionen“ unter „Statistiken“.

<db_encryption_option> ::=

Steuert den Status der Datenbankverschlüsselung.

ENCRYPTION { ON | OFF }

EIN
Legt fest, dass die Datenbank verschlüsselt wird.

OFF
Legt fest, dass die Datenbank nicht verschlüsselt wird.

Weitere Informationen finden Sie unter „Transparent Data Encryption“ und „Transparent Data Encryption in Azure SQL-Datenbank“.

Wenn die Verschlüsselung auf Datenbankebene aktiviert wird, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank als READ ONLY festgelegt sind, tritt beim Datenbankverschlüsselungsvorgang ein Fehler auf.

Sie können den Verschlüsselungsstatus der Datenbank und den Status des Verschlüsselungsscans über die dynamische Verwaltungssicht sys.dm_database_encryption_keys anzeigen.

<query_store_option> ::=

Steuert, ob der Abfragespeicher in diesem Data Warehouse aktiviert ist.

QUERY_STORE { ON | OFF }

EIN
Aktiviert den Abfragespeicher.

OFF
Deaktiviert den Abfragespeicher. OFF ist der Standardwert.

Hinweis

Für Azure Synapse Analytics müssen Sie ALTER DATABASE SET QUERY_STORE aus der Benutzerdatenbank ausführen. Ein Ausführen dieser Anweisung aus einer anderen Data Warehouse-Instanz wird nicht unterstützt.

<result_set_caching_option> ::=

Gilt für: Azure Synapse Analytics

Steuert, ob das Abfrageergebnis in der Datenbank zwischengespeichert wird.

RESULT_SET_CACHING { ON | OFF}

EIN
Gibt an, dass von dieser Datenbank zurückgegebene Abfrageresultsets in der Datenbank zwischengespeichert werden

OFF
Gibt an, dass von dieser Datenbank zurückgegebene Abfrageresultsets nicht in der Datenbank zwischengespeichert werden

Sie müssen während der Ausführung dieses Befehls mit der master-Datenbank verbunden sein. Änderungen an dieser Datenbankeinstellung werden sofort wirksam. Speicherkosten fallen durch das Zwischenspeichern von Abfrageresultsets an. Nachdem die Zwischenspeicherung von Ergebnissen für eine Datenbank deaktiviert wurde, werden zuvor dauerhaft zwischengespeicherte Ergebnisse sofort aus dem Azure Synapse-Speicher gelöscht.

Führen Sie diesen Befehl aus, um die Cachekonfiguration der Ergebnismenge einer Datenbank zu überprüfen. Wenn das Zwischenspeichern der Ergebnismenge aktiviert ist (ON), gibt is_result_set_caching_on 1 zurück.

SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>

Führen Sie diesen Befehl aus, um zu überprüfen, ob eine Abfrage mithilfe eines zwischengespeicherten Ergebnisses ausgeführt wurde. Die Spalte result_cache_hit gibt folgende Werte zurück: 1 für Cachetreffer, 0 für Cachefehler und negative Werte für Gründe, warum das Zwischenspeichern von Resultsets nicht verwendet wurde. Weitere Informationen hierzu finden Sie unter sys.dm_pdw_exec_requests.

SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>

Wichtig

Die Vorgänge zum Erstellen des Resultsetcaches und zum Abrufen von Daten aus dem Cache erfolgen in dem Steuerknoten einer Data Warehouse-Instanz. Wenn das Zwischenspeichern von Resultsets aktiviert ist (ON), können ausgeführte Abfragen, die ein großes Resultset zurückgeben (z. B. >1 Million Zeilen), eine hohe CPU-Auslastung in dem Kontrollknoten verursachen und die gesamte Abfrageantwort auf der Instanz verlangsamen. Diese Abfragen werden häufig beim Durchsuchen von Daten oder ETL-Vorgängen verwendet. Benutzer sollten das Zwischenspeichern von Resultsets auf der Datenbank deaktivieren, bevor sie diese Abfragetypen ausführen, um den Kontrollknoten nicht zu belasten und Leistungsprobleme zu verursachen.

Weitere Informationen zur Leistungsoptimierung mithilfe des Zwischenspeicherns von Resultsets finden Sie in den Richtlinien zur Optimierung der Leistung.

Berechtigungen

Ein Benutzer muss entweder über die Serverebenenprinzipal-Anmeldung verfügen, die durch den Bereitstellungsprozess erstellt wurde, oder ein Mitglied der dbmanager-Datenbankrolle sein, um die Option RESULT_SET_CACHING festlegen zu können.

<snapshot_option> ::=

Gilt für: Azure Synapse Analytics

Steuert die Transaktionsisolationsstufe einer Datenbank.

READ_COMMITTED_SNAPSHOT { ON | OFF }

EIN
Aktiviert die Option READ_COMMITTED_SNAPSHOT auf Datenbankebene.

OFF
Deaktiviert die Option READ_COMMITTED_SNAPSHOT auf Datenbankebene.

Sie müssen während der Ausführung dieses Befehls mit der master-Datenbank verbunden sein. Wenn Sie für eine Benutzerdatenbank die Option READ_COMMITTED_SNAPSHOT auf ON oder OFF festlegen, werden alle aktiven Verbindungen mit dieser Datenbank getrennt. Sie sollten diese Änderung innerhalb des Datenbankwartungsfensters vornehmen oder warten, bis mit Ausnahme der Verbindung, die zur Ausführung des ALTER DATABASE-Befehls verwendet wird, keine Verbindung mit der Datenbank mehr besteht. Die Datenbank muss sich nicht im Einzelbenutzermodus befinden. Die Einstellung READ_COMMITTED_SNAPSHOT kann nicht auf Sitzungsebene geändert werden. Überprüfen Sie die Spalte is_read_committed_snapshot_on in sys.databases, um diese Einstellung für eine Datenbank zu überprüfen.

Wenn für eine Datenbank READ_COMMITTED_SNAPSHOT aktiviert ist, werden Abfragen möglicherweise langsamer ausgeführt, wenn mehrere Datenversionen vorliegen und nach einer Version gesucht wird. Lange geöffnete Transaktionen können ebenfalls zu einer Vergrößerung der Datenbank führen. Dieses Problem tritt auf, wenn von diesen Transaktionen Datenänderungen vorgenommen werden, die die Versionsbereinigung blockieren.

Berechtigungen

Ein Benutzer benötigt die ALTER-Berechtigung für eine Datenbank, um die Option READ_COMMITTED_SNAPSHOT festlegen zu können.

Beispiele

Überprüfen der Statistikeinstellung für eine Datenbank

SELECT name, is_auto_create_stats_on FROM sys.databases

Aktivieren des Abfragespeichers für eine Datenbank

ALTER DATABASE [database_name]
SET QUERY_STORE = ON;

Aktivieren der Zwischenspeicherung von Resultsets für eine Datenbank

-- Run this command when connecting to the MASTER database

ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;

Überprüfen der Einstellung für die Zwischenspeicherung von Resultsets für eine Datenbank

SELECT name, is_result_set_caching_on
FROM sys.databases;

Aktivieren der Option READ_COMMITTED_SNAPSHOT für eine Datenbank

-- Run this command when connecting to the MASTER database

ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON

Weitere Informationen