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.
Hinweis
Das Festlegen einiger Optionen mit ALTER DATABASE erfordert möglicherweise exklusiven Datenbankzugriff. Wenn die ALTER DATABASE-Anweisung nicht rechtzeitig abgeschlossen wird, überprüfen Sie, ob andere Sitzungen innerhalb der Datenbank die ALTER DATABASE-Sitzung blockieren.
Weitere Informationen zu Syntaxkonventionen finden Sie unter Transact-SQL-Syntaxkonventionen.
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>
| <persistent_log_buffer_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <suspend_for_snapshot_backup>
| <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 = { 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 }
}
<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
}
}
<persistent_log_buffer_option> ::=
{
PERSISTENT_LOG_BUFFER
{
= ON (DIRECTORY_NAME= 'path-to-directory-on-a-DAX-volume')
| = 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 = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<suspend_for_snapshot_backup> ::=
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]
<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 beschleunigte Datenbankwiederherstellung (ADR). ADR ist standardmäßig in SQL Server 2019 (15.x) und höher auf OFF festgelegt. Mithilfe dieser Syntax können Sie eine bestimmte Dateigruppe für die Daten des persistenten Versionsspeichers (PVS) festlegen. Wenn keine Dateigruppe angegeben ist, wird der PVS in der PRIMARY
Dateigruppe gespeichert. Weitere Informationen finden Sie unter Verwalten der beschleunigten 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 tritt beispielsweise auf, wenn ein Benutzer eine
USE database_name
-Anweisung ausgibt. Die Datenbank wird möglicherweise sauber beendet, AUTO_CLOSE auf "EIN" festgelegt ist. Wenn dies der Fall ist, wird die Datenbank erst erneut geöffnet, wenn ein Benutzer versucht, die Datenbank beim nächsten Neustart des Datenbankmoduls zu verwenden.Nachdem eine Datenbank heruntergefahren wurde, muss die Datenbank, wenn eine Anwendung das nächste Mal versucht, die Datenbank zu verwenden, zunächst geöffnet werden. Daraufhin ändert sich der Status in „online“. Dies kann einige Zeit dauern und kann zu Anwendungstimeouts führen.
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.
Wenn AUTO_CLOSE auf EIN festgelegt ist, gibt einige Spalten in der sys.databases Katalogansicht und die DATABASEPROPERTYEX Funktion NULL zurück, da die Datenbank nicht zum Abrufen 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.
Die einstellung AUTO_CLOSE kann in einigen seltenen Situationen hilfreich sein, z. B. in einer SQL Server-Instanz ohne ausreichend Arbeitsspeicher, um mit einer großen Anzahl von Datenbanken oder für eine ältere 32-Bit-SQL Server-Instanz mit einer großen Anzahl von Datenbanken ordnungsgemäß zu arbeiten. In solchen Szenarien kann es sinnvoll sein, AUTO_CLOSE zu aktivieren und die erforderlichen Speicherressourcen zu sparen, um eine Datenbank geöffnet zu halten, wenn keine Anwendung die Datenbank verwendet. Wenn die Datenbank geöffnet ist, sind einige Standardspeicherzuweisungen erforderlich (z. B. interne Strukturen, die verschiedene Datenbankmetadatenobjekte und Transaktionsprotokollpuffer darzustellen).
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. Wenn Sie nicht über eine bestimmte Anforderung verfügen, legen Sie die AUTO_SHRINK-Datenbankoption nicht auf "EIN" fest. 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 regelmäßigen Überprüfungen auf nicht genutzten Speicherplatz nicht automatisch abgeschrumpft.
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 = { DEFAULT | ON | OFF }
DEFAULT
Der Standardwert für SQL Server ist „OFF“.
EIN
Die Datenbank-Engine erzwingt automatisch den neusten fehlerfreien Plan bei Transact-SQL-Abfragen, bei denen neue Abfragepläne negative Auswirkungen auf die Leistung haben. Die Datenbank-Engine überwacht kontinuierlich die Abfrageleistung der Transact-SQL-Abfrage mit dem erzwungenen Plan.
Wenn Leistungsgewinne erzielt werden, verwendet das Datenbankmodul den letzten bekannten guten Plan. Wenn Leistungsgewinne nicht erkannt werden, erzeugt das Datenbankmodul einen neuen Abfrageplan. Die Anweisung schlägt fehl, wenn die Abfragespeicher- nicht aktiviert ist oder sich der Abfragespeicher nicht im Lese-/Schreibzugriff Modus 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 jedoch nicht automatisch angewendet. Benutzer*innen 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 Azure 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. Das Festlegen des Datenbankeinschlusses auf teilweise fehlschlägt, wenn die Datenbank Replikation, Änderungsdatenerfassung oder Änderungsnachverfolgung aktiviert ist. 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 geöffnet, wenn eine Transaktion zugesichert wird; Ein Rollback einer Transaktion schließt alle Cursor, mit Ausnahme der Cursor, die 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.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
Standardeinstellung ist ON, wird aber nach einer Point-In-Time-Wiederherstellung automatisch ebenfalls auf OFF festgelegt. Weitere Informationen zum Aktivieren dieser Einstellung finden Sie unter Konfigurieren der Aufbewahrungsrichtlinie.
EIN
Standard. Aktiviert die Aufbewahrungsrichtlinie für temporale Tabellen. Weitere Informationen finden Sie unter Verwalten der Beibehaltung von Verlaufsdaten in temporalen Tabellen mit Systemversionsverwaltung.
OFF
Führen Sie keine zeitliche aufbewahrungsgeschichtliche Richtlinie aus.
<data_retention_policy> ::=
Gilt nur 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
Korrelationsstatistiken werden nicht beibehalten.
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 die transparente Datenverschlüsselung aktiviert oder deaktiviert wurde, oder nachdem 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 zur Datenbankverschlüsselung finden Sie unter Transparent data encryption (TDE)und Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics.
Wenn die Verschlüsselung auf Datenbankebene aktiviert ist, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank schreibgeschützt festgelegt sind, schlägt der Datenbankverschlüsselungsvorgang fehl.
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 sich während eines aktiven Wiederherstellungsvorgangs im WIEDERHERSTELLEN-Zustand befinden 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 zusätzliche Statistiken erforderlich sind, nachdem eine Datenbank auf READ_ONLY festgelegt wurde, erstellt das Datenbankmodul Statistiken in der
tempdb
Systemdatenbank. 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 unter der 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. Bei Festlegung auf EIN verwendeter Hintergrundthread zum Aktualisieren von Statistiken wird eine Verbindung mit der Datenbank hergestellt, und Sie können nicht im Einzelbenutzermodus 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:
Legen Sie AUTO_UPDATE_STATISTICS_ASYNC auf OFF fest.
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 Cross db Ownership Chaining-Serveroption 0 (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 ist, 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 ist, 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 ist, 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 ist, 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 ist, 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
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.
Zahlreiche neue Leistungsfeatures von SQL Server 2022 (16.x), z. B. Abfragespeicherhinweise, Feedback zur Kardinalitätsschätzung, DOP-Feedback (Degree Of Parallelism, Parallelitätsgrad) und Persistenz für das Feedback zur Speicherzuweisung (Memory Grant Feedback, MGF) setzen voraus, dass der Abfragespeicher aktiviert ist. Bei Datenbanken, die aus anderen SQL Server-Instanzen wiederhergestellt wurden und für Datenbanken, die von einem direkten Upgrade auf SQL Server 2022 (16.x) aktualisiert wurden, behalten diese Datenbanken die vorherigen Abfragespeichereinstellungen bei. Wenn es bedenken kann, dass der Overheadabfragespeicher eingeführt werden kann, können Administratoren benutzerdefinierten Erfassungsrichtlinien mit
QUERY_CAPTURE_MODE = CUSTOM
nutzen. Beispiele zum Aktivieren des Abfragespeichers mit benutzerdefinierten Erfassungsrichtlinienoptionen finden Sie weiter unten in diesem Artikel im Abschnitt Beispiele.OFF [ ( FORCED ) ]
Deaktiviert den Abfragespeicher. 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
Der Abfragespeicher kann in der Azure SQL-Datenbank nicht deaktiviert werden. Das Ausführen
ALTER DATABASE [database] SET QUERY_STORE = OFF
gibt die Warnung'QUERY_STORE=OFF' is not supported in this version of SQL Server.
zurück.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 erschöpft ist, ändert der Abfragespeicher den Vorgangsmodus in READ_ONLY.
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 1000 MB.
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 den MAX_STORAGE_SIZE_MB
Grenzwert zwischen Speichergrößenüberprüfungen verletzt 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 genügend Speicherplatz gelöscht wurde, wechselt der Abfragespeichermodus automatisch zurück zum Lese-/Schreibzugriff.
Wichtig
Wenn Sie der Meinung sind, dass ihre Workloaderfassung mehr als 10 GB Speicherplatz benötigt, sollten Sie Ihre Workload wahrscheinlich überdenken und optimieren, um Abfragepläne wiederzuverwenden (z. B. die Verwendung von erzwungenen Parametrisierung, oder passen Sie die Abfragespeicherkonfigurationen an.
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
Größenbasierte Bereinigung wird automatisch aktiviert, wenn die Größe auf dem Datenträger 90% von MAX_STORAGE_SIZE_MBerreicht. 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
Die größenbasierte 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. QUERY_CAPTURE_MODE ist vom Typ nvarchar.
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 Kompilierungs- und Laufzeitstatistiken für bereits erfasste Abfragen. Verwenden Sie diese Konfiguration mit Vorsicht, da Sie möglicherweise wichtige Abfragen nicht erfassen.
CUSTOM
Gilt für: SQL Server (ab SQL Server 2019 (15.x))
Ermöglicht die Kontrolle über die QUERY_CAPTURE_POLICY-Optionen. Dank benutzerdefinierter Erfassungsrichtlinien kann der Abfragespeicher die wichtigsten Abfragen in Ihrer Workload erfassen. Informationen zu anpassbaren Option finden Sie unter <query_capture_policy_option_list>.
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 Wartezeitstatistiken pro Abfrage erfasst werden.
EIN
Wartestatistikinformationen pro Abfrage werden erfasst. Dies ist der Standardkonfigurationswert.
OFF
Die Statistikinformationen 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.
Ab SQL Server 2019 (15.x) erfasst die QUERY_CAPTURE_MODE = AUTO
Einstellung Abfragespeicher Details, wenn ein der folgenden Schwellenwerte erreicht wird:
- EXECUTION_COUNT = 30 Ausführungen = Ausführungsanzahl
- TOTAL_COMPILE_CPU_TIME_MS = 1 Sekunde = Kompilierungszeit in Millisekunden
- TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = CPU-Ausführungszeit in Millisekunden
Beispiel:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Sie können diese Optionen mit QUERY_CAPTURE_MODE = CUSTOM
anpassen:
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 den 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 entsprechenden 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
Datenbankseitenschreibvorgänge generieren keinen CHECKSUM- oder TORN_PAGE_DETECTION-Wert. SQL Server überprüft während eines Lesevorgangs keine Prüfsummen- oder Tornseite, auch 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 (10.0.x) lautet der Standardwert für die Datenbanktempdb
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 Datenbanktempdb
verwenden.TORN_PAGE_DETECTION verwenden möglicherweise weniger Ressourcen, bietet jedoch eine minimale Teilmenge des CHECKSUM-Schutzes.
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. Obwohl das Wiederherstellen der Daten das Problem mit der Datenbeschädigung behebt, sollte die Ursache (z. B. Datenträgerhardwarefehler) so schnell wie möglich diagnostiziert und korrigiert werden, um fortlaufende Fehler zu vermeiden.
SQL Server wiederholt alle Lesevorgänge, die mit einer Prüfsumme, einer Gerissenseite oder einem anderen E/A-Fehler viermal fehlschlagen. 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. Der Befehl schlägt mit der Fehlermeldung 824 fehl, wenn die Wiederholungsversuche fehlschlagen.
Weitere Informationen zu den Fehlermeldungen 823, 824 und 825 finden Sie unter:
- Problembehandlung bei MSSQLSERVER-Fehler 823
- Problembehandlung bei MSSQLSERVER-Fehler 824-
- Problembehandlung bei MSSQLSERVER-Fehler 825 (Lese-Wiederholung).
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.
Wichtig
Stretch Database ist in SQL Server 2022 (16.x) und der Azure SQL-Datenbank veraltet. Diese Funktion wird in einer zukünftigen Version der Datenbank-Engine entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.
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 diedb_owner
- undCONTROL 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 der Microsoft Entra-ID verbunden ist.
- Der Azure-Remoteserver wird konfiguriert, um die Microsoft Entra-Authentifizierung zu unterstützen.
- Das Dienstkonto, unter dem die SQL Server-Instanz ausgeführt wird, muss auf dem Azure-Remoteserver als ein
dbmanager
- odersysadmin
-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.
PERSISTENT_LOG_BUFFER
Gilt für: SQL Server 2017 (14.x) und höher.
Wenn diese Option angegeben ist, wird der Transaktionsprotokollpuffer auf einem Volume erstellt, das sich auf einem Datenträgergerät befindet, das von Speicherklassenspeicher unterstützt wird (NVDIMM-N nicht volatile Speicher), auch als persistenter Protokollpuffer bezeichnet. Weitere Informationen finden Sie unter Transaktions-Commit-Latenzbeschleunigung mit Speicherklassenspeicher und Hinzufügen eines beständigen Protokollpuffers zu einer Datenbank.
<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 andere Sitzungen Ressourcen in der Datenbank gesperrt haben, 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 beendet, 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, nehmen die neue Einstellung erst auf, wenn einige der Nachrichten für das Dialogfeld gesendet werden. 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, wird der Befehl ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
sechs Sekunden angehalten und der Vorgang erneut ausgeführt.
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 beibehalten, wenn die Datenbank später auf READ_WRITE festgelegt ist.
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 ist.
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_ONLYerstellt wird und READ_COMMITTED_SNAPSHOT anschließend mithilfe ALTER DATABASEgeändert wird, gehen die 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 Tabellen 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 sind, folgen Einschränkungsregeln, was auch immer diese Einstellung sein kann.
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 = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Weitere Informationen finden Sie unter ALTER DATABASE Compatibility Level.
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 enthalten, die in Transact-SQL-Bezeichnern nicht zulässig sind. Wenn ein doppeltes Anführungszeichen (
"
) Teil des Bezeichners ist, kann es durch zwei 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 ([
und ]
) 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 derIsRecursiveTriggersEnabled
-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.
<suspend_for_snapshot_backup> ::=
Gilt für: SQL Server (ab SQL Server 2022 (16.x))
Hält Datenbanken für die Momentaufnahmesicherung an. Kann eine Gruppe einer oder mehrerer Datenbanken definieren. Kann den Modus "Nur Kopieren" festlegen.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }
Hält Datenbanken an oder hebt das Anhalten auf. Standardeinstellung: AUS.
MODE = COPY_ONLY
Optional. Verwendet den modus COPY_ONLY.
<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) wird der Standardwert für neue Datenbanken 1 Minute, was angibt, dass die Datenbank indirekte Prüfpunkte verwendet. Bei älteren Versionen lautet der Standardwert 0, der angibt, dass die Datenbank automatische Prüfpunkte verwendet, deren Häufigkeit von der Einstellung des Wiederherstellungsintervalls 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 die angeforderte Datenbankstatus- oder Optionsänderung nicht sofort abgeschlossen werden kann. Der sofortige Abschluss des Vorgangs bedeutet, dass nicht darauf gewartet wird, dass Transaktionen eigenständig einen Commit oder Rollback ausführen.
SET-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 die 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 AdventureWorks2022
-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 AdventureWorks2022
-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. Alle unvollständigen Transaktionen werden zurückgesetzt, und alle anderen Verbindungen mit der AdventureWorks2022
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 von Momentaufnahmeisolation für eine Datenbank
Im folgenden Beispiel wird die Option für das Momentaufnahmeisolations-Framework für die AdventureWorks2022
-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 oder Deaktivieren der Änderungsnachverfolgung
Im folgenden Beispiel wird die Änderungsnachverfolgung für die AdventureWorks2022
-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 AdventureWorks2022
-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
)
);
Zugehöriger Inhalt
- Statistik
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- ALTER DATABASE-Kompatibilitätsstufe
- ALTER DATABASE-Datenbankspiegelung
- ALTER DATABASE SET HADR
- CREATE DATABASE
- Aktivieren und Deaktivieren der Änderungsnachverfolgung (SQL Server)
- DROP DATABASE (Transact-SQL)
- FESTLEGEN DER TRANSAKTIONSISOLATIONSSTUFE (Transact-SQL)
- sp_configure
- Bewährte Methoden für die Überwachung von Workloads mit abfragespeicher-
* SQL-Datenbank *
SQL-Datenbank
Kompatibilitätsstufen sind SET
Optionen, werden jedoch in ALTER DATABASE-Kompatibilitätsstufebeschrieben.
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 = { 160 | 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. WennCURRENT
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. Wenn Sie nicht über eine bestimmte Anforderung verfügen, legen Sie die AUTO_SHRINK-Datenbankoption nicht auf "EIN" fest. 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 regelmäßigen Überprüfungen auf nicht genutzten Speicherplatz nicht automatisch abgeschrumpft.
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 derIsAutoUpdateStatistics
-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
Wenn Sie den Wert für die automatische Optimierung auf AUTO festlegen, werden die Azure-Konfigurationsstandardwerte für die automatische Optimierung angewendet. 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. Damit die Vererbung funktioniert, müssen die drei einzelnen Optimierungsoptionen FORCE_LAST_GOOD_PLAN, CREATE_INDEX und DROP_INDEX für Datenbanken auf DEFAULT festgelegt werden.
CUSTOM
Mithilfe des BENUTZERDEFINIERTEn Werts müssen Sie jede der optionen für die automatische Optimierung in Datenbanken benutzerdefinierte 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, d. h., neue Datenbanken erben standardmäßig die Einstellung von ON.
EIN
Die Datenbank-Engine erzwingt automatisch den neusten fehlerfreien Plan bei Transact-SQL-Abfragen, bei denen neue Abfragepläne negative Auswirkungen auf die Leistung haben. Die Datenbank-Engine überwacht kontinuierlich die Abfrageleistung der Transact-SQL-Abfrage mit dem erzwungenen Plan. Wenn Leistungsgewinne erzielt werden, verwendet das Datenbankmodul den letzten bekannten guten Plan. Wenn Leistungsgewinne nicht erkannt werden, erzeugt das Datenbankmodul einen neuen Abfrageplan. Die Anweisung schlägt fehl, wenn der Abfragespeicher nicht aktiviert ist oder sich nicht im Lese-/Schreibzugriff Modus 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 jedoch nicht automatisch angewendet. Benutzer*innen 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 geöffnet, wenn eine Transaktion zugesichert wird; Durch das Zurücksetzen einer Transaktion werden alle Cursor geschlossen, mit Ausnahme der Cursor, die 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 zur Datenbankverschlüsselung finden Sie unter Transparent data encryption (TDE)und Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics.
Wenn die Verschlüsselung auf Datenbankebene aktiviert ist, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank schreibgeschützt festgelegt sind, schlägt der Datenbankverschlüsselungsvorgang fehl.
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 zusätzliche Statistiken erforderlich sind, nachdem eine Datenbank auf READ_ONLY festgelegt wurde, erstellt das Datenbankmodul Statistiken in
tempdb
. 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 Serverrollendbcreator
undsysadmin
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. In Azure SQL-Datenbank, sollte innerhalb der Benutzerdatenbank ausgeführt werden. In dermaster
-Datenbank tritt möglicherweise eine FehlermeldungMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
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 derUserAccess
-Eigenschaft der DATABASEPROPERTYEX-Funktion ermitteln. In Azure SQL-Datenbank, sollte innerhalb der Benutzerdatenbank ausgeführt werden. In dermaster
-Datenbank tritt möglicherweise eine FehlermeldungMsg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.
<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. Das Ausführen
ALTER DATABASE [database] SET QUERY_STORE = OFF
gibt die Warnung'QUERY_STORE=OFF' is not supported in this version of SQL Server.
zurück.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 der maximal zugewiesene Speicherplatz des Abfragespeichers erschöpft ist, ändert der Abfragespeicher den Vorgangsmodus in READ_ONLY.
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.
Hinweis
In Azure SQL-Datenbank unterscheidet sich der Standardwert von MAX_STORAGE_SIZE_MB
je nach Dienstebene wie folgt: Premium, Unternehmenskritisch und Hyperscale: 1.024 MB; Standard und Universell: 100 MB; Basic: 10 MB. Der maximal zulässige Wert von MAX_STORAGE_SIZE_MB
beträgt 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 den MAX_STORAGE_SIZE_MB
Grenzwert zwischen Speichergrößenüberprüfungen verletzt 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 genügend Speicherplatz gelöscht wurde, wechselt der Abfragespeichermodus automatisch zurück zum Lese-/Schreibzugriff.
Wichtig
Wenn Sie der Meinung sind, dass ihre Workloaderfassung mehr als 10 GB Speicherplatz benötigt, sollten Sie Ihre Workload wahrscheinlich überdenken und optimieren, um Abfragepläne wiederzuverwenden (z. B. die Verwendung von erzwungenen Parametrisierung, oder passen Sie die Abfragespeicherkonfigurationen an.
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 die Gesamtmenge der Daten nahe an der maximalen Größe liegt.
OFF
Größenbasierte Bereinigung wird nicht automatisch aktiviert.
AUTO
Größenbasierte Bereinigung wird automatisch aktiviert, wenn die Größe auf dem Datenträger 90% von max_storage_size_mberreicht. 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 Kompilierungs- und Laufzeitstatistiken für bereits erfasste Abfragen. Verwenden Sie diese Konfiguration mit Vorsicht, da Sie möglicherweise wichtige Abfragen nicht erfassen.
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 Wartezeitstatistiken pro Abfrage erfasst werden.
EIN
Wartestatistikinformationen pro Abfrage werden erfasst. Dies ist der Standardkonfigurationswert.
OFF
Die Statistikinformationen 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
, ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF
wird die Anweisung sechs Sekunden angehalten und der Vorgang erneut ausgeführt.
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 beibehalten, wenn die Datenbank später auf READ_WRITE festgelegt ist.
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 ist.
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 Daten in der Tabelle 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 Tabellen 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 sind, folgen Einschränkungsregeln, was auch immer diese Einstellung sein kann.
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 = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Weitere Informationen finden Sie unter ALTER DATABASE Compatibility Level.
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 enthalten, die in Transact-SQL-Bezeichnern nicht zulässig sind. Wenn ein doppeltes Anführungszeichen (
"
) Teil des Bezeichners ist, kann es durch zwei 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 ([
und ]
) 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 derIsRecursiveTriggersEnabled
-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) wird der Standardwert für neue Datenbanken 1 Minute, was angibt, dass die Datenbank indirekte Prüfpunkte verwendet. Bei älteren Versionen lautet der Standardwert 0, der angibt, dass die Datenbank automatische Prüfpunkte verwendet, deren Häufigkeit von der Einstellung des Wiederherstellungsintervalls 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 die angeforderte Datenbankstatus- oder Optionsänderung nicht sofort abgeschlossen werden kann. Der sofortige Abschluss des Vorgangs bedeutet, dass nicht darauf gewartet wird, dass Transaktionen eigenständig einen Commit oder Rollback ausführen.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
Standardeinstellung ist ON, wird aber nach einer Point-In-Time-Wiederherstellung automatisch ebenfalls auf OFF festgelegt. Weitere Informationen zum Aktivieren dieser Einstellung finden Sie unter Konfigurieren der Aufbewahrungsrichtlinie.
EIN
Standard. Aktiviert die Aufbewahrungsrichtlinie für temporale Tabellen. Weitere Informationen finden Sie unter Verwalten der Beibehaltung von Verlaufsdaten in temporalen Tabellen mit Systemversionsverwaltung.
OFF
Führen Sie keine zeitliche aufbewahrungsgeschichtliche Richtlinie aus.
SET-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 die 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
Das Ändern des Status einer Datenbank oder Dateigruppe in READ_ONLY oder READ_WRITE erfordert exklusiven Zugriff auf die Datenbank und kann einige Sekunden dauern. 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 AdventureWorks2022
-Datenbank auf READ_ONLY
festgelegt und der Zugriff auf die Datenbank an alle Benutzer zurückgegeben.
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command might take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO
So legen Sie die Datenbank wieder auf den Lese-/Schreibmodus fest:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
So überprüfen Sie dies:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Aktivieren von Momentaufnahmeisolation für eine Datenbank
Im folgenden Beispiel wird die Option für das Momentaufnahmeisolations-Framework für die AdventureWorks2022
-Datenbank aktiviert.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Überprüfen Sie den Status von „snapshot_isolation_framework
“ in der Datenbank.
--Connect to [database_name]
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 oder Deaktivieren der Änderungsnachverfolgung
Im folgenden Beispiel wird die Änderungsnachverfolgung für die AdventureWorks2022
-Datenbank aktiviert und die Aufbewahrungsdauer auf 2
Tage festgelegt.
--Connect to [database_name]
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.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Das folgende Beispiel veranschaulicht, wie die Änderungsnachverfolgung für die AdventureWorks2022
-Datenbank deaktiviert wird.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D: Aktivieren des Abfragespeichers
Im folgenden Beispiel werden der Abfragespeicher aktiviert und Parameter des Abfragespeichers konfiguriert.
--Connect to [database_name]
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.
--Connect to [database_name]
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.
--Connect to [database_name]
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
)
);
Zugehöriger Inhalt
- Statistik
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- ALTER DATABASE-Kompatibilitätsstufe
- ALTER DATABASE-Datenbankspiegelung
- CREATE DATABASE
- Aktivieren und Deaktivieren der Änderungsnachverfolgung (SQL Server)
- DROP DATABASE (Transact-SQL)
- FESTLEGEN DER TRANSAKTIONSISOLATIONSSTUFE (Transact-SQL)
- sp_configure
- Bewährte Methoden für die Überwachung von Workloads mit abfragespeicher-
- Abfragespeicherhinweise
* SQL Managed Instance *
Verwaltete Azure SQL-Datenbank-Instanz
Kompatibilitätsstufen sind SET
Optionen, werden jedoch in ALTER DATABASE-Kompatibilitätsstufebeschrieben.
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 = { 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 }
<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 = { 160 | 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 derIsAutoCreateStatistics
-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. Wenn Sie nicht über eine bestimmte Anforderung verfügen, legen Sie die AUTO_SHRINK-Datenbankoption nicht auf "EIN" fest. 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 regelmäßigen Überprüfungen auf nicht genutzten Speicherplatz nicht automatisch abgeschrumpft.
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 = { DEFAULT | ON | OFF }
Aktiviert bzw. deaktiviert die Option FORCE_LAST_GOOD_PLAN
für die automatische Optimierung.
DEFAULT
Der Standardwert für Azure SQL Managed Instance ist ON.
EIN
Die Datenbank-Engine erzwingt automatisch den neusten fehlerfreien Plan bei Transact-SQL-Abfragen, bei denen neue Abfragepläne negative Auswirkungen auf die Leistung haben. Die Datenbank-Engine überwacht kontinuierlich die Abfrageleistung der Transact-SQL-Abfrage mit dem erzwungenen Plan. Wenn Leistungsgewinne erzielt werden, verwendet das Datenbankmodul den letzten bekannten guten Plan. Wenn Leistungsgewinne nicht erkannt werden, erzeugt das Datenbankmodul einen neuen Abfrageplan. Die Anweisung schlägt fehl, wenn der Abfragespeicher nicht aktiviert ist oder sich nicht im Lese-/Schreibzugriff Modus befindet. Dies ist der Standardwert.
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 jedoch nicht automatisch angewendet. Benutzer*innen 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 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 zur Datenbankverschlüsselung finden Sie unter Transparent data encryption (TDE)und Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics.
Wenn die Verschlüsselung auf Datenbankebene aktiviert ist, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank schreibgeschützt festgelegt sind, schlägt der Datenbankverschlüsselungsvorgang fehl.
Der Verschlüsselungsstatus der Datenbank wird mit der dynamischen Verwaltungssicht sys.dm_database_encryption_keys angezeigt.
<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 der maximal zugewiesene Speicherplatz des Abfragespeichers erschöpft ist, ändert der Abfragespeicher den Vorgangsmodus in READ_ONLY.
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.
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 den MAX_STORAGE_SIZE_MB
Grenzwert zwischen Speichergrößenüberprüfungen verletzt 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 genügend Speicherplatz gelöscht wurde, wechselt der Abfragespeichermodus automatisch zurück zum Lese-/Schreibzugriff.
Wichtig
- Wenn Sie der Meinung sind, dass ihre Workloaderfassung mehr als 10 GB Speicherplatz benötigt, sollten Sie Ihre Workload wahrscheinlich überdenken und optimieren, um Abfragepläne wiederzuverwenden (z. B. die Verwendung von erzwungenen Parametrisierung, oder passen Sie die Abfragespeicherkonfigurationen an.
- 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. - Der Grenzwert für die Einstellung
MAX_STORAGE_SIZE_MB
beträgt bei Azure SQL Managed Instance 10.240 MB.
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 die Gesamtmenge der Daten nahe an der maximalen Größe liegt.
OFF
Größenbasierte Bereinigung wird nicht automatisch aktiviert.
AUTO
Größenbasierte Bereinigung wird automatisch aktiviert, wenn die Größe auf dem Datenträger 90% von max_storage_size_mberreicht. 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 Kompilierungs- und Laufzeitstatistiken für bereits erfasste Abfragen. Verwenden Sie diese Konfiguration mit Vorsicht, da Sie möglicherweise wichtige Abfragen nicht erfassen.
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 Wartezeitstatistiken pro Abfrage erfasst werden.
EIN
Wartestatistikinformationen pro Abfrage werden erfasst. Dies ist der Standardkonfigurationswert.
OFF
Die Statistikinformationen 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, ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
wird die Anweisung sechs Sekunden angehalten und der Vorgang erneut ausgeführt.
Sie können den Status von ALLOW_SNAPSHOT_ISOLATION nicht ändern, wenn die Datenbank OFFLINE ist.
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.
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_ONLYerstellt wird und READ_COMMITTED_SNAPSHOT anschließend mithilfe ALTER DATABASEgeändert wird, gehen die 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 Tabellen 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 sind, folgen Einschränkungsregeln, was auch immer diese Einstellung sein kann.
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 = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Weitere Informationen finden Sie unter ALTER DATABASE Compatibility Level.
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 enthalten, die in Transact-SQL-Bezeichnern nicht zulässig sind. Wenn ein doppeltes Anführungszeichen (
"
) Teil des Bezeichners ist, kann es durch zwei 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 ([
und ]
) 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 derIsRecursiveTriggersEnabled
-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> ::=
target_recovery_time_option wird in Azure SQL Managed Instance nicht unterstützt.
Gibt die Frequenz indirekter Prüfpunkte auf Basis einzelner Datenbanken an. Ab SQL Server 2016 (13.x) wird der Standardwert für neue Datenbanken 1 Minute, was angibt, dass die Datenbank indirekte Prüfpunkte verwendet. Bei älteren Versionen lautet der Standardwert 0, der angibt, dass die Datenbank automatische Prüfpunkte verwendet, deren Häufigkeit von der Einstellung des Wiederherstellungsintervalls der Serverinstanz abhängt. Für Microsoft ist für die meisten Systeme eine Minute empfohlen.
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 die angeforderte Datenbankstatus- oder Optionsänderung nicht sofort abgeschlossen werden kann. Der sofortige Abschluss des Vorgangs bedeutet, dass nicht darauf gewartet wird, dass Transaktionen eigenständig einen Commit oder Rollback ausführen.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
Standardeinstellung ist ON, wird aber nach einer Point-In-Time-Wiederherstellung automatisch ebenfalls auf OFF festgelegt. Weitere Informationen zum Aktivieren dieser Einstellung finden Sie unter Konfigurieren der Aufbewahrungsrichtlinie.
EIN
Standard. Aktiviert die Aufbewahrungsrichtlinie für temporale Tabellen. Weitere Informationen finden Sie unter Verwalten der Beibehaltung von Verlaufsdaten in temporalen Tabellen mit Systemversionsverwaltung.
OFF
Führen Sie keine zeitliche aufbewahrungsgeschichtliche Richtlinie aus.
SET-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. Aktivieren von Momentaufnahmeisolation für eine Datenbank
Im folgenden Beispiel wird die Option für das Momentaufnahmeisolations-Framework für die AdventureWorks2022
-Datenbank aktiviert.
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 |
B. Aktivieren, Ändern oder Deaktivieren der Änderungsnachverfolgung
Im folgenden Beispiel wird die Änderungsnachverfolgung für die AdventureWorks2022
-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 AdventureWorks2022
-Datenbank deaktiviert wird.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. 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
);
D: 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
);
E. 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
)
);
Zugehöriger Inhalt
- Statistik
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- ALTER DATABASE-Kompatibilitätsstufe
- ALTER DATABASE-Datenbankspiegelung
- CREATE DATABASE
- Aktivieren und Deaktivieren der Änderungsnachverfolgung (SQL Server)
- DROP DATABASE (Transact-SQL)
- FESTLEGEN DER TRANSAKTIONSISOLATIONSSTUFE (Transact-SQL)
- sp_configure
- Bewährte Methoden für die Überwachung von Workloads mit abfragespeicher-
* 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 zur Datenbankverschlüsselung finden Sie unter Transparent data encryption (TDE)und Transparent data encryption for Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics.
Wenn die Verschlüsselung auf Datenbankebene aktiviert ist, werden alle Dateigruppen verschlüsselt. Alle neuen Dateigruppen erben die verschlüsselte Eigenschaft. Wenn Dateigruppen in der Datenbank schreibgeschützt festgelegt sind, schlägt der Datenbankverschlüsselungsvorgang fehl.
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.
Hinweis
Für Azure Synapse Analytics kann der Abfragespeicher wie auf anderen Plattformen aktiviert werden, aber zusätzliche Konfigurationsoptionen werden 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 Abfrageergebnissätze in der Datenbank zwischengespeichert werden.
OFF
Gibt an, dass von dieser Datenbank zurückgegebene Abfrageergebnissätze 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. Nach dem Deaktivieren der Ergebniszwischenspeicherung für eine Datenbank wird der zuvor gespeicherte Ergebniscache 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 die Zwischenspeicherung des Resultsets aktiviert ist, 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 1 für Cachetreffer, 0 für Cachefehler und negative Werte aus Gründen zurück, warum die Zwischenspeicherung des 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'>
Hinweis
Das Zwischenspeichern des Resultsets darf nicht in Verbindung mit DECRYPTBYKEY verwendet werden. Wenn diese kryptografische Funktion erforderlich ist, stellen Sie sicher, dass Sie die Zwischenspeicherung des Resultsets zum Zeitpunkt der Ausführung (entweder auf Sitzungsebene oder Datenbankebene) deaktiviert haben.
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 im 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 READ_COMMITTED_SNAPSHOT EIN- oder AUS für eine Benutzerdatenbank aktivieren, werden alle offenen Verbindungen zu dieser Datenbank beendet. Sie sollten diese Änderung während eines Datenbankwartungsfensters vornehmen oder warten, bis keine aktive Verbindung mit der Datenbank besteht, mit Ausnahme der Verbindung, die den Befehl ALTER DATABASE ausführt. 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.
In einer Datenbank mit aktivierter READ_COMMITTED_SNAPSHOT können Abfragen aufgrund der Überprüfung von Versionen eine langsamere Leistung erzielen, wenn mehrere Datenversionen vorhanden sind. 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 von Abfragespeicher 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
Führen Sie diesen Befehl aus, wenn Sie eine Verbindung mit der master
-Datenbank herstellen.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Zugehöriger Inhalt
Microsoft Fabric
Microsoft Fabric
Dient ALTER DATABASE ... SET
zum Verwalten eines Microsoft Fabric Warehouse.
Syntax
-- Microsoft Fabric
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
Hinweise
Derzeit werden das Anhalten der Veröffentlichung von Delta Lake-Protokollen und das Deaktivieren des V-Order-Verhaltens in einem Lager die einzige Verwendung in ALTER DATABASE ... SET
Microsoft Fabric.
Berechtigungen
Der Benutzer muss Mitglied der Rollen "Administrator", "Mitglied" oder "Mitwirkender" im Fabric-Arbeitsbereich sein.
Beispiele
A. Anhalten der Veröffentlichung von Delta Lake Logs
Mit dem folgenden T-SQL-Befehl wird die Delta Lake Log-Veröffentlichung im aktuellen Lagerkontext angehalten.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Um den aktuellen Status der Delta Lake Log-Veröffentlichung in allen Lagern Ihres Arbeitsbereichs zu überprüfen, verwenden Sie den folgenden T-SQL-Code, um sys.databases in einem neuen Abfragefenster abzufragen:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;