ÄNDRA ALTERNATIV FÖR DATABASUPPSÄTTNING (Transact-SQL)
Anger databasalternativ i Microsoft SQL Server, Azure SQL Database och Azure Synapse Analytics. Andra alternativ för ALTER DATABASE finns i ALTER DATABASE.
Not
Om du ställer in vissa alternativ med ALTER DATABASE kan det kräva exklusiv databasåtkomst. Om ALTER DATABASE-instruktionen inte slutförs i tid kontrollerar du om andra sessioner i databasen blockerar ALTER DATABASE-sessionen.
Mer information om syntaxkonventionerna finns i Transact-SQL syntaxkonventioner.
Välj en produkt
På följande rad väljer du det produktnamn du är intresserad av. Om du gör det visas olika innehåll här på den här webbsidan, lämpligt för den produkt du väljer.
* SQL Server *
SQL Server
Databasspegling, AlwaysOn-tillgänglighetsgrupper och kompatibilitetsnivåer är SET
alternativ men beskrivs i separata artiklar på grund av deras längd. Mer information finns i ALTER DATABASE Mirroring, ALTER DATABASE SET HADRoch ALTER DATABASE compatibility level.
Databasomfattande konfigurationer används för att ange flera databaskonfigurationer på enskild databasnivå. Mer information finns i ALTER DATABASE SCOPED CONFIGURATION.
Not
Många alternativ för databasuppsättningar kan konfigureras för den aktuella sessionen med hjälp av SET-instruktioner och konfigureras ofta av program när de ansluter. Uppsättningsalternativ på sessionsnivå åsidosätter ALTER DATABASE SET
värden. Databasalternativen som beskrivs i följande avsnitt är värden som du kan ange för sessioner som inte uttryckligen anger andra angivna alternativvärden.
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 }
Argument
database_name
Namnet på databasen som ska ändras.
STRÖM
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Kör åtgärden i den aktuella databasen.
CURRENT
stöds inte för alla alternativ i alla kontexter. Om CURRENT
misslyckas anger du databasnamnet.
<accelerated_database_recovery> ::=
gäller för: SQL Server (från och med SQL Server 2019 (15.x))
Aktiverar accelererad databasåterställning (ADR). ADR är inställt på AV som standard i SQL Server 2019 (15.x) och senare. Med den här syntaxen kan du ange en specifik filgrupp för PVS-data (Persistent Version Store). Om ingen filgrupp har angetts lagras PVS i PRIMARY
-filgruppen. Mer information finns i Hantera accelererad databasåterställning.
<auto_option> ::=
Styr automatiska alternativ.
AUTO_CLOSE { ON | AV }
PÅ
Databasen stängs av helt och dess resurser frigörs efter att den senaste användaren har avslutats.
Databasen öppnas automatiskt igen när en användare försöker använda databasen igen. Det här beteendet inträffar till exempel när en användare utfärdar en
USE database_name
-instruktion. Databasen kan stängas av rent med AUTO_CLOSE inställt på PÅ. I så fall öppnas inte databasen igen förrän en användare försöker använda databasen nästa gång databasmotorn startas om.När en databas har stängts av måste databasen först öppnas nästa gång ett program försöker använda databasen och sedan ändras statusen till online. Det kan ta lite tid och resultera i tidsgränser för program.
BORT
Databasen förblir öppen efter att den senaste användaren har avslutats.
Alternativet AUTO_CLOSE är användbart för skrivbordsdatabaser eftersom det gör att databasfiler kan hanteras som vanliga filer. De kan flyttas, kopieras för att göra säkerhetskopior eller till och med skickas via e-post till andra användare. Den AUTO_CLOSE processen är asynkron. att öppna och stänga databasen upprepade gånger minskar inte prestandan.
Not
Alternativet AUTO_CLOSE är inte tillgängligt i en innesluten databas eller i SQL Database.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_close_on
i sys.databases katalogvy eller egenskapen IsAutoClose
för funktionen DATABASEPROPERTYEX.
När AUTO_CLOSE är inställt på PÅ returnerar vissa kolumner i sys.databases katalogvyn och funktionen DATABASEPROPERTYEX NULL eftersom databasen inte är tillgänglig för att hämta data. Lös problemet genom att köra en USE-instruktion för att öppna databasen.
Databasspegling kräver AUTO_CLOSE inställt på OFF.
När databasen är inställd på AUTOCLOSE = ON
rensar en åtgärd som initierar en automatisk databasavstängning plancachen för instansen av SQL Server. Om du rensar plancachen blir det en omkompilering av alla efterföljande körningsplaner och kan orsaka en plötslig, tillfällig minskning av frågeprestanda. Från och med SQL Server 2005 (9.x) Service Pack 2 innehåller SQL Server-felloggen följande informationsmeddelande för varje rensat cachelager i plancachen: 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
. Det här meddelandet loggas var femte minut så länge cacheminnet rensas inom det tidsintervallet.
Inställningen AUTO_CLOSE kan vara en användbar funktion i vissa sällsynta situationer, till exempel i en SQL Server-instans utan tillräckligt med minne för att fungera stabilt med ett stort antal databaser eller för en äldre 32-bitars SQL Server-instans med ett stort antal databaser. I sådana scenarier kan det vara användbart att aktivera AUTO_CLOSE och spara de minnesresurser som krävs för att hålla en databas öppen när det inte finns något program som använder databasen. När databasen är öppen krävs vissa standardminnesallokeringar (till exempel interna strukturer för att representera olika databasmetadataobjekt och transaktionsloggbuffertar).
AUTO_CREATE_STATISTICS { ON | AV }
PÅ
Frågeoptimeraren skapar statistik för enskilda kolumner i frågepredikat vid behov för att förbättra frågeplaner och frågeprestanda. Den här statistiken med en kolumn skapas när Query Optimizer kompilerar frågor. Enkolumnsstatistiken skapas endast för kolumner som inte redan är den första kolumnen i ett befintligt statistikobjekt.
Standardinställningen är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
BORT
Frågeoptimeraren skapar inte statistik för enskilda kolumner i frågepredikat när den kompilerar frågor. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_create_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoCreateStatistics
för funktionen DATABASEPROPERTYEX.
Mer information finns i avsnittet "Använda statistikalternativen för hela databasen" i Statistics.
INCREMENTAL = ON | BORT
gäller för: SQL Server (från och med SQL Server 2014 (12.x)) och Azure SQL Database
Ställ in AUTO_CREATE_STATISTICS på PÅ och ange INKREMENTELL till PÅ. Detta anger automatiskt skapad statistik som inkrementell när inkrementell statistik stöds. Standardvärdet är AV. Mer information finns i CREATE STATISTICS.
AUTO_SHRINK { ON | AV }
PÅ
Databasfilerna är kandidater för regelbunden krympning. Om du inte har ett specifikt krav ska du inte ange alternativet AUTO_SHRINK databas till PÅ. Mer information finns i Krympa en databas.
Både datafiler och loggfiler kan krympas automatiskt. AUTO_SHRINK minskar storleken på transaktionsloggen endast om du ställer in databasen på SIMPLE-återställningsmodell eller om du säkerhetskopierar loggen. När du anger AUTO_SHRINK till AV krymps inte databasfilerna automatiskt under periodiska kontroller av oanvänt utrymme.
Alternativet AUTO_SHRINK krymper filer när mer än 25 procent av filen innehåller outnyttjat utrymme. Filen krymps till en av två storlekar (beroende på vilket som är större):
- Storleken med vilken 25 procent av filen är outnyttjat utrymme
- Storleken på filen när den skapades
Du kan inte krympa en skrivskyddad databas.
BORT
Databasfilerna krymps inte automatiskt under periodiska kontroller av oanvänt utrymme.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_shrink_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoShrink
för funktionen DATABASEPROPERTYEX.
Not
Alternativet AUTO_SHRINK är inte tillgängligt i en innesluten databas.
AUTO_UPDATE_STATISTICS { ON | AV }
PÅ
Anger att Query Optimizer uppdaterar statistik när de används av en fråga och när de kan vara inaktuella. Statistiken blir inaktuell efter att åtgärderna infoga, uppdatera, ta bort eller slå samman ändrar datadistributionen i tabellen eller den indexerade vyn. Frågeoptimeraren avgör när statistiken kan vara inaktuell genom att räkna antalet dataändringar sedan den senaste statistikuppdateringen och jämföra antalet ändringar med ett tröskelvärde. Tröskelvärdet baseras på antalet rader i tabellen eller den indexerade vyn.
Frågeoptimeraren söker efter inaktuell statistik innan den kompilerar en fråga och kör en cachelagrad frågeplan. Query Optimizer använder kolumner, tabeller och indexerade vyer i frågepredikatet för att avgöra vilken statistik som kan vara inaktuell. Frågeoptimeraren avgör den här informationen innan den kompilerar en fråga. Innan du kör en cachelagrad frågeplan verifierar databasmotorn att frågeplanen refererar till up-to-date-statistik.
Alternativet AUTO_UPDATE_STATISTICS gäller för statistik som skapats för index, enkla kolumner i frågepredikat och statistik som skapas med hjälp av instruktionen CREATE STATISTICS. Det här alternativet gäller även för filtrerad statistik.
Standardvärdet är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
Använd alternativet AUTO_UPDATE_STATISTICS_ASYNC för att ange om statistiken uppdateras synkront eller asynkront.
BORT
Anger att Frågeoptimeraren inte uppdaterar statistik när de används av en fråga. Query Optimizer uppdaterar inte heller statistik när de kan vara inaktuella. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_update_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoUpdateStatistics
för funktionen DATABASEPROPERTYEX.
Mer information finns i avsnittet "Använda statistikalternativen för hela databasen" i Statistics.
AUTO_UPDATE_STATISTICS_ASYNC { ON | AV }
PÅ
Anger att statistikuppdateringar för alternativet AUTO_UPDATE_STATISTICS är asynkrona. Frågeoptimeraren väntar inte på att statistikuppdateringarna ska slutföras innan frågor kompileras.
Att ställa in det här alternativet på PÅ har ingen effekt om inte AUTO_UPDATE_STATISTICS är inställt på PÅ.
Som standard är alternativet AUTO_UPDATE_STATISTICS_ASYNC AV och Frågeoptimeraren uppdaterar statistik synkront.
BORT
Anger att statistikuppdateringar för alternativet AUTO_UPDATE_STATISTICS är synkrona. Frågeoptimeraren väntar på att statistikuppdateringarna ska slutföras innan frågor kompileras.
Not
Att ställa in det här alternativet på AV har ingen effekt om inte AUTO_UPDATE_STATISTICS är inställt på PÅ.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_update_stats_async_on
i sys.databases katalogvy.
Mer information som beskriver när du ska använda synkrona eller asynkrona statistikuppdateringar finns i avsnittet "Statistikalternativ" i Statistics.
<automatic_tuning_option> ::=
gäller för: SQL Server (från och med SQL Server 2017 (14.x))
Aktiverar eller inaktiverar FORCE_LAST_GOOD_PLAN
alternativet Automatisk justering. Du kan visa status för det här alternativet i vyn sys.database_automatic_tuning_options
.
FORCE_LAST_GOOD_PLAN = { STANDARD | PÅ | AV }
STANDARD
Standardvärdet för SQL Server är AV.
PÅ
Databasmotorn tvingar automatiskt fram den senast kända bra planen för Transact-SQL frågor där en ny frågeplan orsakar prestandaregressioner. Databasmotorn övervakar kontinuerligt frågeprestanda för den Transact-SQL frågan med den framtvingade planen.
Om det finns prestandavinster fortsätter databasmotorn att använda den senast kända bra planen. Om prestandavinster inte identifieras skapar databasmotorn en ny frågeplan. Instruktionen misslyckas om Query Store- inte är aktiverad eller om Frågearkivet inte är i läs- och skrivläge läge.
BORT
Databasmotorn rapporterar potentiella frågeprestandaregressioner som orsakas av ändringar i frågeplanen i sys.dm_db_tuning_recommendations vy. Dessa rekommendationer tillämpas dock inte automatiskt. Användare kan övervaka aktiva rekommendationer och åtgärda identifierade problem genom att använda Transact-SQL skript som visas i vyn. Standardvärdet är AV.
<change_tracking_option> ::=
gäller för: SQL Server och Azure SQL Database
Styr ändringsspårningsalternativ. Du kan aktivera ändringsspårning, ange alternativ, ändra alternativ och inaktivera ändringsspårning. Exempel finns i avsnittet Exempel senare i den här artikeln.
PÅ
Aktiverar ändringsspårning för databasen. När du aktiverar ändringsspårning kan du också ange alternativen AUTOMATISK RENSNING och ÄNDRINGSBEVARANDE.
AUTO_CLEANUP = { ON | AV }
PÅ
Information om ändringsspårning tas bort automatiskt efter den angivna kvarhållningsperioden.
BORT
Ändringsspårningsdata tas inte bort automatiskt från databasen.
CHANGE_RETENTION = retention_period { DAYS | TIMMAR | MINUTER }
Anger den minsta perioden för att behålla information om ändringsspårning i databasen. Data tas bara bort när värdet för AUTO_CLEANUP är PÅ.
retention_period är ett heltal som anger den numeriska komponenten i kvarhållningsperioden.
Standardkvarhållningsperioden är 2 dagar. Den minsta kvarhållningsperioden är 1 minut. Standardkvarhållningstypen är DAYS.
OFF Inaktiverar ändringsspårning för databasen. Inaktivera ändringsspårning för alla tabeller innan du inaktiverar ändringsspårning från databasen.
<containment_option> ::=
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Styr databas-inneslutningsalternativ.
CONTAINMENT = { NONE | PARTIAL}
INGEN
Databasen är inte en innesluten databas.
PARTIELL
Databasen är en innesluten databas. Det går inte att ställa in databasens inneslutning till partiell om databasen har replikering, ändringsdatainsamling eller ändringsspårning aktiverat. Felkontrollen stoppas efter ett fel. Mer information om inneslutna databaser finns i inneslutna databaser.
<cursor_option> ::=
Styr markörens alternativ.
CURSOR_CLOSE_ON_COMMIT { ON | AV }
PÅ
Alla markörer som öppnas när du checkar in eller återställer en transaktion stängs.
BORT
Markörer förblir öppna när en transaktion checkas in. om du återställer en transaktion stängs alla markörer, förutom de markörer som definierats som INSENSITIVE eller STATIC.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för CURSOR_CLOSE_ON_COMMIT. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå CURSOR_CLOSE_ON_COMMIT till AV för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET CURSOR_CLOSE_ON_COMMIT.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_cursor_close_on_commit_on
i sys.databases katalogvy eller egenskapen IsCloseCursorsOnCommitEnabled
för funktionen DATABASEPROPERTYEX.
CURSOR_DEFAULT { LOCAL | GLOBAL }
gäller för: SQL Server
Styr om markörens omfång använder LOCAL eller GLOBAL.
LOKAL
När du anger LOCAL och inte definierar en markör som GLOBAL när du skapar markören är markörens omfång lokalt. Mer specifikt är omfånget lokalt för batchen, den lagrade proceduren eller utlösaren där du skapade markören. Markörens namn är endast giltigt inom det här omfånget.
Markören kan refereras till av lokala markörvariabler i batchen, lagrad procedur eller utlösare eller en utdataparameter för lagrad procedur. Markören frigörs implicit när batchen, den lagrade proceduren eller utlösaren slutar. Markören frigörs om den inte skickades tillbaka i en OUTPUT-parameter. Markören kan skickas tillbaka i en OUTPUT-parameter. Om markören skickas tillbaka på det här sättet frigörs markören när den sista variabeln som refererar till markören frigörs eller hamnar utanför omfånget.
GLOBAL
När GLOBAL anges och en markör inte definieras som LOKAL när den skapas är markörens omfång globalt för anslutningen. Markörens namn kan refereras i valfri lagrad procedur eller batch som körs av anslutningen.
Markören frigörs implicit endast vid frånkoppling. Mer information finns i DEKLARERA MARKÖREN.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_local_cursor_default
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsLocalCursorsDefault
för funktionen DATABASEPROPERTYEX.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | AV }
PÅ som standard men ställs också automatiskt in på AV efter återställning vid tidpunkt. Mer information om hur du aktiverar den här inställningen finns i Konfigurera kvarhållningsprincip.
PÅ
Standard. Aktiverar kvarhållningsprincip för temporala tabeller. Mer information finns i Hantera kvarhållning av historiska data i systemversionsbaserade temporala tabeller.
BORT
Utför inte en tidsmässig historisk kvarhållningsprincip.
<data_retention_policy> ::=
gäller endast för: Azure SQL Edge.
DATA_RETENTION { ON | AV }
PÅ
Aktiverar principbaserad rensning av datakvarhållning på en databas.
BORT
Inaktiverar principbaserad rensning av datakvarhållning på en databas.
<database_mirroring>
gäller för: SQL Server
Argumentbeskrivningarna finns i ALTER DATABASE Database Mirroring.
<date_correlation_optimization_option> ::=
gäller för: SQL Server
Styr alternativet date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | AV }
PÅ
SQL Server upprätthåller korrelationsstatistik där en FOREIGN KEY-begränsning länkar två tabeller i databasen och tabellerna har datetime- kolumner.
BORT
Korrelationsstatistik underhålls inte.
Om du vill ange DATE_CORRELATION_OPTIMIZATION till PÅ får det inte finnas några aktiva anslutningar till databasen förutom anslutningen som kör ALTER DATABASE-instruktionen. Därefter stöds flera anslutningar.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_date_correlation_on
i sys.databases katalogvy.
<db_encryption_option> ::=
Styr databaskrypteringstillståndet.
KRYPTERING { PÅ | AV | SUSPEND | RESUME }
PÅ
Anger att databasen ska krypteras.
BORT
Anger att databasen inte ska krypteras.
HÄNGA
gäller för: SQL Server (från och med SQL Server 2019 (15.x))
Kan användas för att pausa krypteringsgenomsökningen efter att transparent datakryptering har aktiverats eller inaktiverats, eller efter att krypteringsnyckeln har ändrats.
ÅTERUPPTA
gäller för: SQL Server (från och med SQL Server 2019 (15.x))
Kan användas för att återuppta en tidigare pausad krypteringsgenomsökning.
Mer information om databaskryptering finns i Transparent datakryptering (TDE)och Transparent datakryptering för Azure SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics.
När kryptering är aktiverat på databasnivå krypteras alla filgrupper. Alla nya filgrupper ärver den krypterade egenskapen. Om några filgrupper i databasen är inställda på SKRIVSKYDDad misslyckas databaskrypteringsåtgärden.
Du kan se krypteringstillståndet för databasen och krypteringsgenomsökningens tillstånd med hjälp av sys.dm_database_encryption_keys dynamisk hanteringsvy.
<db_state_option> ::=
gäller för: SQL Server
Styr databasens tillstånd.
OFFLINE
Databasen stängs, stängs av rent och markeras offline. Det går inte att ändra databasen när den är offline.
UPPKOPPLAD
Databasen är öppen och tillgänglig för användning.
NÖD
Databasen är markerad READ_ONLY, loggning är inaktiverad och åtkomsten är begränsad till medlemmar i den fasta serverrollen sysadmin. EMERGENCY används främst för felsökning. Till exempel kan en databas som markerats som misstänkt på grund av en skadad loggfil ställas in på nödtillståndet. Den här inställningen kan ge systemadministratören skrivskyddad åtkomst till databasen. Endast medlemmar i den fasta serverrollen sysadmin kan ange en databas till nödtillståndet.
Kräver ALTER DATABASE
behörighet för ämnesdatabasen, för att ändra en databas till offline- eller nödsituationstillståndet, och servernivån ALTER ANY DATABASE
behörighet att flytta en databas från offline till online.
Du kan fastställa det här alternativets status genom att undersöka kolumnerna state
och state_desc
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen Status
för funktionen DATABASEPROPERTYEX. Mer information finns i Databastillstånd.
En databas som har markerats som ÅTERSTÄLLNING kan inte ställas in på OFFLINE, ONLINE eller NÖDSITUATION. En databas kan vara i återställningstillståndet under en aktiv återställningsåtgärd eller när en återställningsåtgärd för en databas eller loggfil misslyckas på grund av en skadad säkerhetskopia.
<db_update_option> ::=
Styr om uppdateringar tillåts i databasen.
READ_ONLY
Användare kan läsa data från databasen men inte ändra dem.
Not
Uppdatera statistik innan du ställer in en databas på READ_ONLY för att förbättra frågeprestandan. Om ytterligare statistik behövs efter att en databas har angetts till READ_ONLY skapar databasmotorn statistik i
tempdb
systemdatabas. Mer information om statistik för en skrivskyddad databas finns i Statistics.READ_WRITE
Databasen är tillgänglig för läs- och skrivåtgärder.
Om du vill ändra det här tillståndet måste du ha exklusiv åtkomst till databasen. Mer information finns i SINGLE_USER-satsen.
Not
I federerade Azure SQL Database-databaser är SET { READ_ONLY | READ_WRITE }
inaktiverat.
<db_user_access_option> ::=
Styr användaråtkomsten till databasen.
SINGLE_USER
gäller för: SQL Server
Anger att endast en användare i taget kan komma åt databasen. Om du anger SINGLE_USER och en annan användare ansluter till databasen blockeras ALTER DATABASE-instruktionen tills alla användare kopplar från den angivna databasen. Information om hur du åsidosätter det här beteendet finns i satsen MED <avslutning>.
Databasen förblir i SINGLE_USER läge även om användaren som anger alternativet loggar ut. Då kan en annan användare, men bara en, ansluta till databasen.
Innan du ställer in databasen på SINGLE_USER kontrollerar du att alternativet AUTO_UPDATE_STATISTICS_ASYNC är inställt på AV. När den är inställd på PÅ, tar den bakgrundstråd som används för att uppdatera statistik en anslutning mot databasen och du kan inte komma åt databasen i enanvändarläge. Om du vill visa status för det här alternativet frågar du kolumnen is_auto_update_stats_async_on
i sys.databases katalogvy. Om alternativet är inställt på PÅ utför du följande uppgifter:
Ställ in AUTO_UPDATE_STATISTICS_ASYNC på AV.
Sök efter aktiva asynkrona statistikjobb genom att fråga sys.dm_exec_background_job_queue dynamisk hanteringsvy.
Om det finns aktiva jobb kan du antingen låta jobben slutföra eller avsluta dem manuellt med hjälp av KILL STATS JOB.
RESTRICTED_USER
Tillåter endast medlemmar i den db_owner
fasta databasrollen och dbcreator
och sysadmin
fasta serverroller att ansluta till databasen. RESTRICTED_USER begränsar inte deras antal. Koppla från alla anslutningar till databasen med den tidsram som anges i ALTER DATABASE-instruktionens avslutningssats. När databasen har övergått till RESTRICTED_USER tillstånd nekas anslutningsförsök av okvalificerade användare.
MULTI_USER
Alla användare som har rätt behörighet att ansluta till databasen tillåts. Du kan fastställa det här alternativets status genom att undersöka kolumnen user_access
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen UserAccess
för funktionen DATABASEPROPERTYEX.
<delayed_durability_option> ::=
gäller för: SQL Server (från och med SQL Server 2014 (12.x))
Styr om transaktioner checkar in helt varaktiga eller fördröjda varaktiga.
HANDIKAPPAD
Alla transaktioner som följer
SET DISABLED
är helt hållbara. Eventuella hållbarhetsalternativ som anges i ett atomiskt block eller incheckningsinstruktivt uttryck ignoreras.TILLÅTEN
Alla transaktioner som följer
SET ALLOWED
är antingen helt hållbara eller fördröjda varaktiga, beroende på hållbarhetsalternativet som anges i atomblocket eller incheckningsinstrukeringen.FORCERAD
Alla transaktioner som följer
SET FORCED
är fördröjda varaktiga. Eventuella hållbarhetsalternativ som anges i ett atomiskt block eller incheckningsinstruktivt uttryck ignoreras.
<external_access_option> ::=
gäller för: SQL Server
Styr om databasen kan nås av externa resurser, till exempel objekt från en annan databas.
DB_CHAINING { ON | AV }
PÅ
Databasen kan vara källan eller målet för en ägarkedja mellan databaser.
BORT
Databasen kan inte delta i korsdatabasägarlänkning.
Viktig
Sql Server-instansen känner igen den här inställningen när alternativet korsdatabasägarlänkningsserver är 0 (OFF). När korsdatabasens ägarlänkning är 1 (ON) kan alla användardatabaser delta i ägarkedjor mellan databaser, oavsett värdet för det här alternativet. Det här alternativet anges med hjälp av sp_configure.
Om du vill ange det här alternativet kräver CONTROL SERVER
behörighet för databasen.
Det DB_CHAINING alternativet kan inte anges för master
, model
och tempdb
systemdatabaser.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_db_chaining_on
i sys.databases katalogvy.
TRUSTWORTHY { ON | AV }
PÅ
Databasmoduler (till exempel användardefinierade funktioner eller lagrade procedurer) som använder en personifieringskontext kan komma åt resurser utanför databasen.
BORT
Databasmoduler i en personifieringskontext kan inte komma åt resurser utanför databasen.
TRUSTWORTHY anges till AV när databasen är ansluten.
Som standard har alla systemdatabaser utom den msdb
databasen TRUSTWORTHY inställt på AV. Det går inte att ändra värdet för model
- och tempdb
-databaserna. Vi rekommenderar att du aldrig anger alternativet TRUSTWORTHY till PÅ för master
-databasen.
Om du vill ange det här alternativet kräver CONTROL SERVER
behörighet för databasen.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_trustworthy_on
i sys.databases katalogvy.
DEFAULT_FULLTEXT_LANGUAGE
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Anger standardspråkvärdet för fulltextindexerade kolumner.
Viktig
Det här alternativet kan endast tillåtas när CONTAINMENT har angetts till PARTIELL. Om CONTAINMENT är inställt på NONE uppstår fel.
DEFAULT_LANGUAGE
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Anger standardspråket för alla nyligen skapade inloggningar. Språket kan anges genom att ange det lokala ID:t (lcid), språknamnet eller språkaliaset. En lista över godtagbara språknamn och alias finns i sys.syslanguages. Det här alternativet kan endast tillåtas när CONTAINMENT har angetts till PARTIELL. Om CONTAINMENT är inställt på NONE uppstår fel.
NESTED_TRIGGERS
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Anger om en AFTER-utlösare kan kaskad; det vill: utföra en åtgärd som initierar en annan utlösare, som initierar en annan utlösare och så vidare. Det här alternativet kan endast tillåtas när CONTAINMENT har angetts till PARTIELL. Om CONTAINMENT är inställt på NONE uppstår fel.
TRANSFORM_NOISE_WORDS
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Används för att förhindra ett felmeddelande om brusord eller stoppord gör att en boolesk åtgärd i en fulltextfråga misslyckas. Det här alternativet kan endast tillåtas när CONTAINMENT har angetts till PARTIELL. Om CONTAINMENT är inställt på NONE uppstår fel.
TWO_DIGIT_YEAR_CUTOFF
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Anger ett heltal från 1753 till 9999 som representerar brytåret för att tolka tvåsiffriga år som fyrsiffriga år. Det här alternativet kan endast tillåtas när CONTAINMENT har angetts till PARTIELL. Om CONTAINMENT är inställt på NONE uppstår fel.
<FILESTREAM_option> ::=
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Styr inställningarna för FileTables.
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
BORT
Icke-transaktionell åtkomst till FileTable-data är inaktiverad.
READ_ONLY
FILESTREAM-data i FileTables i den här databasen kan läsas av icke-transaktionella processer.
FULL
Aktiverar fullständig, icke-transaktionell åtkomst till FILESTREAM-data i FileTables är aktiverat.
DIRECTORY_NAME = <directory_name>
Ett Windows-kompatibelt katalognamn. Det här namnet ska vara unikt bland alla katalognamn på databasnivå i SQL Server-instansen. Unikhetsjämförelse är skiftlägeskänslig, oavsett sorteringsinställningar. Det här alternativet måste anges innan du skapar en FileTable i den här databasen.
<HADR_options> ::=
gäller för: SQL Server
<mixed_page_allocation_option> ::=
gäller för: SQL Server (från och med SQL Server 2016 (13.x))
Styr om databasen kan skapa inledande sidor med en blandad omfattning för de första åtta sidorna i en tabell eller ett index.
MIXED_PAGE_ALLOCATION { OFF | PÅ }
BORT
Databasen skapar alltid inledande sidor med enhetliga omfattningar. OFF är standardvärdet.
PÅ
Databasen kan skapa inledande sidor med blandade omfattningar.
Den här inställningen är PÅ för alla systemdatabaser. Den tempdb
systemdatabasen är den enda systemdatabasen som stöder OFF.
<PARAMETERIZATION_option> ::=
Styr parameteriseringsalternativet. Mer information om parameterisering finns i arkitekturguiden för frågebearbetning.
PARAMETERIZATION { SIMPLE | FORCED }
ENKEL
Frågor parametriseras baserat på databasens standardbeteende.
FORCERAD
SQL Server parameteriserar alla frågor i databasen.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_parameterization_forced
i sys.databases katalogvy.
<query_store_options> ::=
gäller för: SQL Server (från och med SQL Server 2016 (13.x))
PÅ | OFF [ ( FORCED ) ] | RENSA [ ALLA ]
Styr om Query Store är aktiverat i den här databasen och styr även borttagningen av innehållet i Query Store. Mer information finns i Användningsscenarier för frågearkivet.
PÅ
Aktiverar Query Store.
Många nya prestandafunktioner i SQL Server 2022 (16.x) som Query Store-tips, CE-feedback, DOP-feedback (Degree of Parallelism) och MGF-beständighet (Memory Grant Feedback) krävde att Query Store skulle aktiveras. För databaser som har återställts från andra SQL Server-instanser och för de databaser som uppgraderas från en uppgradering på plats till SQL Server 2022 (16.x) behåller dessa databaser de tidigare Query Store-inställningarna. Om det finns en oro för att query store kan introduceras kan administratörer använda anpassade avbildningsprinciper med
QUERY_CAPTURE_MODE = CUSTOM
. Exempel på hur du aktiverar Query Store med anpassade alternativ för avbildningsprinciper finns i avsnittet Exempel senare i den här artikeln.AV [ ( TVINGAD ) ]
Inaktiverar Query Store. FORCED är valfritt. FORCED avbryter alla bakgrundsaktiviteter som körs i Query Store och hoppar över den synkrona tömningen när Query Store är inaktiverat. Gör att Query Store stängs av så snabbt som möjligt. FORCED gäller för SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 och senare versioner.
Not
Det går inte att inaktivera Query Store i Azure SQL Database. Om du kör
ALTER DATABASE [database] SET QUERY_STORE = OFF
returneras varningen'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.RENSA [ ALLA ]
Tar bort frågerelaterade data från Query Store. ALL är valfritt. ALLA tar bort frågerelaterade data och metadata från Query Store.
OPERATION_MODE { READ_ONLY | READ_WRITE }
Beskriver åtgärdsläget för Query Store.
READ_WRITE
Query Store samlar in och bevarar information om körningsstatistik för frågeplan och körning.
READ_ONLY
Information kan läsas från Query Store, men ny information läggs inte till. Om det maximala utfärdade utrymmet i Query Store har förbrukats ändrar Query Store sitt åtgärdsläge till READ_ONLY.
CLEANUP_POLICY
Beskriver datakvarhållningsprincipen för Query Store. STALE_QUERY_THRESHOLD_DAYS avgör hur många dagar informationen för en fråga ska lagras i Frågearkivet. STALE_QUERY_THRESHOLD_DAYS är typ bigint. Standardvärdet är 30.
DATA_FLUSH_INTERVAL_SECONDS
Avgör hur ofta data som skrivs till Query Store sparas på disken. För att optimera prestanda skrivs data som samlas in av Query Store asynkront till disken. Frekvensen för den här asynkrona överföringen konfigureras med hjälp av argumentet DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS är typ bigint. Standardvärdet är 900 (15 min).
MAX_STORAGE_SIZE_MB
Avgör vilket utrymme som utfärdas till Query Store. MAX_STORAGE_SIZE_MB är typ bigint. Standardvärdet är 100 MB för SQL Server (SQL Server 2016 (13.x) via SQL Server 2017 (14.x).) Från och med SQL Server 2019 (15.x) är standardvärdet 1 000 MB.
MAX_STORAGE_SIZE_MB
gränsen tillämpas inte strikt. Lagringsstorleken kontrolleras endast när Query Store skriver data till disk. Det här intervallet anges av alternativet DATA_FLUSH_INTERVAL_SECONDS
eller dialogrutan Management Studio Query Store dataspolningsintervall. Standardvärdet för intervallet är 900 sekunder (eller 15 minuter).
Om Query Store har överskridit gränsen för MAX_STORAGE_SIZE_MB
mellan kontroller av lagringsstorlek övergår den till skrivskyddat läge. Om SIZE_BASED_CLEANUP_MODE
är aktiverat utlöses även rensningsmekanismen för att framtvinga gränsen för MAX_STORAGE_SIZE_MB
.
När tillräckligt med utrymme har rensats växlar Query Store-läget automatiskt tillbaka till läs-och skrivläge.
Viktig
Om du tror att din arbetsbelastningsinsamling behöver mer än 10 GB diskutrymme bör du förmodligen tänka om och optimera arbetsbelastningen för att återanvända frågeplaner (till exempel genom att använda tvingad parameteriseringeller justera Query Store-konfigurationerna.
Från och med SQL Server 2019 (15.x) och i Azure SQL Database kan du ange QUERY_CAPTURE_MODE
till ANPASSAD för ytterligare kontroll över frågeinsamlingsprincipen.
INTERVAL_LENGTH_MINUTES
Avgör tidsintervallet med vilket körningsstatistikdata aggregeras till Query Store. För att optimera för utrymmesanvändning aggregeras körningsstatistiken i statistikarkivet för körning över ett fast tidsfönster. Det här fasta tidsfönstret konfigureras med hjälp av argumentet INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES är typ bigint. Standardvärdet är 60.
SIZE_BASED_CLEANUP_MODE { AUTO | AV }
Styr om rensningen automatiskt aktiveras när den totala mängden data kommer nära maximal storlek.
BIL
Storleksbaserad rensning aktiveras automatiskt när storleken på disken når 90% av MAX_STORAGE_SIZE_MB. Storleksbaserad rensning tar bort de billigaste och äldsta frågorna först. Den stannar vid cirka 80% av MAX_STORAGE_SIZE_MB. Det här värdet är standardkonfigurationsvärdet.
BORT
Storleksbaserad rensning aktiveras inte automatiskt.
SIZE_BASED_CLEANUP_MODE är typ nvarchar.
QUERY_CAPTURE_MODE { ALLA | AUTO | ANPASSAD | NONE }
Anger det aktuella aktiva frågeinsamlingsläget. Varje läge definierar specifika principer för frågeinsamling. QUERY_CAPTURE_MODE är typ nvarchar.
Not
Markörer, frågor i lagrade procedurer och inbyggda kompilerade frågor registreras alltid när frågeinsamlingsläget är inställt på ALLA, AUTO eller CUSTOM.
ALLA
Samlar in alla frågor. ALL är standardkonfigurationsvärdet för SQL Server (SQL Server 2016 (13.x) via SQL Server 2017 (14.x)).
BIL
Samla in relevanta frågor baserat på körningsantal och resursförbrukning. Det här är standardkonfigurationsvärdet för SQL Server (från och med SQL Server 2019 (15.x)) och Azure SQL Database.
INGEN
Sluta samla in nya frågor. Query Store fortsätter att samla in kompilerings- och körningsstatistik för frågor som redan har samlats in. Använd den här konfigurationen med försiktighet eftersom du kanske inte kan samla in viktiga frågor.
SED
gäller för: SQL Server (från och med SQL Server 2019 (15.x))
Tillåter kontroll över QUERY_CAPTURE_POLICY alternativ. Anpassade avbildningsprinciper kan hjälpa Query Store att samla in de viktigaste frågorna i din arbetsbelastning. Se <query_capture_policy_option_list> för anpassningsbara alternativ.
MAX_PLANS_PER_QUERY
Definierar det maximala antalet planer som underhålls för varje fråga. MAX_PLANS_PER_QUERY är typ int. Standardvärdet är 200.
WAIT_STATS_CAPTURE_MODE { ON | AV }
gäller för: SQL Server (från och med SQL Server 2017 (14.x)))
Styr om väntestatistik hämtas per fråga.
PÅ
Information om väntestatistik per fråga samlas in. Det här värdet är standardkonfigurationsvärdet.
BORT
Information om väntestatistik per fråga samlas inte in.
<query_capture_policy_option_list> :: =
gäller för: SQL Server (från och med SQL Server 2019 (15.x))
Styr Query Store- avbildningsprincipalternativ. Förutom STALE_CAPTURE_POLICY_THRESHOLD definierar dessa alternativ de OR-villkor som måste ske för att frågor ska samlas in i det definierade tröskelvärdet för inaktuell avbildningsprincip.
Från och med SQL Server 2019 (15.x) samlar inställningen QUERY_CAPTURE_MODE = AUTO
in information om Query Store när något av följande tröskelvärden uppnås:
- EXECUTION_COUNT = 30 körningar = körningsantal
- TOTAL_COMPILE_CPU_TIME_MS = 1 sekund = kompileringstid i millisekunder
- TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = cpu-körningstid i millisekunder
Till exempel:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Du kan anpassa dessa alternativ med QUERY_CAPTURE_MODE = CUSTOM
:
STALE_CAPTURE_POLICY_THRESHOLD = heltal { DAYS | TIMMAR }
Definierar utvärderingsintervallperioden för att avgöra om en fråga ska samlas in. Standardvärdet är 1 dag och kan anges från 1 timme till sju dagar.
EXECUTION_COUNT = heltal
Definierar hur många gånger en fråga körs under utvärderingsperioden. Standardvärdet är 30, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga köras minst 30 gånger på en dag för att sparas i Query Store. EXECUTION_COUNT är typ int.
TOTAL_COMPILE_CPU_TIME_MS = heltal
Definierar den totala förflutna kompileringstiden för cpu som används av en fråga under utvärderingsperioden. Standardvärdet är 1 000, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga ha minst en sekund cpu-tid under frågekompilering på en dag för att sparas i Query Store. TOTAL_COMPILE_CPU_TIME_MS är typ int.
TOTAL_EXECUTION_CPU_TIME_MS = heltal
Definierar den totala förflutna körningens CPU-tid som används av en fråga under utvärderingsperioden. Standardvärdet är 100, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga ha totalt minst 100 ms cpu-tid under körningen på en dag för att sparas i Query Store. TOTAL_EXECUTION_CPU_TIME_MS är typ int.
<recovery_option> ::=
gäller för: SQL Server
Styr alternativen för databasåterställning och disk-I/O-felkontroll.
FULL
Ger fullständig återställning efter mediefel med hjälp av säkerhetskopior av transaktionsloggar. Om en datafil är skadad kan medieåterställning återställa alla checkade transaktioner. Mer information finns i Recovery-modeller.
BULK_LOGGED
Ger återställning efter mediefel. Kombinerar bästa prestanda och minsta möjliga användning av loggutrymme för vissa storskaliga åtgärder eller massåtgärder. Information om vilka åtgärder som kan loggas minimalt finns i Transaktionsloggen. Under den BULK_LOGGED återställningsmodellen är loggning för dessa åtgärder minimal. Mer information finns i Recovery-modeller.
ENKEL
En enkel säkerhetskopieringsstrategi som använder minimalt loggutrymme tillhandahålls. Loggutrymme kan återanvändas automatiskt när det inte längre krävs för återställning av serverfel. Mer information finns i Recovery-modeller.
Viktig
Den enkla återställningsmodellen är enklare att hantera än de andra två modellerna, men på bekostnad av större exponering för dataförlust om en datafil skadas. Alla ändringar sedan den senaste databas- eller differentiella databassäkerhetskopian går förlorade och måste återaktiveras manuellt.
Standardåterställningsmodellen bestäms av återställningsmodellen för model
-systemdatabasen. Mer information om hur du väljer lämplig återställningsmodell finns i Recovery-modeller.
Du kan fastställa det här alternativets status genom att undersöka kolumnerna recovery_model
och recovery_model_desc
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen Recovery
för funktionen DATABASEPROPERTYEX.
TORN_PAGE_DETECTION { ON | AV }
PÅ
Ofullständiga sidor kan identifieras av databasmotorn.
BORT
Det går inte att identifiera ofullständiga sidor av databasmotorn.
Viktig
Syntaxstrukturen TORN_PAGE_DETECTION ON | OFF tas bort i en framtida version av SQL Server. Undvik att använda den här syntaxstrukturen i det nya utvecklingsarbetet och planera att ändra program som för närvarande använder syntaxstrukturen. Använd alternativet PAGE_VERIFY i stället.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
Identifierar skadade databassidor som orsakas av disk-I/O-sökvägsfel. Fel med disk-I/O-sökväg kan vara orsaken till problem med databasskada. De här felen orsakas oftast av strömavbrott eller maskinvarufel som uppstår när sidan skrivs till disk.
KONTROLLSUMMA
Beräknar en kontrollsumma över hela sidans innehåll och lagrar värdet i sidhuvudet när en sida skrivs till disk. När sidan läss från disken omberäknas kontrollsumman och jämförs med värdet för kontrollsumman som lagras i sidhuvudet. Om värdena inte matchar rapporteras felmeddelandet 824 (som anger ett kontrollsummafel) till både SQL Server-felloggen och Windows-händelseloggen. Ett kontrollsummafel anger ett I/O-sökvägsproblem. För att fastställa rotorsaken krävs undersökning av maskinvara, drivrutiner för inbyggd programvara, BIOS, filterdrivrutiner (till exempel virusprogram) och andra I/O-sökvägskomponenter.
TORN_PAGE_DETECTION
Sparar ett specifikt 2-bitarsmönster för varje 512 byte-sektor på databassidan på 8 kilobyte (KB) och lagras i sidhuvudet för databasen när sidan skrivs till disk. När sidan läss från disk jämförs de sönderrivna bitarna som lagras i sidhuvudet med den faktiska sidsektorinformationen.
Omatchade värden anger att endast en del av sidan skrevs till disk. I det här fallet rapporteras felmeddelandet 824 (som anger ett fel på en skadad sida) till både SQL Server-felloggen och Windows-händelseloggen. Skadade sidor identifieras vanligtvis av databasåterställning om det verkligen är en ofullständig skrivning av en sida. Andra I/O-sökvägsfel kan dock orsaka en sönderriven sida när som helst.
INGEN
Skrivningar på databassidan genererar inte ett CHECKSUM- eller TORN_PAGE_DETECTION-värde. SQL Server verifierar inte en kontrollsumma eller en sönderriven sida under en läsning, även om ett CHECKSUM- eller TORN_PAGE_DETECTION-värde finns i sidhuvudet.
Tänk på följande viktiga punkter när du använder alternativet PAGE_VERIFY:
Standardvärdet är CHECKSUM.
När en användare eller systemdatabas uppgraderas till SQL Server 2005 (9.x) eller en senare version ändras inte PAGE_VERIFY-värdet (NONE eller TORN_PAGE_DETECTION). Vi rekommenderar att du ändrar till CHECKSUM.
Not
I tidigare versioner av SQL Server är alternativet PAGE_VERIFY databas inställt på NONE för
tempdb
-databasen och kan inte ändras. Från och med SQL Server 2008 (10.0.x) är standardvärdet förtempdb
-databasen CHECKSUM för nya installationer av SQL Server. När du uppgraderar en SQL Server-installation förblir standardvärdet NONE. Alternativet kan ändras. Vi rekommenderar att du använder CHECKSUM förtempdb
-databasen.TORN_PAGE_DETECTION kan använda färre resurser, men ger en minimal delmängd av CHECKSUM-skyddet.
PAGE_VERIFY kan ställas in utan att databasen kopplas från, låsa databasen eller på annat sätt hindra samtidighet i databasen.
CHECKSUM är ömsesidigt uteslutande för TORN_PAGE_DETECTION. Båda alternativen kan inte aktiveras samtidigt.
När ett fel på en trasig sida eller kontrollsumma identifieras kan du återställa genom att återställa data eller eventuellt återskapa indexet om felet endast är begränsat till indexsidor. Om du stöter på ett kontrollsummafel kör du DBCC CHECKDB för att fastställa vilken typ av databassida eller vilka sidor som påverkas. Mer information om återställningsalternativ finns i RESTORE-argument. Även om återställning av data löser problemet med skadade data, bör rotorsaken (till exempel diskmaskinvarufel) diagnostiseras och korrigeras så snart som möjligt för att förhindra fortsatta fel.
SQL Server försöker läsa igen som misslyckas med en kontrollsumma, en sönderriven sida eller ett annat I/O-fel fyra gånger. Om läsningen lyckas i något av återförsöken skrivs ett meddelande till felloggen. Kommandot som utlöste läsningen fortsätter. Kommandot misslyckas med felmeddelandet 824 om försöken misslyckas.
Mer information om felmeddelanden 823, 824 och 825 finns i:
- Felsöka MSSQLSERVER-fel 823
- Felsöka MSSQLSERVER-fel 824
- Felsöka MSSQLSERVER-fel 825 (läs nytt försök).
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen page_verify_option
i sys.databases katalogvy eller egenskapen IsTornPageDetectionEnabled
för funktionen DATABASEPROPERTYEX.
<remote_data_archive_option> ::=
gäller för: SQL Server (från och med SQL Server 2016 (13.x))
Aktiverar eller inaktiverar Stretch Database för databasen. Mer information finns i Stretch Database.
Viktig
Stretch Database är inaktuell i SQL Server 2022 (16.x) och Azure SQL Database. Den här funktionen tas bort i en framtida version av databasmotorn. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ON | OFF } ) | BORT
PÅ
Aktiverar Stretch Database för databasen. Mer information, inklusive ytterligare krav, finns i Aktivera Stretch Database för en databas.
Kräver
db_owner
behörighet för att aktivera Stretch Database för en tabell. Kräverdb_owner
- ochCONTROL DATABASE
behörigheter för att aktivera Stretch Database för en databas.SERVER = <server_name>
Anger adressen till Azure-servern. Ta med
.database.windows.net
delen av namnet. Till exempelMyStretchDatabaseServer.database.windows.net
.CREDENTIAL = <db_scoped_credential_name>
Anger databasens begränsade autentiseringsuppgifter som SQL Server-instansen använder för att ansluta till Azure-servern. Kontrollera att autentiseringsuppgifterna finns innan du kör det här kommandot. Mer information finns i CREATE DATABASE SCOPED CREDENTIAL.
FEDERATED_SERVICE_ACCOUNT = { ON | AV }
Du kan använda ett federerat tjänstkonto för den lokala SQL Server för att kommunicera med den fjärranslutna Azure-servern när följande villkor är uppfyllda.
- Tjänstkontot som sql Server-instansen körs under är ett domänkonto.
- Domänkontot tillhör en domän vars Active Directory är federerat med Microsoft Entra-ID.
- Den fjärranslutna Azure-servern har konfigurerats för att stödja Microsoft Entra-autentisering.
- Tjänstkontot som sql Server-instansen körs under måste konfigureras som ett
dbmanager
- ellersysadmin
-konto på den fjärranslutna Azure-servern.
Om du anger att det federerade tjänstkontot är PÅ kan du inte heller ange argumentet CREDENTIAL. Ange argumentet CREDENTIAL om du anger AV.
BORT
Inaktiverar Stretch Database för databasen. Mer information finns i Inaktivera Stretch Database och ta tillbaka fjärrdata.
Du kan bara inaktivera Stretch Database för en databas när databasen inte längre innehåller några tabeller som är aktiverade för Stretch Database. När du har inaktiverat Stretch Database stoppas datamigreringen. Frågeresultat innehåller inte längre resultat från fjärrtabeller.
Om du inaktiverar Stretch Database tar du inte bort fjärrdatabasen. Om du vill ta bort fjärrdatabasen släpper du den med hjälp av Azure-portalen.
PERSISTENT_LOG_BUFFER
gäller för: SQL Server 2017 (14.x) och senare.
När det här alternativet har angetts skapas transaktionsloggbufferten på en volym som finns på en diskenhet som backas upp av Lagringsklassminne (NVDIMM-N icke-lagring), även kallat en beständig loggbuffert. Mer information finns i acceleration av fördröjning vid transaktionsincheckning med lagringsklassminne och Lägg till beständig loggbuffert i en databas.
<service_broker_option> ::=
gäller för: SQL Server
Styr följande alternativ för Service Broker: aktiverar eller inaktiverar meddelandeleverans, anger en ny Service Broker-identifierare eller anger konversationsprioriteringar till PÅ eller AV.
ENABLE_BROKER
Anger att Service Broker är aktiverat för den angivna databasen. Meddelandeleveransen startas och flaggan is_broker_enabled
anges till true i sys.databases katalogvy. Databasen behåller den befintliga Service Broker-identifieraren. Det går inte att aktivera tjänstkoordinatorn medan databasen är huvudnamnet i en databasspeglingskonfiguration.
Not
ENABLE_BROKER kräver ett exklusivt databaslås. Om andra sessioner har låsta resurser i databasen väntar ENABLE_BROKER tills de andra sessionerna släpper sina lås. Om du vill aktivera Service Broker i en användardatabas kontrollerar du att inga andra sessioner använder databasen innan du kör ALTER DATABASE SET ENABLE_BROKER
-instruktionen, till exempel genom att placera databasen i enanvändarläge. Om du vill aktivera Service Broker i msdb
-databasen stoppar du först SQL Server Agent så att Service Broker kan hämta det nödvändiga låset.
DISABLE_BROKER
Anger att Service Broker är inaktiverat för den angivna databasen. Meddelandeleveransen stoppas och flaggan is_broker_enabled
är inställd på false i sys.databases katalogvy. Databasen behåller den befintliga Service Broker-identifieraren.
NEW_BROKER
Anger att databasen ska få en ny koordinatoridentifierare. Databasen fungerar som en ny tjänstkoordinator. Därför tas alla befintliga konversationer i databasen bort omedelbart utan att slutdialogrutor skapas. Alla vägar som refererar till den gamla Service Broker-identifieraren måste återskapas med den nya identifieraren.
ERROR_BROKER_CONVERSATIONS
Anger att Service Broker-meddelandeleverans är aktiverat. Den här inställningen bevarar den befintliga Service Broker-identifieraren för databasen. Service Broker avslutar alla konversationer i databasen med ett fel. Med den här inställningen kan program köra regelbunden rensning för befintliga konversationer.
HONOR_BROKER_PRIORITY { ON | AV }
PÅ
Skicka åtgärder tar hänsyn till de prioritetsnivåer som tilldelas konversationer. Meddelanden från konversationer med hög prioritet skickas före meddelanden från konversationer som tilldelas lågprioriterad nivå.
BORT
Skicka åtgärder körs som om alla konversationer har standardprioritetsnivån.
Ändringar av alternativet HONOR_BROKER_PRIORITY börjar gälla omedelbart för nya dialogrutor eller dialogrutor som inte har några meddelanden som väntar på att skickas. Dialogrutor med meddelanden som ska skickas när ALTER DATABASE körs hämtar inte den nya inställningen förrän några av meddelandena för dialogrutan har skickats. Tiden innan alla dialogrutor börjar använda den nya inställningen kan variera avsevärt.
Den aktuella inställningen för den här egenskapen rapporteras i kolumnen is_broker_priority_honored
i sys.databases katalogvy.
<snapshot_option> ::=
Beräknar transaktionsisoleringsnivån.
ALLOW_SNAPSHOT_ISOLATION { ON | AV }
PÅ
Aktiverar alternativet Ögonblicksbild på databasnivå. När den är aktiverad börjar DML-instruktioner generera radversioner även när ingen transaktion använder ögonblicksbildisolering. När det här alternativet har aktiverats kan transaktioner ange transaktionsisoleringsnivån SNAPSHOT. När en transaktion körs på ögonblicksbildisoleringsnivå ser alla instruktioner en ögonblicksbild av data eftersom den finns i början av transaktionen. Om en transaktion som körs på ögonblicksbildisoleringsnivå har åtkomst till data i flera databaser måste antingen ALLOW_SNAPSHOT_ISOLATION anges till PÅ i alla databaser, eller så måste varje instruktion i transaktionen använda låstips för alla referenser i en FROM-sats till en tabell i en databas där ALLOW_SNAPSHOT_ISOLATION är AV.
BORT
Inaktiverar alternativet Ögonblicksbild på databasnivå. Transaktioner kan inte ange transaktionsisoleringsnivån ÖGONBLICKSBILD.
När du ställer in ALLOW_SNAPSHOT_ISOLATION till ett nytt tillstånd (från PÅ till AV eller från AV till PÅ) returnerar ALTER DATABASE inte kontrollen till anroparen förrän alla befintliga transaktioner i databasen har checkats in. Om databasen redan är i det tillstånd som anges i ALTER DATABASE-instruktionen returneras kontrollen till anroparen omedelbart. Om ALTER DATABASE-instruktionen inte returneras snabbt använder du sys.dm_tran_active_snapshot_database_transactions för att avgöra om det finns långvariga transaktioner. Om ALTER DATABASE-instruktionen avbryts förblir databasen i det tillstånd den befann sig i när ALTER DATABASE startades.
sys.databases katalogvy anger tillståndet för transaktioner med ögonblicksbildisolering i databasen. Om snapshot_isolation_state_desc
= IN_TRANSITION_TO_ON pausar kommandot ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
sex sekunder och försöker utföra åtgärden igen.
Du kan inte ändra tillståndet för ALLOW_SNAPSHOT_ISOLATION om databasen är OFFLINE.
Om du anger ALLOW_SNAPSHOT_ISOLATION i en READ_ONLY databas behålls inställningen om databasen senare anges till READ_WRITE.
Du kan ändra inställningarna för ALLOW_SNAPSHOT_ISOLATION för databaserna master
, model
, msdb
och tempdb
. Inställningen behålls varje gång instansen av databasmotorn stoppas och startas om om du ändrar inställningen för tempdb
. Om du ändrar inställningen för model
blir den inställningen standard för alla nya databaser som skapas, förutom för tempdb
.
Alternativet är PÅ som standard för databaserna master
och msdb
.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen snapshot_isolation_state
i sys.databases katalogvy.
READ_COMMITTED_SNAPSHOT { ON | AV }
PÅ
Aktiverar alternativet Read-Committed Ögonblicksbild på databasnivå. När den är aktiverad börjar DML-instruktioner generera radversioner även när ingen transaktion använder ögonblicksbildisolering. När det här alternativet har aktiverats använder transaktionerna som anger den incheckade isoleringsnivån radversioner i stället för låsning. Alla instruktioner ser en ögonblicksbild av data eftersom den finns i början av -instruktionen när en transaktion körs på READ COMMITTED-isoleringsnivån.
BORT
Inaktiverar Read-Committed alternativet Ögonblicksbild på databasnivå. Transaktioner som anger READ COMMITTED-isoleringsnivån använder låsning.
Om du vill ange READ_COMMITTED_SNAPSHOT PÅ eller AV får det inte finnas några aktiva anslutningar till databasen förutom anslutningen som kör KOMMANDOT ALTER DATABASE. Databasen behöver dock inte vara i enanvändarläge. Du kan inte ändra tillståndet för det här alternativet när databasen är OFFLINE.
Om du anger READ_COMMITTED_SNAPSHOT i en READ_ONLY databas behålls inställningen när databasen senare anges till READ_WRITE.
READ_COMMITTED_SNAPSHOT kan inte aktiveras för master
, tempdb
eller msdb
systemdatabaser. Om du ändrar inställningen för model
blir den inställningen standard för alla nya databaser som skapats, förutom för tempdb
.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_read_committed_snapshot_on
i sys.databases katalogvy.
Varning
När en tabell skapas med DURABILITY = SCHEMA_ONLYoch READ_COMMITTED_SNAPSHOT sedan ändras med hjälp av ALTER DATABASEgår data i tabellen förlorade.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | AV }
gäller för: SQL Server (från och med SQL Server 2014 (12.x))
PÅ
När transaktionsisoleringsnivån är inställd på en isoleringsnivå som är lägre än ÖGONBLICKSBILD körs alla tolkade Transact-SQL åtgärder på minnesoptimerade tabeller under ögonblicksbildisolering. Exempel på isoleringsnivåer som är lägre än ögonblicksbilder är READ COMMITTED eller READ UNCOMMITTED. Dessa åtgärder kör om transaktionsisoleringsnivån uttryckligen anges på sessionsnivå eller om standardvärdet används implicit.
BORT
Höjer inte transaktionsisoleringsnivån för tolkade Transact-SQL åtgärder i minnesoptimerade tabeller.
Du kan inte ändra tillståndet för MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT om databasen är OFFLINE.
Standardalternativet är AV.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_memory_optimized_elevate_to_snapshot_on
i sys.databases katalogvy.
<sql_option> ::=
Styr ANSI-efterlevnadsalternativen på databasnivå.
ANSI_NULL_DEFAULT { ON | AV }
Avgör standardvärdet, NULL eller NOT NULL, för en kolumn eller CLR-användardefinierad typ som nullabiliteten inte uttryckligen definieras för i CREATE TABLE- eller ALTER TABLE-uttryck. Kolumner som definieras med begränsningar följer villkorsregler oavsett vilken inställning den här inställningen kan vara.
PÅ
Standardvärdet för en odefinierad kolumn är NULL.
BORT
Standardvärdet för en odefinierad kolumn är INTE NULL.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standardinställningen på databasnivå för ANSI_NULL_DEFAULT. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_NULL_DEFAULT till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_NULL_DFLT_ON.
För ANSI-kompatibilitet ändrar inställningen av databasalternativet ANSI_NULL_DEFAULT till PÅ databasens standardvärde till NULL.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_null_default_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiNullDefault
för funktionen DATABASEPROPERTYEX.
ANSI_NULLS { ON | AV }
PÅ
Alla jämförelser med ett null-värde utvärderas till OKÄNT.
BORT
Jämförelser av icke-Unicode-värden med ett nullvärde utvärderas till TRUE om båda värdena är NULL.
Viktig
I en framtida version av SQL Server kommer ANSI_NULLS alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV genererar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för ANSI_NULLS. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_NULLS till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_NULLS.
Viktig
ANGE ANSI_NULLS måste också anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_nulls_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiNullsEnabled
för funktionen DATABASEPROPERTYEX.
ANSI_PADDING { ON | AV }
PÅ
Strängarna är vadderade till samma längd före konverteringen. Även vadderade till samma längd innan du infogar till en varchar eller nvarchar datatyp.
BORT
Infogar avslutande blanksteg i teckenvärden i varchar eller nvarchar kolumner. Lämnar också avslutande nollor i binära värden som infogas i varbinära kolumner. Värden är inte vadderade till kolumnens längd.
När OFF har angetts påverkar den här inställningen endast definitionen av nya kolumner.
Viktig
I en framtida version av SQL Server kommer ANSI_PADDING alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV skapar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Vi rekommenderar att du alltid ställer in ANSI_PADDING på PÅ. ANSI_PADDING måste vara PÅ när du skapar eller manipulerar index för beräknade kolumner eller indexerade vyer.
char(n) och binary(n) kolumner som tillåter null-värden är vadderade till kolumnlängden när ANSI_PADDING är inställt på PÅ. Avslutande blanksteg och nollor trimmas när ANSI_PADDING är AV. char(n) och binary(n) kolumner som inte tillåter nulls är alltid vadderade till längden på kolumnen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standardinställningen på databasnivå för ANSI_PADDING. ODBC- och OLE DB-klienter utfärdar som standard en inställning för SET-instruktion på anslutningsnivå ANSI_PADDING till PÅ för sessionen. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_PADDING.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_padding_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiPaddingEnabled
för funktionen DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | AV }
PÅ
Fel eller varningar utfärdas när villkor som divide-by-zero inträffar. Fel och varningar utfärdas också när null-värden visas i aggregerade funktioner.
BORT
Inga varningar utlöses och nullvärden returneras när villkor som divide-by-zero inträffar.
Viktig
ANGE ANSI_WARNINGS måste anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för ANSI_WARNINGS. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_WARNINGS till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET-ANSI_WARNINGS.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_warnings_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiWarningsEnabled
för funktionen DATABASEPROPERTYEX.
ARITHABORT { ON | AV }
PÅ
En fråga avslutas när ett spill eller divide-by-zero-fel inträffar under frågekörningen.
BORT
Ett varningsmeddelande visas när ett av dessa fel inträffar. Frågan, batchen eller transaktionen fortsätter att bearbetas som om inget fel uppstod även om en varning visas.
Viktig
SET ARITHABORT måste anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_arithabort_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsArithmeticAbortEnabled
för funktionen DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Mer information finns i ALTER DATABASE-kompatibilitetsnivå.
CONCAT_NULL_YIELDS_NULL { ON | AV }
PÅ
Resultatet av en sammanfogningsåtgärd är NULL när någon av operanderna är NULL. Om du till exempel sammanfogar teckensträngen "This is" (Detta är) returnerar NULL-värdet i stället för värdet "Detta är".
BORT
Null-värdet behandlas som en tom teckensträng.
Viktig
CONCAT_NULL_YIELDS_NULL måste anges till PÅ när du skapar eller gör ändringar i index i beräknade kolumner eller indexerade vyer.
I kommande versioner av SQL Server kommer CONCAT_NULL_YIELDS_NULL alltid att vara PÅ, och alla program som uttryckligen ställer in alternativet på AV utlöser ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för CONCAT_NULL_YIELDS_NULL. Som standard utfärdar ODBC- och OLE DB-klienter en inställning för SET-instruktion på anslutningsnivå CONCAT_NULL_YIELDS_NULL till PÅ för sessionen när du ansluter till en instans av SQL Server. Mer information finns i SET CONCAT_NULL_YIELDS_NULL.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_concat_null_yields_null_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsNullConcat
för funktionen DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | AV }
PÅ
Ett fel genereras när precisionsförlust inträffar i ett uttryck.
BORT
Förlust av precision genererar inget felmeddelande, och resultatet avrundas till precisionen i kolumnen eller variabeln som lagrar resultatet.
Viktig
NUMERIC_ROUNDABORT måste anges till AV när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa status för det här alternativet i kolumnen is_numeric_roundabort_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsNumericRoundAbortEnabled
för funktionen DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | AV }
PÅ
Dubbla citattecken kan användas för att omsluta avgränsade identifierare.
Alla strängar som avgränsas med dubbla citattecken tolkas som objektidentifierare. Citerade identifierare behöver inte följa Transact-SQL regler för identifierare. De kan vara nyckelord och kan innehålla tecken som inte tillåts i Transact-SQL identifierare. Om ett dubbelt citattecken (
"
) är en del av identifieraren kan det representeras av två dubbla citattecken (""
).BORT
Identifierare kan inte vara inom citattecken och måste följa alla Transact-SQL regler för identifierare. Literaler kan avgränsas med enkla eller dubbla citattecken.
SQL Server gör också att identifierare kan avgränsas med hakparenteser ([
och ]
). Hakparenteserade identifierare kan alltid användas, oavsett vilken inställning QUOTED_IDENTIFIER är. Mer information finns i Databasidentifierare.
När en tabell skapas lagras alternativet QUOTED IDENTIFIER alltid som PÅ i tabellens metadata. Alternativet lagras även om alternativet är inställt på AV när tabellen skapas.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för QUOTED_IDENTIFIER. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå QUOTED_IDENTIFIER till PÅ som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET QUOTED_IDENTIFIER.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_quoted_identifier_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsQuotedIdentifiersEnabled
för funktionen DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | AV }
PÅ
Rekursiv avfyrning av AFTER-utlösare tillåts.
BORT
Du kan fastställa det här alternativets status genom att undersöka kolumnen
is_recursive_triggers_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapenIsRecursiveTriggersEnabled
för funktionen DATABASEPROPERTYEX.
Not
Endast direkt rekursion förhindras när RECURSIVE_TRIGGERS är inställt på OFF. Om du vill inaktivera indirekt rekursion måste du också ange serveralternativet kapslade utlösare till 0.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_recursive_triggers_on
i sys.databases katalogvy eller egenskapen IsRecursiveTriggersEnabled
för funktionen DATABASEPROPERTYEX.
<suspend_for_snapshot_backup> ::=
gäller för: SQL Server (från och med SQL Server 2022 (16.x))
Pausar databaser för säkerhetskopiering av ögonblicksbilder. Kan definiera en grupp med en eller flera databaser. Kan ange kopieringsläge.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }
Pausar eller inaktiverar databaser. Standard av.
LÄGE = COPY_ONLY
Valfri. Använder COPY_ONLY läge.
<target_recovery_time_option> ::=
gäller för: SQL Server (från och med SQL Server 2012 (11.x))
Anger frekvensen för indirekta kontrollpunkter per databas. Från och med SQL Server 2016 (13.x) är standardvärdet för nya databaser 1 minut, vilket indikerar att databasen använder indirekta kontrollpunkter. För äldre versioner är standardvärdet 0, vilket anger att databasen använder automatiska kontrollpunkter, vars frekvens beror på inställningen för återställningsintervall för serverinstansen. Microsoft rekommenderar 1 minut för de flesta system.
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTER }
target_recovery_time
Anger den maximala gränsen för hur länge den angivna databasen ska återställas i händelse av en krasch. target_recovery_time är typ int.
SEKUNDER
Anger att target_recovery_time uttrycks som antalet sekunder.
PROTOKOLL
Anger att target_recovery_time uttrycks som antalet minuter.
Mer information om indirekta kontrollpunkter finns i Databaskontrollpunkter.
MED <avslutning> ::=
Anger när ofullständiga transaktioner ska återställas när databasen övergår från ett tillstånd till ett annat. Om avslutningssatsen utelämnas väntar ALTER DATABASE-instruktionen på obestämd tid om det finns något lås på databasen. Endast en avslutningssats kan anges och den följer SET-satserna.
Not
Alla databasalternativ använder inte satsen WITH <avslutning>. Mer information finns i tabellen under Ange alternativ i avsnittet "Kommentarer" i den här artikeln.
ÅTERSTÄLLNING EFTER heltal [SEKUNDER] | ÅTERSTÄLLNING OMEDELBART
Anger om du vill återställa efter det angivna antalet sekunder eller omedelbart.
NO_WAIT
Anger att begäran misslyckas om det begärda databastillståndet eller alternativändringen inte kan slutföras omedelbart. Att slutföra omedelbart innebär att inte vänta på att transaktioner ska checkas in eller återställas på egen hand.
Ange alternativ
Om du vill hämta aktuella inställningar för databasalternativ använder du sys.databases katalogvy eller DATABASEPROPERTYEX
När du har angett ett databasalternativ börjar den nya inställningen gälla omedelbart.
Du kan ändra standardvärdena för något av databasalternativen för alla nyligen skapade databaser. Det gör du genom att ändra lämpligt databasalternativ i model
-databasen.
Alla databasalternativ använder inte satsen WITH <avslutning> eller kan anges i kombination med andra alternativ. I följande tabell visas dessa alternativ och deras alternativ och avslutningsstatus.
Alternativkategori | Kan anges med andra alternativ | Kan använda satsen MED <avslutning> |
---|---|---|
<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 | Nej |
<cursor_option> | Ja | Nej |
<auto_option> | Ja | Nej |
<sql_option> | Ja | Nej |
<recovery_option> | Ja | Nej |
<target_recovery_time_option> | Nej | Ja |
<database_mirroring_option> | Nej | Nej |
ALLOW_SNAPSHOT_ISOLATION | Nej | Nej |
READ_COMMITTED_SNAPSHOT | Nej | Ja |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Ja | Ja |
<service_broker_option> | Ja | Nej |
DATE_CORRELATION_OPTIMIZATION | Ja | Ja |
<parameterization_option> | Ja | Ja |
<change_tracking_option> | Ja | Ja |
<db_encryption_option> | Ja | Nej |
<accelerated_database_recovery> | Ja | Ja |
Plancachen för SQL Server-instansen rensas genom att något av följande alternativ anges:
OFFLINE
UPPKOPPLAD
MODIFY_NAME
KOLLATIONERA
READ_ONLY
READ_WRITE
ÄNDRA STANDARD FÖR FILEGROUP
ÄNDRA FILEGROUP-READ_WRITE
ÄNDRA FILEGROUP-READ_ONLY
Plancachen rensas också i följande scenarier.
- En databas har AUTO_CLOSE databasalternativet inställt på PÅ. När ingen användaranslutning refererar till eller använder databasen försöker bakgrundsaktiviteten stänga och stänga av databasen automatiskt.
- Du kör flera frågor mot en databas som har standardalternativ. Sedan tas databasen bort.
- En databasögonblicksbild för en källdatabas tas bort.
- Du återskapar transaktionsloggen för en databas.
- Du återställer en säkerhetskopia av databasen.
- Du kopplar från en databas.
Om du rensar plancachen blir det en omkompilering av alla efterföljande körningsplaner och kan orsaka en plötslig, tillfällig minskning av frågeprestanda. För varje rensat cachelager i plancachen innehåller SQL Server-felloggen följande informationsmeddelande: 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
. Det här meddelandet loggas var femte minut så länge cacheminnet rensas inom det tidsintervallet.
Exempel
A. Ange alternativ för en databas
I följande exempel anges alternativ för återställningsmodell och verifiering av datasidor för AdventureWorks2022
exempeldatabas.
USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO
B. Ange databasen till READ_ONLY
För att ändra status för en databas eller filgrupp till READ_ONLY eller READ_WRITE krävs exklusiv åtkomst till databasen. I följande exempel anges databasen till SINGLE_USER
läge för att få exklusiv åtkomst. I exemplet anges sedan tillståndet för den AdventureWorks2022
databasen till READ_ONLY
och returnerar åtkomst till databasen till alla användare.
Not
I det här exemplet används avslutningsalternativet WITH ROLLBACK IMMEDIATE
i den första ALTER DATABASE
-instruktionen. Alla ofullständiga transaktioner återställs och alla andra anslutningar till AdventureWorks2022
databas kopplas omedelbart från.
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. Aktivera ögonblicksbildisolering på en databas
I följande exempel aktiveras alternativet för ramverk för ögonblicksbildisolering för AdventureWorks2022
-databasen.
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
Resultatuppsättningen visar att ramverket för ögonblicksbildisolering är aktiverat.
Namn | snapshot_isolation_state | beskrivning |
---|---|---|
[database_name] | 1 | PÅ |
D. Aktivera, ändra eller inaktivera ändringsspårning
I följande exempel aktiveras ändringsspårning för AdventureWorks2022
-databasen och kvarhållningsperioden anges till 2
dagar.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
I följande exempel visas hur du ändrar kvarhållningsperioden till 3
dagar.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
I följande exempel visas hur du inaktiverar ändringsspårning för AdventureWorks2022
-databasen.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Aktivera Query Store
gäller för: SQL Server (från och med SQL Server 2016 (13.x))
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
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. Aktivera Query Store med väntestatistik
gäller för: SQL Server (från och med SQL Server 2017 (14.x))
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
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. Aktivera Query Store med anpassade alternativ för avbildningsprinciper
gäller för: SQL Server (från och med SQL Server 2019 (15.x))
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
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
)
);
Relaterat innehåll
- Statistik
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- ALTER DATABASE-kompatibilitetsnivå
- ÄNDRA databasspegling
- ALTER DATABASE SET HADR
- CREATE DATABASE
- Aktivera och inaktivera ändringsspårning (SQL Server)
- DROP DATABASE (Transact-SQL)
- ANGE TRANSAKTIONSISOLERINGSNIVÅ (Transact-SQL)
- sp_configure
- Metodtips för övervakning av arbetsbelastningar med Query Store
* SQL Database *
SQL Database
Kompatibilitetsnivåer är SET
alternativ men beskrivs i ALTER DATABASE-kompatibilitetsnivån.
Not
Många alternativ för databasuppsättningar kan konfigureras för den aktuella sessionen med hjälp av SET-instruktioner och konfigureras ofta av program när de ansluter. Uppsättningsalternativ på sessionsnivå åsidosätter ALTER DATABASE SET
värden. Databasalternativen som beskrivs i följande avsnitt är värden som kan anges för sessioner som inte uttryckligen anger andra angivna alternativvärden.
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 }
Argument
database_name
Namnet på databasen som ska ändras.
STRÖM
CURRENT
kör åtgärden i den aktuella databasen.CURRENT
stöds inte för alla alternativ i alla kontexter. OmCURRENT
misslyckas anger du databasnamnet.
<auto_option> ::=
Styr automatiska alternativ.
AUTO_CREATE_STATISTICS { ON | AV }
PÅ
Query Optimizer skapar statistik för enskilda kolumner i frågepredikat, efter behov, för att förbättra frågeplaner och frågeprestanda. Den här statistiken med en kolumn skapas när Query Optimizer kompilerar frågor. Enkolumnsstatistiken skapas endast för kolumner som inte redan är den första kolumnen i ett befintligt statistikobjekt.
Standardvärdet är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
BORT
Frågeoptimeraren skapar inte statistik för enskilda kolumner i frågepredikat när den kompilerar frågor. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_create_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoCreateStatistics
för funktionen DATABASEPROPERTYEX.
Mer information finns i avsnittet "Statistikalternativ" i Statistics.
INCREMENTAL = ON | BORT
Ställ in AUTO_CREATE_STATISTICS på PÅ och ange INKREMENTELL till PÅ. Den här inställningen skapar automatiskt statistik som inkrementell när inkrementell statistik stöds. Standardvärdet är AV. Mer information finns i CREATE STATISTICS.
AUTO_SHRINK { ON | AV }
PÅ
Databasfilerna är kandidater för regelbunden krympning. Om du inte har ett specifikt krav ska du inte ange alternativet AUTO_SHRINK databas till PÅ. Mer information finns i Krympa en databas.
Både datafilen och loggfilerna kan krympas automatiskt. AUTO_SHRINK minskar storleken på transaktionsloggen endast om du ställer in databasen på SIMPLE-återställningsmodell eller om du säkerhetskopierar loggen. När de är inställda på OFF krymps inte databasfilerna automatiskt under periodiska kontroller av outnyttjat utrymme.
Alternativet AUTO_SHRINK gör att filer krymps när mer än 25 procent av filen innehåller outnyttjat utrymme. Alternativet gör att filen krymper till en av två storlekar. Den krymper till den som är större:
- Storleken där 25 procent av filen är outnyttjat utrymme
- Storleken på filen när den skapades
Du kan inte krympa en skrivskyddad databas.
BORT
Databasfilerna krymps inte automatiskt under periodiska kontroller av oanvänt utrymme.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_shrink_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoShrink
för funktionen DATABASEPROPERTYEX.
Not
Alternativet AUTO_SHRINK är inte tillgängligt i en innesluten databas.
AUTO_UPDATE_STATISTICS { ON | AV }
PÅ
Anger att Query Optimizer uppdaterar statistik när de används av en fråga och när de kan vara inaktuella. Statistiken blir inaktuell efter att åtgärderna infoga, uppdatera, ta bort eller slå samman ändrar datadistributionen i tabellen eller den indexerade vyn. Frågeoptimeraren avgör när statistiken kan vara inaktuell genom att räkna antalet dataändringar sedan den senaste statistikuppdateringen och jämföra antalet ändringar med ett tröskelvärde. Tröskelvärdet baseras på antalet rader i tabellen eller den indexerade vyn.
Frågeoptimeraren söker efter inaktuell statistik innan den kompilerar en fråga och kör en cachelagrad frågeplan. Query Optimizer använder kolumner, tabeller och indexerade vyer i frågepredikatet för att avgöra vilken statistik som kan vara inaktuell. Frågeoptimeraren avgör den här informationen innan den kompilerar en fråga. Innan du kör en cachelagrad frågeplan verifierar databasmotorn att frågeplanen refererar till up-to-date-statistik.
Alternativet AUTO_UPDATE_STATISTICS gäller för statistik som skapats för index, enkla kolumner i frågepredikat och statistik som skapas med hjälp av instruktionen CREATE STATISTICS. Det här alternativet gäller även för filtrerad statistik.
Standardvärdet är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
Använd alternativet AUTO_UPDATE_STATISTICS_ASYNC för att ange om statistiken uppdateras synkront eller asynkront.
BORT
Anger att Frågeoptimeraren inte uppdaterar statistik när de används av en fråga. Query Optimizer uppdaterar inte heller statistik när de kan vara inaktuella. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Du kan fastställa det här alternativets status genom att undersöka kolumnen
is_auto_update_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapenIsAutoUpdateStatistics
för funktionen DATABASEPROPERTYEX.Mer information finns i avsnittet "Statistikalternativ" i Statistics.
AUTO_UPDATE_STATISTICS_ASYNC { ON | AV }
PÅ
Anger att statistikuppdateringar för alternativet AUTO_UPDATE_STATISTICS är asynkrona. Frågeoptimeraren väntar inte på att statistikuppdateringarna ska slutföras innan frågor kompileras.
Att ställa in det här alternativet på PÅ har ingen effekt om inte AUTO_UPDATE_STATISTICS är inställt på PÅ.
Som standard är alternativet AUTO_UPDATE_STATISTICS_ASYNC inställt på OFF och Query Optimizer uppdaterar statistik synkront.
BORT
Anger att statistikuppdateringar för alternativet AUTO_UPDATE_STATISTICS är synkrona. Frågeoptimeraren väntar på att statistikuppdateringarna ska slutföras innan frågor kompileras.
Att ställa in det här alternativet på AV har ingen effekt om inte AUTO_UPDATE_STATISTICS är inställt på PÅ.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_update_stats_async_on
i sys.databases katalogvy.
Mer information som beskriver när du ska använda synkrona eller asynkrona statistikuppdateringar finns i avsnittet "Statistikalternativ" i Statistics.
<automatic_tuning_option> ::=
Styr automatiska alternativ för Automatisk justering. Du kan visa alternativen för följande inställningar i Azure-portalen eller via T-SQL i vyn sys.database_automatic_tuning_options
.
AUTOMATIC_TUNING = { AUTO | ÄRV | ANPASSAD }
BIL
Om du ställer in värdet Automatisk justering på AUTO tillämpas Standardvärden för Azure-konfiguration för Automatisk justering. I Azure-portalen visar detta alternativet "Ärv från: Azure-standardvärden".
ÄRVA
Med värdet ÄRV ärver standardkonfigurationen från den överordnade servern. I Azure-portalen visar detta alternativet "Ärver från: Server". Detta är särskilt användbart om du vill anpassa konfigurationen för automatisk justering på en överordnad server och ha alla databaser på den här servern ÄRV de här anpassade inställningarna. För att arvet ska fungera måste de tre enskilda justeringsalternativen FORCE_LAST_GOOD_PLAN, CREATE_INDEX och DROP_INDEX anges till STANDARD för databaser.
SED
Med custom-värdet måste du anpassa var och en av de automatiska justeringsalternativen som är tillgängliga för databaser. I Azure-portalen visar detta alternativet "Ärva från: Ärva inte".
CREATE_INDEX = { STANDARD | PÅ | AV }
Aktiverar eller inaktiverar automatisk indexhantering CREATE_INDEX
alternativ för Automatisk justering. Du kan visa status för det här alternativet i Azure-portalen eller via T-SQL i vyn sys.database_automatic_tuning_options
.
STANDARD
Ärver standardinställningar från servern. I det här fallet definieras alternativ för att aktivera eller inaktivera enskilda automatiska justeringsfunktioner på servernivå.
PÅ
När det är aktiverat genereras saknade index automatiskt i en databas. När indexet har skapats verifieras arbetsbelastningens prestanda. När ett sådant skapat index inte längre ger fördelar för arbetsbelastningens prestanda återställs det automatiskt. Index som skapas automatiskt flaggas som ett systemgenererat index.
BORT
Genererar inte automatiskt saknade index i databasen.
DROP_INDEX = { STANDARD | PÅ | AV }
Aktiverar eller inaktiverar automatisk indexhantering DROP_INDEX
alternativ för Automatisk justering. Du kan visa status för det här alternativet i Azure-portalen eller via T-SQL i vyn sys.database_automatic_tuning_options
.
STANDARD
Ärver standardinställningar från servern. I det här fallet definieras alternativ för att aktivera eller inaktivera enskilda automatiska justeringsfunktioner på servernivå.
PÅ
Släpper automatiskt duplicerade eller inte längre användbara index till prestandaarbetsbelastningen.
BORT
Släpper inte automatiskt saknade index i databasen.
FORCE_LAST_GOOD_PLAN = { STANDARD | PÅ | AV }
Aktiverar eller inaktiverar automatisk plankorrigering FORCE_LAST_GOOD_PLAN
alternativ för Automatisk justering. Du kan visa status för det här alternativet i Azure-portalen eller via T-SQL i vyn sys.database_automatic_tuning_options
.
STANDARD
Ärver standardinställningar från servern. I det här fallet definieras alternativ för att aktivera eller inaktivera enskilda automatiska justeringsfunktioner på servernivå. Det här är standardvärdet. Standardvärdet för nya Azure SQL-servrar är PÅ, vilket innebär att nya databaser som standard ärver inställningen PÅ.
PÅ
Databasmotorn tvingar automatiskt fram den senast kända bra planen för Transact-SQL frågor där en ny frågeplan orsakar prestandaregressioner. Databasmotorn övervakar kontinuerligt frågeprestanda för den Transact-SQL frågan med den framtvingade planen. Om det finns prestandavinster fortsätter databasmotorn att använda den senast kända bra planen. Om prestandavinster inte identifieras skapar databasmotorn en ny frågeplan. Instruktionen misslyckas om Query Store inte är aktiverat eller inte är i läs- och skrivläge läge.
BORT
Databasmotorn rapporterar potentiella frågeprestandaregressioner som orsakas av ändringar i frågeplanen i sys.dm_db_tuning_recommendations vy. Dessa rekommendationer tillämpas dock inte automatiskt. Användare kan övervaka aktiva rekommendationer och åtgärda identifierade problem genom att använda Transact-SQL skript som visas i vyn.
<change_tracking_option> ::=
Styr ändringsspårningsalternativ. Du kan aktivera ändringsspårning, ange alternativ, ändra alternativ och inaktivera ändringsspårning. Exempel finns i avsnittet Exempel senare i den här artikeln.
PÅ
Aktiverar ändringsspårning för databasen. När du aktiverar ändringsspårning kan du också ange alternativen AUTOMATISK RENSNING och ÄNDRINGSBEVARANDE.
AUTO_CLEANUP = { ON | AV }
PÅ
Information om ändringsspårning tas bort automatiskt efter den angivna kvarhållningsperioden.
BORT
Ändringsspårningsdata tas inte bort från databasen.
CHANGE_RETENTION = retention_period { DAYS | TIMMAR | MINUTER }
Anger den minsta perioden för att behålla information om ändringsspårning i databasen. Data tas bara bort när värdet för AUTO_CLEANUP är PÅ.
retention_period är ett heltal som anger den numeriska komponenten i kvarhållningsperioden.
Standardkvarhållningsperioden är 2 dagar. Den minsta kvarhållningsperioden är 1 minut. Standardkvarhållningstypen är DAYS.
BORT
Inaktiverar ändringsspårning för databasen. Inaktivera ändringsspårning för alla tabeller innan du inaktiverar ändringsspårning från databasen.
<cursor_option> ::=
Styr markörens alternativ.
CURSOR_CLOSE_ON_COMMIT { ON | AV }
PÅ
Alla markörer som öppnas när du checkar in eller återställer en transaktion stängs.
BORT
Markörer förblir öppna när en transaktion checkas in. om du återställer en transaktion stängs alla markörer förutom de markörer som definierats som INSENSITIVE eller STATIC.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för CURSOR_CLOSE_ON_COMMIT. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå CURSOR_CLOSE_ON_COMMIT till AV för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET CURSOR_CLOSE_ON_COMMIT.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_cursor_close_on_commit_on
i sys.databases katalogvy eller egenskapen IsCloseCursorsOnCommitEnabled
för funktionen DATABASEPROPERTYEX. Markören frigörs implicit endast vid frånkoppling. Mer information finns i DEKLARERA MARKÖREN.
<db_encryption_option> ::=
Styr databaskrypteringstillståndet.
KRYPTERING { PÅ | AV }
Anger att databasen ska krypteras (PÅ) eller inte krypteras (OFF). Mer information om databaskryptering finns i Transparent datakryptering (TDE)och Transparent datakryptering för Azure SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics.
När kryptering är aktiverat på databasnivå krypteras alla filgrupper. Alla nya filgrupper ärver den krypterade egenskapen. Om några filgrupper i databasen är inställda på SKRIVSKYDDad misslyckas databaskrypteringsåtgärden.
Du kan se krypteringstillståndet för databasen med hjälp av vyn sys.dm_database_encryption_keys dynamisk hantering.
<db_update_option> ::=
Styr om uppdateringar tillåts i databasen.
READ_ONLY
Användare kan läsa data från databasen men inte ändra dem.
Not
Uppdatera statistik innan du ställer in en databas på READ_ONLY för att förbättra frågeprestandan. Om ytterligare statistik behövs efter att en databas har angetts till READ_ONLY skapar databasmotorn statistik i
tempdb
. Mer information om statistik för en skrivskyddad databas finns i Statistics.READ_WRITE
Databasen är tillgänglig för läs- och skrivåtgärder.
Om du vill ändra det här tillståndet måste du ha exklusiv åtkomst till databasen. Mer information finns i SINGLE_USER-satsen.
Not
I federerade Azure SQL Database-databaser är SET { READ_ONLY | READ_WRITE }
inaktiverat.
<db_user_access_option> ::=
Styr användaråtkomsten till databasen.
RESTRICTED_USER
Tillåter endast medlemmar i den
db_owner
fasta databasrollen ochdbcreator
ochsysadmin
fasta serverroller att ansluta till databasen, men begränsar inte deras antal. Alla anslutningar till databasen kopplas från inom den tidsram som anges av avslutningssatsen i ALTER DATABASE-instruktionen. När databasen har övergått till RESTRICTED_USER tillstånd nekas anslutningsförsök av okvalificerade användare. I Azure SQL Database ska köras inifrån användardatabasen. Frånmaster
-databasen kan du stöta på ett felmeddelandeMsg 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
Alla användare som har rätt behörighet att ansluta till databasen tillåts. Du kan fastställa det här alternativets status genom att undersöka kolumnen
user_access
i sys.databases katalogvy eller egenskapenUserAccess
för funktionen DATABASEPROPERTYEX. I Azure SQL Database ska köras inifrån användardatabasen. Frånmaster
-databasen kan du stöta på ett felmeddelandeMsg 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> ::=
Styr om transaktioner checkar in helt varaktiga eller fördröjda varaktiga.
HANDIKAPPAD
Alla transaktioner som följer
SET DISABLED
är helt hållbara. Eventuella hållbarhetsalternativ som anges i ett atomiskt block eller incheckningsinstruktivt uttryck ignoreras.TILLÅTEN
Alla transaktioner som följer
SET ALLOWED
är antingen helt hållbara eller fördröjda varaktiga, beroende på hållbarhetsalternativet som anges i atomblocket eller incheckningsinstrukeringen.FORCERAD
Alla transaktioner som följer
SET FORCED
är fördröjda varaktiga. Eventuella hållbarhetsalternativ som anges i ett atomiskt block eller incheckningsinstruktivt uttryck ignoreras.
<PARAMETERIZATION_option> ::=
Styr parameteriseringsalternativet.
PARAMETERIZATION { SIMPLE | FORCED }
ENKEL
Frågor parametriseras baserat på databasens standardbeteende.
FORCERAD
SQL Server parameteriserar alla frågor i databasen.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_parameterization_forced
i sys.databases katalogvy.
<query_store_options> ::=
PÅ | AV | RENSA [ ALLA ]
Styr om Query Store är aktiverat i den här databasen och styr även borttagningen av innehållet i Query Store.
PÅ
Aktiverar Query Store. PÅ är standardvärdet.
BORT
Inaktiverar Query Store.
Not
Det går inte att inaktivera Query Store i en enskild Azure SQL Database-databas och elastisk pool. Om du kör
ALTER DATABASE [database] SET QUERY_STORE = OFF
returneras varningen'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.KLAR
Ta bort innehållet i Query Store.
OPERATION_MODE
Beskriver åtgärdsläget för Query Store. Giltiga värden är READ_ONLY och READ_WRITE. I READ_WRITE läge samlar Query Store in och bevarar information om körningsstatistik för frågeplan och körning. I READ_ONLY läge kan information läsas från Query Store, men ny information läggs inte till. Om det maximala allokerade utrymmet i Query Store har förbrukats ändrar Query Store sitt åtgärdsläge till READ_ONLY.
CLEANUP_POLICY
Beskriver datakvarhållningsprincipen för Query Store. STALE_QUERY_THRESHOLD_DAYS avgör hur många dagar informationen för en fråga ska lagras i Frågearkivet. STALE_QUERY_THRESHOLD_DAYS är typ bigint. Standardvärdet är 30. För SQL Database Basic-utgåvan är standardvärdet 7 dagar.
DATA_FLUSH_INTERVAL_SECONDS
Avgör hur ofta data som skrivs till Query Store sparas på disken. För att optimera prestanda skrivs data som samlas in av Query Store asynkront till disken. Frekvensen för den här asynkrona överföringen konfigureras med hjälp av argumentet DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS är typ bigint. Standardvärdet är 900 (15 min).
MAX_STORAGE_SIZE_MB
Avgör vilket utrymme som allokeras till Query Store. MAX_STORAGE_SIZE_MB är typ bigint.
Not
I Azure SQL Database skiljer sig standardvärdet MAX_STORAGE_SIZE_MB
efter tjänstnivå enligt följande: Premium, Affärskritisk och Hyperskala: 1 024 MB; Standard och generell användning: 100 MB; Grundläggande: 10 MB Det högsta tillåtna MAX_STORAGE_SIZE_MB
värdet är 10 240 MB.
Not
MAX_STORAGE_SIZE_MB
gränsen tillämpas inte strikt. Lagringsstorleken kontrolleras endast när Query Store skriver data till disk. Det här intervallet anges av alternativet DATA_FLUSH_INTERVAL_SECONDS
eller dialogrutan Management Studio Query Store dataspolningsintervall. Standardvärdet för intervallet är 900 sekunder (eller 15 minuter).
Om Query Store har överskridit gränsen för MAX_STORAGE_SIZE_MB
mellan kontroller av lagringsstorlek övergår den till skrivskyddat läge. Om SIZE_BASED_CLEANUP_MODE
är aktiverat utlöses även rensningsmekanismen för att framtvinga gränsen för MAX_STORAGE_SIZE_MB
.
När tillräckligt med utrymme har rensats växlar Query Store-läget automatiskt tillbaka till läs-och skrivläge.
Viktig
Om du tror att din arbetsbelastningsinsamling behöver mer än 10 GB diskutrymme bör du förmodligen tänka om och optimera arbetsbelastningen för att återanvända frågeplaner (till exempel genom att använda tvingad parameteriseringeller justera Query Store-konfigurationerna.
Från och med SQL Server 2019 (15.x) och i Azure SQL Database kan du ange QUERY_CAPTURE_MODE
till ANPASSAD för ytterligare kontroll över frågeinsamlingsprincipen.
INTERVAL_LENGTH_MINUTES
Avgör tidsintervallet med vilket körningsstatistikdata aggregeras till Query Store. För att optimera för utrymmesanvändning aggregeras körningsstatistiken i statistikarkivet för körning över ett fast tidsfönster. Det här fasta tidsfönstret konfigureras med hjälp av argumentet INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES är typ bigint. Standardvärdet är 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | AV }
Styr om rensning aktiveras automatiskt när den totala mängden data närmar sig maximal storlek.
BORT
Storleksbaserad rensning aktiveras inte automatiskt.
BIL
Storleksbaserad rensning aktiveras automatiskt när storleken på disken når 90% av max_storage_size_mb. Storleksbaserad rensning tar bort de billigaste och äldsta frågorna först. Den stannar vid cirka 80% av max_storage_size_mb. Det här är standardkonfigurationsvärdet.
SIZE_BASED_CLEANUP_MODE är typ nvarchar.
QUERY_CAPTURE_MODE { ALLA | AUTO | ANPASSAD | NONE }
Anger det aktuella aktiva frågeinsamlingsläget. Varje läge definierar specifika principer för frågeinsamling.
Not
Markörer, frågor i lagrade procedurer och inbyggda kompilerade frågor registreras alltid när frågeinsamlingsläget är inställt på ALLA, AUTO eller CUSTOM.
ALLA
Samlar in alla frågor.
BIL
Samla in relevanta frågor baserat på körningsantal och resursförbrukning. Det här är standardkonfigurationsvärdet för Azure SQL Database.
INGEN
Sluta samla in nya frågor. Query Store fortsätter att samla in kompilerings- och körningsstatistik för frågor som redan har samlats in. Använd den här konfigurationen med försiktighet eftersom du kanske inte kan samla in viktiga frågor.
SED
Tillåter kontroll över alternativen för QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE är typ nvarchar.
MAX_PLANS_PER_QUERY
Definierar det maximala antalet planer som underhålls för varje fråga. MAX_PLANS_PER_QUERY är typ int. Standardvärdet är 200.
WAIT_STATS_CAPTURE_MODE { ON | AV }
Styr om väntestatistik hämtas per fråga.
PÅ
Information om väntestatistik per fråga samlas in. Det här värdet är standardkonfigurationsvärdet.
BORT
Information om väntestatistik per fråga samlas inte in.
<query_capture_policy_option_list> :: =
Styr alternativen för avbildningsprinciper för Query Store. Förutom STALE_CAPTURE_POLICY_THRESHOLD definierar dessa alternativ de OR-villkor som måste ske för att frågor ska samlas in i det definierade tröskelvärdet för inaktuell avbildningsprincip.
STALE_CAPTURE_POLICY_THRESHOLD = heltal { DAYS | TIMMAR }
Definierar utvärderingsintervallperioden för att avgöra om en fråga ska samlas in. Standardvärdet är 1 dag och kan anges från 1 timme till sju dagar. talet är typ int.
EXECUTION_COUNT = heltal
Definierar hur många gånger en fråga körs under utvärderingsperioden. Standardvärdet är 30, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga köras minst 30 gånger på en dag för att sparas i Query Store. EXECUTION_COUNT är typ int.
TOTAL_COMPILE_CPU_TIME_MS = heltal
Definierar den totala förflutna kompileringstiden för cpu som används av en fråga under utvärderingsperioden. Standardvärdet är 1 000, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga ha minst en sekund cpu-tid under frågekompilering på en dag för att sparas i Query Store. TOTAL_COMPILE_CPU_TIME_MS är typ int.
TOTAL_EXECUTION_CPU_TIME_MS = heltal
Definierar den totala förflutna körningens CPU-tid som används av en fråga under utvärderingsperioden. Standardvärdet är 100, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga ha totalt minst 100 ms cpu-tid under körningen på en dag för att sparas i Query Store. TOTAL_EXECUTION_CPU_TIME_MS är typ int.
<snapshot_option> ::=
Avgör transaktionsisoleringsnivån.
ALLOW_SNAPSHOT_ISOLATION { ON | AV }
PÅ
Aktiverar alternativet Ögonblicksbild på databasnivå. När den är aktiverad börjar DML-instruktioner generera radversioner även när ingen transaktion använder ögonblicksbildisolering. När det här alternativet har aktiverats kan transaktioner ange transaktionsisoleringsnivån SNAPSHOT. När en transaktion körs på ögonblicksbildisoleringsnivå ser alla instruktioner en ögonblicksbild av data eftersom den finns i början av transaktionen. Om en transaktion som körs på ögonblicksbildisoleringsnivå har åtkomst till data i flera databaser måste antingen ALLOW_SNAPSHOT_ISOLATION anges till PÅ i alla databaser, eller så måste varje instruktion i transaktionen använda låstips för alla referenser i en FROM-sats till en tabell i en databas där ALLOW_SNAPSHOT_ISOLATION är AV.
BORT
Inaktiverar alternativet Ögonblicksbild på databasnivå. Transaktioner kan inte ange transaktionsisoleringsnivån ÖGONBLICKSBILD.
När du ställer in ALLOW_SNAPSHOT_ISOLATION till ett nytt tillstånd (från PÅ till AV eller från AV till PÅ) returnerar ALTER DATABASE inte kontrollen till anroparen förrän alla befintliga transaktioner i databasen har checkats in. Om databasen redan är i det tillstånd som anges i ALTER DATABASE-instruktionen returneras kontrollen till anroparen omedelbart. Om ALTER DATABASE-instruktionen inte returneras snabbt använder du sys.dm_tran_active_snapshot_database_transactions för att avgöra om det finns långvariga transaktioner. Om ALTER DATABASE-instruktionen avbryts förblir databasen i det tillstånd den befann sig i när ALTER DATABASE startades.
sys.databases katalogvy anger tillståndet för transaktioner med ögonblicksbildisolering i databasen. Om snapshot_isolation_state_desc = IN_TRANSITION_TO_ON
pausar instruktionen ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF
sex sekunder och försöker utföra åtgärden igen.
Du kan inte ändra tillståndet för ALLOW_SNAPSHOT_ISOLATION om databasen är OFFLINE.
Om du anger ALLOW_SNAPSHOT_ISOLATION i en READ_ONLY databas behålls inställningen om databasen senare anges till READ_WRITE.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen snapshot_isolation_state
i sys.databases katalogvy.
READ_COMMITTED_SNAPSHOT { ON | AV }
PÅ
Aktiverar alternativet Read-Committed Ögonblicksbild på databasnivå. När den är aktiverad börjar DML-instruktioner generera radversioner även när ingen transaktion använder ögonblicksbildisolering. När det här alternativet är aktiverat använder transaktionerna som anger READ COMMITTED-isoleringsnivån radversioner i stället för att låsa. Alla instruktioner ser en ögonblicksbild av data eftersom den finns i början av -instruktionen när en transaktion körs på READ COMMITTED-isoleringsnivån.
BORT
Inaktiverar Read-Committed alternativet Ögonblicksbild på databasnivå. Transaktioner som anger READ COMMITTED-isoleringsnivån använder låsning.
Om du vill ange READ_COMMITTED_SNAPSHOT PÅ eller AV får det inte finnas några aktiva anslutningar till databasen förutom anslutningen som kör KOMMANDOT ALTER DATABASE. Databasen behöver dock inte vara i enanvändarläge. Du kan inte ändra tillståndet för det här alternativet när databasen är OFFLINE.
Om du anger READ_COMMITTED_SNAPSHOT i en READ_ONLY databas behålls inställningen när databasen senare anges till READ_WRITE.
READ_COMMITTED_SNAPSHOT kan inte aktiveras för master
, tempdb
eller msdb
systemdatabaser. Om du ändrar inställningen för model
blir den inställningen standard för alla nya databaser som skapats, förutom för tempdb
.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_read_committed_snapshot_on
i sys.databases katalogvy.
Varning
När en tabell skapas med DURABILITY = SCHEMA_ONLY
och READ_COMMITTED_SNAPSHOT sedan ändras med hjälp av ALTER DATABASE
går data i tabellen förlorade.
Dricks
I Azure SQL Database måste kommandot ALTER DATABASE
för att ange READ_COMMITTED_SNAPSHOT PÅ eller AV för en databas köras i master
-databasen.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | AV }
PÅ
När transaktionsisoleringsnivån är inställd på en isoleringsnivå som är lägre än ÖGONBLICKSBILD körs alla tolkade Transact-SQL åtgärder på minnesoptimerade tabeller under ögonblicksbildisolering. Exempel på isoleringsnivåer som är lägre än ögonblicksbilder är READ COMMITTED eller READ UNCOMMITTED. Dessa åtgärder kör om transaktionsisoleringsnivån uttryckligen anges på sessionsnivå eller om standardvärdet används implicit.
BORT
Höjer inte transaktionsisoleringsnivån för tolkade Transact-SQL åtgärder i minnesoptimerade tabeller.
Du kan inte ändra tillståndet för MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT om databasen är OFFLINE.
Standardvärdet är AV.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_memory_optimized_elevate_to_snapshot_on
i sys.databases katalogvy.
<sql_option> ::=
Styr ANSI-efterlevnadsalternativen på databasnivå.
ANSI_NULL_DEFAULT { ON | AV }
Avgör standardvärdet, NULL eller NOT NULL, för en kolumn eller CLR-användardefinierad typ som nullabiliteten inte uttryckligen definieras för i CREATE TABLE- eller ALTER TABLE-uttryck. Kolumner som definieras med begränsningar följer villkorsregler oavsett vilken inställning den här inställningen kan vara.
PÅ
Standardvärdet är NULL.
BORT
Standardvärdet är INTE NULL.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standardinställningen på databasnivå för ANSI_NULL_DEFAULT. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_NULL_DEFAULT till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_NULL_DFLT_ON.
För ANSI-kompatibilitet ändrar inställningen av databasalternativet ANSI_NULL_DEFAULT till PÅ databasens standardvärde till NULL.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_null_default_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiNullDefault
för funktionen DATABASEPROPERTYEX.
ANSI_NULLS { ON | AV }
PÅ
Alla jämförelser med ett null-värde utvärderas till OKÄNT.
BORT
Jämförelser av icke-Unicode-värden med ett nullvärde utvärderas till TRUE om båda värdena är NULL.
Viktig
I en framtida version av SQL Server kommer ANSI_NULLS alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV genererar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för ANSI_NULLS. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_NULLS till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_NULLS.
Not
ANGE ANSI_NULLS måste också anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_nulls_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiNullsEnabled
för funktionen DATABASEPROPERTYEX.
ANSI_PADDING { ON | AV }
PÅ
Strängarna är vadderade till samma längd före konverteringen. Även vadderade till samma längd innan du infogar till en varchar eller nvarchar datatyp.
BORT
Infogar avslutande blanksteg i teckenvärden i varchar eller nvarchar kolumner. Lämnar också avslutande nollor i binära värden som infogas i varbinära kolumner. Värden är inte vadderade till kolumnens längd.
När OFF har angetts påverkar den här inställningen endast definitionen av nya kolumner.
Viktig
I en framtida version av SQL Server kommer ANSI_PADDING alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV skapar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Vi rekommenderar att du alltid ställer in ANSI_PADDING på PÅ. ANSI_PADDING måste vara PÅ när du skapar eller manipulerar index för beräknade kolumner eller indexerade vyer.
char(n) och binary(n) kolumner som tillåter null-värden är vadderade till kolumnlängden när ANSI_PADDING är inställt på PÅ. Avslutande blanksteg och nollor trimmas när ANSI_PADDING är AV. char(n) och binary(n) kolumner som inte tillåter nulls är alltid vadderade till längden på kolumnen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standardinställningen på databasnivå för ANSI_PADDING. ODBC- och OLE DB-klienter utfärdar som standard en inställning för SET-instruktion på anslutningsnivå ANSI_PADDING till PÅ för sessionen. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_PADDING.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_padding_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiPaddingEnabled
för funktionen DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | AV }
PÅ
Fel eller varningar utfärdas när villkor som divide-by-zero inträffar. Fel och varningar utfärdas också när null-värden visas i aggregerade funktioner.
BORT
Inga varningar utlöses och nullvärden returneras när villkor som divide-by-zero inträffar.
Not
ANGE ANSI_WARNINGS måste anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för ANSI_WARNINGS. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_WARNINGS till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET-ANSI_WARNINGS.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_warnings_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiWarningsEnabled
för funktionen DATABASEPROPERTYEX.
ARITHABORT { ON | AV }
PÅ
En fråga avslutas när ett spill eller divide-by-zero-fel inträffar under frågekörningen.
BORT
Ett varningsmeddelande visas när ett av dessa fel inträffar. Frågan, batchen eller transaktionen fortsätter att bearbetas som om inget fel uppstod även om en varning visas.
Not
SET ARITHABORT måste anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_arithabort_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsArithmeticAbortEnabled
för funktionen DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Mer information finns i ALTER DATABASE-kompatibilitetsnivå.
CONCAT_NULL_YIELDS_NULL { ON | AV }
PÅ
Resultatet av en sammanfogningsåtgärd är NULL när någon av operanderna är NULL. Om du till exempel sammanfogar teckensträngen "This is" (Detta är) och NULL returneras värdet NULL i stället för värdet "This is".
BORT
Null-värdet behandlas som en tom teckensträng.
Not
CONCAT_NULL_YIELDS_NULL måste anges till PÅ när du skapar eller gör ändringar i index i beräknade kolumner eller indexerade vyer.
I en framtida version av SQL Server kommer CONCAT_NULL_YIELDS_NULL alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV genererar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för CONCAT_NULL_YIELDS_NULL. Som standard utfärdar ODBC- och OLE DB-klienter en inställning för SET-instruktion på anslutningsnivå CONCAT_NULL_YIELDS_NULL till PÅ för sessionen när du ansluter till en instans av SQL Server. Mer information finns i SET CONCAT_NULL_YIELDS_NULL.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_concat_null_yields_null_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsNullConcat
för funktionen DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | AV }
PÅ
Ett fel genereras när precisionsförlust inträffar i ett uttryck.
BORT
Förlust av precision genererar inget felmeddelande, och resultatet avrundas till precisionen i kolumnen eller variabeln som lagrar resultatet.
Viktig
NUMERIC_ROUNDABORT måste anges till AV när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa status för det här alternativet i kolumnen is_numeric_roundabort_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsNumericRoundAbortEnabled
för funktionen DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | AV }
PÅ
Dubbla citattecken kan användas för att omsluta avgränsade identifierare.
Alla strängar som avgränsas med dubbla citattecken tolkas som objektidentifierare. Citerade identifierare behöver inte följa Transact-SQL regler för identifierare. De kan vara nyckelord och kan innehålla tecken som inte tillåts i Transact-SQL identifierare. Om ett dubbelt citattecken (
"
) är en del av identifieraren kan det representeras av två dubbla citattecken (""
).BORT
Identifierare kan inte vara inom citattecken och måste följa alla Transact-SQL regler för identifierare. Literaler kan avgränsas med enkla eller dubbla citattecken.
SQL Server gör också att identifierare kan avgränsas med hakparenteser ([
och ]
). Hakparenteserade identifierare kan alltid användas, oavsett vilken inställning QUOTED_IDENTIFIER är. Mer information finns i Databasidentifierare.
När en tabell skapas lagras alternativet QUOTED IDENTIFIER alltid som PÅ i tabellens metadata. Alternativet lagras även om alternativet är inställt på AV när tabellen skapas.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för QUOTED_IDENTIFIER. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå QUOTED_IDENTIFIER till PÅ som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET QUOTED_IDENTIFIER.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_quoted_identifier_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsQuotedIdentifiersEnabled
för funktionen DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | AV }
PÅ
Rekursiv avfyrning av AFTER-utlösare tillåts.
BORT
Du kan fastställa det här alternativets status genom att undersöka kolumnen
is_recursive_triggers_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapenIsRecursiveTriggersEnabled
för funktionen DATABASEPROPERTYEX.
Not
Endast direkt rekursion förhindras när RECURSIVE_TRIGGERS är inställt på OFF. Om du vill inaktivera indirekt rekursion måste du också ange serveralternativet kapslade utlösare till 0.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_recursive_triggers_on
i sys.databases katalogvy eller egenskapen IsRecursiveTriggersEnabled
för funktionen DATABASEPROPERTYEX.
<target_recovery_time_option> ::=
Anger frekvensen för indirekta kontrollpunkter per databas. Från och med SQL Server 2016 (13.x) är standardvärdet för nya databaser 1 minut, vilket indikerar att databasen använder indirekta kontrollpunkter. För äldre versioner är standardvärdet 0, vilket anger att databasen använder automatiska kontrollpunkter, vars frekvens beror på inställningen för återställningsintervall för serverinstansen. Microsoft rekommenderar 1 minut för de flesta system.
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTER }
target_recovery_time
Anger den maximala gränsen för hur länge den angivna databasen ska återställas i händelse av en krasch. target_recovery_time är typ int.
SEKUNDER
Anger att target_recovery_time uttrycks som antalet sekunder.
PROTOKOLL
Anger att target_recovery_time uttrycks som antalet minuter.
Mer information om indirekta kontrollpunkter finns i Databaskontrollpunkter.
MED <avslutning> ::=
Anger när ofullständiga transaktioner ska återställas när databasen övergår från ett tillstånd till ett annat. Om avslutningssatsen utelämnas väntar ALTER DATABASE-instruktionen på obestämd tid om det finns något lås på databasen. Endast en avslutningssats kan anges och den följer SET-satserna.
Not
Alla databasalternativ använder inte satsen WITH <avslutning>. Mer information finns i tabellen under Ange alternativ i avsnittet "Kommentarer" i den här artikeln.
ÅTERSTÄLLNING EFTER heltal [SEKUNDER] | ÅTERSTÄLLNING OMEDELBART
Anger om du vill återställa efter det angivna antalet sekunder eller omedelbart.
NO_WAIT
Anger att begäran misslyckas om det begärda databastillståndet eller alternativändringen inte kan slutföras omedelbart. Att slutföra omedelbart innebär att inte vänta på att transaktioner ska checkas in eller återställas på egen hand.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | AV }
PÅ som standard men ställs också automatiskt in på AV efter återställning vid tidpunkt. Mer information om hur du aktiverar den här inställningen finns i Konfigurera kvarhållningsprincip.
PÅ
Standard. Aktiverar kvarhållningsprincip för temporala tabeller. Mer information finns i Hantera kvarhållning av historiska data i systemversionsbaserade temporala tabeller.
BORT
Utför inte en tidsmässig historisk kvarhållningsprincip.
Ange alternativ
Om du vill hämta aktuella inställningar för databasalternativ använder du sys.databases katalogvy eller DATABASEPROPERTYEX
När du har angett ett databasalternativ börjar den nya inställningen gälla omedelbart.
Du kan ändra standardvärdena för något av databasalternativen för alla nyligen skapade databaser. Det gör du genom att ändra lämpligt databasalternativ i model
-databasen.
Alla databasalternativ använder inte satsen WITH <avslutning> eller kan anges i kombination med andra alternativ. I följande tabell visas dessa alternativ och deras alternativ och avslutningsstatus.
Alternativkategori | Kan anges med andra alternativ | Kan använda satsen MED <avslutning> |
---|---|---|
<auto_option> | Ja | Nej |
<change_tracking_option> | Ja | Ja |
<cursor_option> | Ja | Nej |
<db_encryption_option> | Ja | Nej |
<db_update_option> | Ja | Ja |
<db_user_access_option> | Ja | Ja |
<delayed_durability_option> | Ja | Ja |
<parameterization_option> | Ja | Ja |
ALLOW_SNAPSHOT_ISOLATION | Nej | Nej |
READ_COMMITTED_SNAPSHOT | Nej | Ja |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Ja | Ja |
DATE_CORRELATION_OPTIMIZATION | Ja | Ja |
<sql_option> | Ja | Nej |
<target_recovery_time_option> | Nej | Ja |
Exempel
A. Ange databasen till READ_ONLY
Att ändra tillståndet för en databas eller filgrupp till READ_ONLY eller READ_WRITE kräver exklusiv åtkomst till databasen och kan ta några sekunder att slutföra. I följande exempel anges databasen till RESTRICTED_USER
läge för att begränsa åtkomsten. I exemplet anges sedan tillståndet för den AdventureWorks2022
databasen till READ_ONLY
och returnerar åtkomst till databasen till alla användare.
--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
Så här ställer du in databasen i läs- och skrivläge igen:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
Så här verifierar du:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Aktivera ögonblicksbildisolering på en databas
I följande exempel aktiveras alternativet för ramverk för ögonblicksbildisolering för AdventureWorks2022
-databasen.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Kontrollera tillståndet för snapshot_isolation_framework
i databasen.
--Connect to [database_name]
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO
Resultatuppsättningen visar att ramverket för ögonblicksbildisolering är aktiverat.
Namn | snapshot_isolation_state | beskrivning |
---|---|---|
[database_name] | 1 | PÅ |
C. Aktivera, ändra eller inaktivera ändringsspårning
I följande exempel aktiveras ändringsspårning för AdventureWorks2022
-databasen och kvarhållningsperioden anges till 2
dagar.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
I följande exempel visas hur du ändrar kvarhållningsperioden till 3 dagar.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
I följande exempel visas hur du inaktiverar ändringsspårning för AdventureWorks2022
-databasen.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D. Aktivera Query Store
Följande exempel aktiverar Query Store och konfigurerar Query Store-parametrar.
--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. Aktivera Query Store med väntestatistik
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
--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. Aktivera Query Store med anpassade alternativ för avbildningsprinciper
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
--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
)
);
Relaterat innehåll
- Statistik
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- ALTER DATABASE-kompatibilitetsnivå
- ÄNDRA databasspegling
- CREATE DATABASE
- Aktivera och inaktivera ändringsspårning (SQL Server)
- DROP DATABASE (Transact-SQL)
- ANGE TRANSAKTIONSISOLERINGSNIVÅ (Transact-SQL)
- sp_configure
- Metodtips för övervakning av arbetsbelastningar med Query Store
- Query Store-tips
* SQL Managed Instance *
Azure SQL Managed Instance
Kompatibilitetsnivåer är SET
alternativ men beskrivs i ALTER DATABASE-kompatibilitetsnivån.
Not
Många alternativ för databasuppsättningar kan konfigureras för den aktuella sessionen med hjälp av SET-instruktioner och konfigureras ofta av program när de ansluter. Uppsättningsalternativ på sessionsnivå åsidosätter ALTER DATABASE SET
värden. Databasalternativen som beskrivs i följande avsnitt är värden som kan anges för sessioner som inte uttryckligen anger andra angivna alternativvärden.
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 }
Argument
database_name
Namnet på databasen som ska ändras.
STRÖM
CURRENT
kör åtgärden i den aktuella databasen.
CURRENT
stöds inte för alla alternativ i alla kontexter. Om CURRENT
misslyckas anger du databasnamnet.
<auto_option> ::=
Styr automatiska alternativ.
AUTO_CREATE_STATISTICS { ON | AV }
PÅ
Query Optimizer skapar statistik för enskilda kolumner i frågepredikat, efter behov, för att förbättra frågeplaner och frågeprestanda. Den här statistiken med en kolumn skapas när Query Optimizer kompilerar frågor. Enkolumnsstatistiken skapas endast för kolumner som inte redan är den första kolumnen i ett befintligt statistikobjekt.
Standardvärdet är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
BORT
Frågeoptimeraren skapar inte statistik för enskilda kolumner i frågepredikat när den kompilerar frågor. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Du kan fastställa det här alternativets status genom att undersöka kolumnen
is_auto_create_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapenIsAutoCreateStatistics
för funktionen DATABASEPROPERTYEX.Mer information finns i avsnittet "Statistikalternativ" i Statistics.
INCREMENTAL = ON | BORT
Ställ in AUTO_CREATE_STATISTICS på PÅ och ange INKREMENTELL till PÅ. Den här inställningen skapar automatiskt statistik som inkrementell när inkrementell statistik stöds. Standardvärdet är AV. Mer information finns i CREATE STATISTICS.
AUTO_SHRINK { ON | AV }
PÅ
Databasfilerna är kandidater för regelbunden krympning. Om du inte har ett specifikt krav ska du inte ange alternativet AUTO_SHRINK databas till PÅ. Mer information finns i Krympa en databas.
Både datafilen och loggfilerna kan krympas automatiskt. AUTO_SHRINK minskar storleken på transaktionsloggen endast om du ställer in databasen på SIMPLE-återställningsmodell eller om du säkerhetskopierar loggen. När de är inställda på OFF krymps inte databasfilerna automatiskt under periodiska kontroller av outnyttjat utrymme.
Alternativet AUTO_SHRINK gör att filer krymps när mer än 25 procent av filen innehåller outnyttjat utrymme. Alternativet gör att filen krymper till en av två storlekar. Den krymper till den som är större:
- Storleken där 25 procent av filen är outnyttjat utrymme
- Storleken på filen när den skapades
Du kan inte krympa en skrivskyddad databas.
BORT
Databasfilerna krymps inte automatiskt under periodiska kontroller av oanvänt utrymme.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_shrink_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoShrink
för funktionen DATABASEPROPERTYEX.
Not
Alternativet AUTO_SHRINK är inte tillgängligt i en innesluten databas.
AUTO_UPDATE_STATISTICS { ON | AV }
PÅ
Anger att Query Optimizer uppdaterar statistik när de används av en fråga och när de kan vara inaktuella. Statistiken blir inaktuell efter att åtgärderna infoga, uppdatera, ta bort eller slå samman ändrar datadistributionen i tabellen eller den indexerade vyn. Frågeoptimeraren avgör när statistiken kan vara inaktuell genom att räkna antalet dataändringar sedan den senaste statistikuppdateringen och jämföra antalet ändringar med ett tröskelvärde. Tröskelvärdet baseras på antalet rader i tabellen eller den indexerade vyn.
Frågeoptimeraren söker efter inaktuell statistik innan den kompilerar en fråga och kör en cachelagrad frågeplan. Query Optimizer använder kolumner, tabeller och indexerade vyer i frågepredikatet för att avgöra vilken statistik som kan vara inaktuell. Frågeoptimeraren avgör den här informationen innan den kompilerar en fråga. Innan du kör en cachelagrad frågeplan verifierar databasmotorn att frågeplanen refererar till up-to-date-statistik.
Alternativet AUTO_UPDATE_STATISTICS gäller för statistik som skapats för index, enkla kolumner i frågepredikat och statistik som skapas med hjälp av instruktionen CREATE STATISTICS. Det här alternativet gäller även för filtrerad statistik.
Standardvärdet är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
Använd alternativet AUTO_UPDATE_STATISTICS_ASYNC för att ange om statistiken uppdateras synkront eller asynkront.
BORT
Anger att Frågeoptimeraren inte uppdaterar statistik när de används av en fråga. Query Optimizer uppdaterar inte heller statistik när de kan vara inaktuella. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_update_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoUpdateStatistics
för funktionen DATABASEPROPERTYEX.
Mer information finns i avsnittet "Använda databasomfattande statistikalternativ" i Statistics.
AUTO_UPDATE_STATISTICS_ASYNC { ON | AV }
PÅ
Anger att statistikuppdateringar för alternativet AUTO_UPDATE_STATISTICS är asynkrona. Frågeoptimeraren väntar inte på att statistikuppdateringarna ska slutföras innan frågor kompileras.
Att ställa in det här alternativet på PÅ har ingen effekt om inte AUTO_UPDATE_STATISTICS är inställt på PÅ.
Som standard är alternativet AUTO_UPDATE_STATISTICS_ASYNC inställt på OFF och Query Optimizer uppdaterar statistik synkront.
BORT
Anger att statistikuppdateringar för alternativet AUTO_UPDATE_STATISTICS är synkrona. Frågeoptimeraren väntar på att statistikuppdateringarna ska slutföras innan frågor kompileras.
Att ställa in det här alternativet på AV har ingen effekt om inte AUTO_UPDATE_STATISTICS är inställt på PÅ.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_update_stats_async_on
i sys.databases katalogvy.
Mer information som beskriver när du ska använda synkrona eller asynkrona statistikuppdateringar finns i avsnittet "Använda databasomfattande statistikalternativ" i Statistics.
<automatic_tuning_option> ::=
Styr automatiska alternativ för Automatisk justering.
FORCE_LAST_GOOD_PLAN = { STANDARD | PÅ | AV }
Aktiverar eller inaktiverar FORCE_LAST_GOOD_PLAN
alternativet Automatisk justering.
STANDARD
Standardvärdet för Azure SQL Managed Instance är PÅ.
PÅ
Databasmotorn tvingar automatiskt fram den senast kända bra planen för Transact-SQL frågor där en ny frågeplan orsakar prestandaregressioner. Databasmotorn övervakar kontinuerligt frågeprestanda för den Transact-SQL frågan med den framtvingade planen. Om det finns prestandavinster fortsätter databasmotorn att använda den senast kända bra planen. Om prestandavinster inte identifieras skapar databasmotorn en ny frågeplan. Instruktionen misslyckas om Query Store inte är aktiverat eller inte är i läs- och skrivläge läge. Det här är standardvärdet.
BORT
Databasmotorn rapporterar potentiella frågeprestandaregressioner som orsakas av ändringar i frågeplanen i sys.dm_db_tuning_recommendations vy. Dessa rekommendationer tillämpas dock inte automatiskt. Användare kan övervaka aktiva rekommendationer och åtgärda identifierade problem genom att använda Transact-SQL skript som visas i vyn.
<change_tracking_option> ::=
Styr ändringsspårningsalternativ. Du kan aktivera ändringsspårning, ange alternativ, ändra alternativ och inaktivera ändringsspårning. Exempel finns i avsnittet Exempel senare i den här artikeln.
PÅ
Aktiverar ändringsspårning för databasen. När du aktiverar ändringsspårning kan du också ange alternativen AUTOMATISK RENSNING och ÄNDRINGSBEVARANDE.
AUTO_CLEANUP = { ON | AV }
PÅ
Information om ändringsspårning tas bort automatiskt efter den angivna kvarhållningsperioden.
BORT
Ändringsspårningsdata tas inte bort från databasen.
CHANGE_RETENTION = retention_period { DAYS | TIMMAR | MINUTER }
Anger den minsta perioden för att behålla information om ändringsspårning i databasen. Data tas bara bort när värdet för AUTO_CLEANUP är PÅ.
retention_period är ett heltal som anger den numeriska komponenten i kvarhållningsperioden.
Standardkvarhållningsperioden är 2 dagar. Den minsta kvarhållningsperioden är 1 minut. Standardkvarhållningstypen är DAYS.
BORT
Inaktiverar ändringsspårning för databasen. Inaktivera ändringsspårning för alla tabeller innan du inaktiverar ändringsspårning från databasen.
<cursor_option> ::=
Styr markörens alternativ.
CURSOR_CLOSE_ON_COMMIT { ON | AV }
PÅ
Alla markörer som öppnas när du checkar in eller återställer en transaktion stängs.
BORT
Markörer förblir öppna när en transaktion checkas in. om du återställer en transaktion stängs alla markörer förutom de som definierats som INSENSITIVE eller STATIC.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för CURSOR_CLOSE_ON_COMMIT. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå CURSOR_CLOSE_ON_COMMIT till AV för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET CURSOR_CLOSE_ON_COMMIT.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_cursor_close_on_commit_on
i sys.databases katalogvy eller egenskapen IsCloseCursorsOnCommitEnabled för funktionen DATABASEPROPERTYEX. Markören frigörs implicit endast vid frånkoppling. Mer information finns i DEKLARERA MARKÖREN.
<db_encryption_option> ::=
Styr databaskrypteringstillståndet.
KRYPTERING { PÅ | AV }
Anger att databasen ska krypteras (PÅ) eller inte krypteras (OFF). Mer information om databaskryptering finns i Transparent datakryptering (TDE)och Transparent datakryptering för Azure SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics.
När kryptering är aktiverat på databasnivå krypteras alla filgrupper. Alla nya filgrupper ärver den krypterade egenskapen. Om några filgrupper i databasen är inställda på SKRIVSKYDDad misslyckas databaskrypteringsåtgärden.
Du kan se krypteringstillståndet för databasen med hjälp av vyn sys.dm_database_encryption_keys dynamisk hantering.
<delayed_durability_option> ::=
Styr om transaktioner checkar in helt varaktiga eller fördröjda varaktiga.
HANDIKAPPAD
Alla transaktioner som följer
SET DISABLED
är helt hållbara. Eventuella hållbarhetsalternativ som anges i ett atomiskt block eller incheckningsinstruktivt uttryck ignoreras.TILLÅTEN
Alla transaktioner som följer
SET ALLOWED
är antingen helt hållbara eller fördröjda varaktiga, beroende på hållbarhetsalternativet som anges i atomblocket eller incheckningsinstrukeringen.FORCERAD
Alla transaktioner som följer
SET FORCED
är fördröjda varaktiga. Eventuella hållbarhetsalternativ som anges i ett atomiskt block eller incheckningsinstruktivt uttryck ignoreras.
<PARAMETERIZATION_option> ::=
Styr parameteriseringsalternativet.
PARAMETERIZATION { SIMPLE | FORCED }
ENKEL
Frågor parametriseras baserat på databasens standardbeteende.
FORCERAD
SQL Server parameteriserar alla frågor i databasen.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_parameterization_forced
i sys.databases katalogvy.
<query_store_options> ::=
PÅ | AV | RENSA [ ALLA ]
Styr om Query Store är aktiverat i den här databasen och styr även borttagningen av innehållet i Query Store.
PÅ
Aktiverar Query Store.
BORT
Inaktiverar Query Store. Det här är standardvärdet.
KLAR
Ta bort innehållet i Query Store.
OPERATION_MODE
Beskriver åtgärdsläget för Query Store. Giltiga värden är READ_ONLY och READ_WRITE. I READ_WRITE läge samlar Query Store in och bevarar information om körningsstatistik för frågeplan och körning. I READ_ONLY läge kan information läsas från Query Store, men ny information läggs inte till. Om det maximala allokerade utrymmet i Query Store har förbrukats ändrar Query Store sitt åtgärdsläge till READ_ONLY.
CLEANUP_POLICY
Beskriver datakvarhållningsprincipen för Query Store. STALE_QUERY_THRESHOLD_DAYS avgör hur många dagar informationen för en fråga ska lagras i Frågearkivet. STALE_QUERY_THRESHOLD_DAYS är typ bigint. Standardvärdet är 30. För SQL Database Basic-utgåvan är standardvärdet 7 dagar.
DATA_FLUSH_INTERVAL_SECONDS
Avgör hur ofta data som skrivs till Query Store sparas på disken. För att optimera prestanda skrivs data som samlas in av Query Store asynkront till disken. Frekvensen för den här asynkrona överföringen konfigureras med hjälp av argumentet DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS är typ bigint. Standardvärdet är 900 (15 min).
MAX_STORAGE_SIZE_MB
Avgör vilket utrymme som allokeras till Query Store. MAX_STORAGE_SIZE_MB är typ bigint. Standardvärdet är 100 MB.
MAX_STORAGE_SIZE_MB
gränsen tillämpas inte strikt. Lagringsstorleken kontrolleras endast när Query Store skriver data till disk. Det här intervallet anges av alternativet DATA_FLUSH_INTERVAL_SECONDS
eller dialogrutan Management Studio Query Store dataspolningsintervall. Standardvärdet för intervallet är 900 sekunder (eller 15 minuter).
Om Query Store har överskridit gränsen för MAX_STORAGE_SIZE_MB
mellan kontroller av lagringsstorlek övergår den till skrivskyddat läge. Om SIZE_BASED_CLEANUP_MODE
är aktiverat utlöses även rensningsmekanismen för att framtvinga gränsen för MAX_STORAGE_SIZE_MB
.
När tillräckligt med utrymme har rensats växlar Query Store-läget automatiskt tillbaka till läs-och skrivläge.
Viktig
- Om du tror att din arbetsbelastningsinsamling behöver mer än 10 GB diskutrymme bör du förmodligen tänka om och optimera arbetsbelastningen för att återanvända frågeplaner (till exempel genom att använda tvingad parameteriseringeller justera Query Store-konfigurationerna.
- Från och med SQL Server 2019 (15.x) och i Azure SQL Database kan du ange
QUERY_CAPTURE_MODE
till ANPASSAD för ytterligare kontroll över frågeinsamlingsprincipen. -
MAX_STORAGE_SIZE_MB
inställningsgränsen är 10 240 MB för Azure SQL Managed Instance.
INTERVAL_LENGTH_MINUTES
Avgör tidsintervallet med vilket körningsstatistikdata aggregeras till Query Store. För att optimera för utrymmesanvändning aggregeras körningsstatistiken i statistikarkivet för körning över ett fast tidsfönster. Det här fasta tidsfönstret konfigureras med hjälp av argumentet INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES är typ bigint. Standardvärdet är 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | AV }
Styr om rensning aktiveras automatiskt när den totala mängden data närmar sig maximal storlek.
BORT
Storleksbaserad rensning aktiveras inte automatiskt.
BIL
Storleksbaserad rensning aktiveras automatiskt när storleken på disken når 90% av max_storage_size_mb. Storleksbaserad rensning tar bort de billigaste och äldsta frågorna först. Den stannar vid cirka 80% av max_storage_size_mb. Det här är standardkonfigurationsvärdet.
SIZE_BASED_CLEANUP_MODE är typ nvarchar.
QUERY_CAPTURE_MODE { ALLA | AUTO | ANPASSAD | NONE }
Anger det aktuella aktiva frågeinsamlingsläget.
ALLA
Alla frågor samlas in.
BIL
Samla in relevanta frågor baserat på körningsantal och resursförbrukning. Det här är standardkonfigurationsvärdet för Azure SQL Database.
INGEN
Sluta samla in nya frågor. Query Store fortsätter att samla in kompilerings- och körningsstatistik för frågor som redan har samlats in. Använd den här konfigurationen med försiktighet eftersom du kanske inte kan samla in viktiga frågor.
QUERY_CAPTURE_MODE är typ nvarchar.
MAX_PLANS_PER_QUERY
Ett heltal som representerar det maximala antalet planer som underhålls för varje fråga. MAX_PLANS_PER_QUERY är typ int. Standardvärdet är 200.
WAIT_STATS_CAPTURE_MODE { ON | AV }
Styr om väntestatistik hämtas per fråga.
PÅ
Information om väntestatistik per fråga samlas in. Det här värdet är standardkonfigurationsvärdet.
BORT
Information om väntestatistik per fråga samlas inte in.
<query_capture_policy_option_list> :: =
Styr alternativen för avbildningsprinciper för Query Store. Förutom STALE_CAPTURE_POLICY_THRESHOLD definierar dessa alternativ de OR-villkor som måste ske för att frågor ska samlas in i det definierade tröskelvärdet för inaktuell avbildningsprincip.
STALE_CAPTURE_POLICY_THRESHOLD = heltal { DAYS | TIMMAR }
Definierar utvärderingsintervallperioden för att avgöra om en fråga ska samlas in. Standardvärdet är 1 dag och kan anges från 1 timme till sju dagar.
EXECUTION_COUNT = heltal
Definierar hur många gånger en fråga körs under utvärderingsperioden. Standardvärdet är 30, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga köras minst 30 gånger på en dag för att sparas i Query Store. EXECUTION_COUNT är typ int.
TOTAL_COMPILE_CPU_TIME_MS = heltal
Definierar den totala förflutna kompileringstiden för cpu som används av en fråga under utvärderingsperioden. Standardvärdet är 1 000, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga ha minst en sekund cpu-tid under frågekompilering på en dag för att sparas i Query Store. TOTAL_COMPILE_CPU_TIME_MS är typ int.
TOTAL_EXECUTION_CPU_TIME_MS = heltal
Definierar den totala förflutna körningens CPU-tid som används av en fråga under utvärderingsperioden. Standardvärdet är 100, vilket innebär att för standardtröskelvärdet för inaktuell avbildningsprincip måste en fråga ha totalt minst 100 ms cpu-tid under körningen på en dag för att sparas i Query Store. TOTAL_EXECUTION_CPU_TIME_MS är typ int.
<snapshot_option> ::=
Avgör transaktionsisoleringsnivån.
ALLOW_SNAPSHOT_ISOLATION { ON | AV }
PÅ
Aktiverar alternativet Ögonblicksbild på databasnivå. När den är aktiverad börjar DML-instruktioner generera radversioner även när ingen transaktion använder ögonblicksbildisolering. När det här alternativet har aktiverats kan transaktioner ange transaktionsisoleringsnivån ÖGONBLICKSBILD. När en transaktion körs på ögonblicksbildisoleringsnivå ser alla instruktioner en ögonblicksbild av data eftersom den finns i början av transaktionen. Om en transaktion som körs på ögonblicksbildisoleringsnivå har åtkomst till data i flera databaser måste antingen ALLOW_SNAPSHOT_ISOLATION anges till PÅ i alla databaser, eller så måste varje instruktion i transaktionen använda låstips för alla referenser i en FROM-sats till en tabell i en databas där ALLOW_SNAPSHOT_ISOLATION är AV.
BORT
Inaktiverar alternativet Ögonblicksbild på databasnivå. Transaktioner kan inte ange transaktionsisoleringsnivån ÖGONBLICKSBILD.
När du ställer in ALLOW_SNAPSHOT_ISOLATION till ett nytt tillstånd (från PÅ till AV eller från AV till PÅ) returnerar ALTER DATABASE inte kontrollen till anroparen förrän alla befintliga transaktioner i databasen har checkats in. Om databasen redan är i det tillstånd som anges i ALTER DATABASE-instruktionen returneras kontrollen till anroparen omedelbart. Om ALTER DATABASE-instruktionen inte returneras snabbt använder du sys.dm_tran_active_snapshot_database_transactions för att avgöra om det finns långvariga transaktioner. Om ALTER DATABASE-instruktionen avbryts förblir databasen i det tillstånd den befann sig i när ALTER DATABASE startades.
sys.databases katalogvy anger tillståndet för transaktioner med ögonblicksbildisolering i databasen. Om snapshot_isolation_state_desc = IN_TRANSITION_TO_ON pausar instruktionen ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF
sex sekunder och försöker utföra åtgärden igen.
Du kan inte ändra tillståndet för ALLOW_SNAPSHOT_ISOLATION om databasen är OFFLINE.
Du kan ändra inställningarna för ALLOW_SNAPSHOT_ISOLATION för databaserna master
, model
, msdb
och tempdb
. Inställningen behålls varje gång instansen av databasmotorn stoppas och startas om om du ändrar inställningen för tempdb
. Om du ändrar inställningen för model
-systemdatabasen blir den inställningen standard för alla nya databaser som skapas, förutom tempdb
.
Alternativet är SOM standard PÅ för master
- och msdb
-databaserna.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen snapshot_isolation_state
i sys.databases katalogvy.
READ_COMMITTED_SNAPSHOT { ON | AV }
PÅ
Aktiverar alternativet Read-Committed Ögonblicksbild på databasnivå. När den är aktiverad börjar DML-instruktioner generera radversioner även när ingen transaktion använder ögonblicksbildisolering. När det här alternativet har aktiverats använder transaktionerna som anger READ COMMITTED-isoleringsnivån radversionering i stället för låsning. Alla instruktioner ser en ögonblicksbild av data eftersom den finns i början av -instruktionen när en transaktion körs på READ COMMITTED-isoleringsnivån.
BORT
Inaktiverar alternativet Read-Committed Ögonblicksbild på databasnivå. Transaktioner som anger READ COMMITTED-isoleringsnivån använder låsning.
Om du vill ange READ_COMMITTED_SNAPSHOT till PÅ eller AV får det inte finnas några aktiva anslutningar till databasen förutom anslutningen som kör kommandot ALTER DATABASE. Databasen behöver dock inte vara i enanvändarläge. Du kan inte ändra tillståndet för det här alternativet när databasen är OFFLINE.
READ_COMMITTED_SNAPSHOT kan inte aktiveras för master
, tempdb
eller msdb
systemdatabaser. Om du ändrar inställningen för model
-systemdatabasen blir den inställningen standard för alla nya databaser som skapats, med undantag för tempdb
.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_read_committed_snapshot_on
i sys.databases katalogvy.
Varning
När en tabell skapas med DURABILITY = SCHEMA_ONLYoch READ_COMMITTED_SNAPSHOT sedan ändras med hjälp av ALTER DATABASEgår data i tabellen förlorade.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | AV }
PÅ
När transaktionsisoleringsnivån är inställd på en isoleringsnivå som är lägre än ÖGONBLICKSBILD körs alla tolkade Transact-SQL åtgärder på minnesoptimerade tabeller under ögonblicksbildisolering. Exempel på isoleringsnivåer som är lägre än ögonblicksbilder är READ COMMITTED eller READ UNCOMMITTED. Dessa åtgärder kör om transaktionsisoleringsnivån uttryckligen anges på sessionsnivå eller om standardvärdet används implicit.
BORT
Höjer inte transaktionsisoleringsnivån för tolkade Transact-SQL åtgärder i minnesoptimerade tabeller.
Du kan inte ändra tillståndet för MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT om databasen är OFFLINE.
Standardvärdet är AV.
Den aktuella inställningen för det här alternativet kan fastställas genom att undersöka kolumnen is_memory_optimized_elevate_to_snapshot_on
i sys.databases katalogvy.
<sql_option> ::=
Styr ANSI-efterlevnadsalternativen på databasnivå.
ANSI_NULL_DEFAULT { ON | AV }
Avgör standardvärdet, NULL eller NOT NULL, för en kolumn eller CLR-användardefinierad typ som nullabiliteten inte uttryckligen definieras för i CREATE TABLE- eller ALTER TABLE-uttryck. Kolumner som definieras med begränsningar följer villkorsregler oavsett vilken inställning den här inställningen kan vara.
PÅ
Standardvärdet är NULL.
BORT
Standardvärdet är INTE NULL.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standardinställningen på databasnivå för ANSI_NULL_DEFAULT. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_NULL_DEFAULT till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_NULL_DFLT_ON.
För ANSI-kompatibilitet ändrar inställningen av databasalternativet ANSI_NULL_DEFAULT till PÅ databasens standardvärde till NULL.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_null_default_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiNullDefault
för funktionen DATABASEPROPERTYEX.
ANSI_NULLS { ON | AV }
PÅ
Alla jämförelser med ett null-värde utvärderas till OKÄNT.
BORT
Jämförelser av icke-Unicode-värden med ett nullvärde utvärderas till TRUE om båda värdena är NULL.
Viktig
I en framtida version av SQL Server kommer ANSI_NULLS alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV genererar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för ANSI_NULLS. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_NULLS till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_NULLS.
Viktig
ANGE ANSI_NULLS måste också anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_nulls_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiNullsEnabled
för funktionen DATABASEPROPERTYEX.
ANSI_PADDING { ON | AV }
PÅ
Strängarna är vadderade till samma längd före konverteringen. Även vadderade till samma längd innan du infogar till en varchar eller nvarchar datatyp.
BORT
Infogar avslutande blanksteg i teckenvärden i varchar eller nvarchar kolumner. Lämnar också avslutande nollor i binära värden som infogas i varbinära kolumner. Värden är inte vadderade till kolumnens längd.
När OFF har angetts påverkar den här inställningen endast definitionen av nya kolumner.
Viktig
I en framtida version av SQL Server kommer ANSI_PADDING alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV skapar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Vi rekommenderar att du alltid ställer in ANSI_PADDING på PÅ. ANSI_PADDING måste vara PÅ när du skapar eller manipulerar index för beräknade kolumner eller indexerade vyer.
char(n) och binary(n) kolumner som tillåter null-värden är vadderade till kolumnlängden när ANSI_PADDING är inställt på PÅ. Avslutande blanksteg och nollor trimmas när ANSI_PADDING är AV. char(n) och binary(n) kolumner som inte tillåter nulls är alltid vadderade till längden på kolumnen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standardinställningen på databasnivå för ANSI_PADDING. ODBC- och OLE DB-klienter utfärdar som standard en inställning för SET-instruktion på anslutningsnivå ANSI_PADDING till PÅ för sessionen. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET ANSI_PADDING.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_padding_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiPaddingEnabled
för funktionen DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | AV }
PÅ
Fel eller varningar utfärdas när villkor som divide-by-zero inträffar. Fel och varningar utfärdas också när null-värden visas i aggregerade funktioner.
BORT
Inga varningar utlöses och nullvärden returneras när villkor som divide-by-zero inträffar.
Viktig
ANGE ANSI_WARNINGS måste anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för ANSI_WARNINGS. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå ANSI_WARNINGS till PÅ för sessionen som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET-ANSI_WARNINGS.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_ansi_warnings_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAnsiWarningsEnabled
för funktionen DATABASEPROPERTYEX.
ARITHABORT { ON | AV }
PÅ
En fråga avslutas när ett spill eller divide-by-zero-fel inträffar under frågekörningen.
BORT
Ett varningsmeddelande visas när ett av dessa fel inträffar. Frågan, batchen eller transaktionen fortsätter att bearbetas som om inget fel uppstod även om en varning visas.
Viktig
SET ARITHABORT måste anges till PÅ när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_arithabort_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsArithmeticAbortEnabled
för funktionen DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Mer information finns i ALTER DATABASE-kompatibilitetsnivå.
CONCAT_NULL_YIELDS_NULL { ON | AV }
PÅ
Resultatet av en sammanfogningsåtgärd är NULL när någon av operanderna är NULL. Om du till exempel sammanfogar teckensträngen "This is" (Detta är) och NULL returneras värdet NULL i stället för värdet "This is".
BORT
Null-värdet behandlas som en tom teckensträng.
Viktig
CONCAT_NULL_YIELDS_NULL måste anges till PÅ när du skapar eller gör ändringar i index i beräknade kolumner eller indexerade vyer.
I en framtida version av SQL Server kommer CONCAT_NULL_YIELDS_NULL alltid att vara PÅ och alla program som uttryckligen ställer in alternativet på AV genererar ett fel. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för CONCAT_NULL_YIELDS_NULL. Som standard utfärdar ODBC- och OLE DB-klienter en inställning för SET-instruktion på anslutningsnivå CONCAT_NULL_YIELDS_NULL till PÅ för sessionen när du ansluter till en instans av SQL Server. Mer information finns i SET CONCAT_NULL_YIELDS_NULL.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_concat_null_yields_null_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsNullConcat
för funktionen DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | AV }
PÅ
Ett fel genereras när precisionsförlust inträffar i ett uttryck.
BORT
Förlust av precision genererar inget felmeddelande, och resultatet avrundas till precisionen i kolumnen eller variabeln som lagrar resultatet.
Viktig
NUMERIC_ROUNDABORT måste anges till AV när du skapar eller gör ändringar i index för beräknade kolumner eller indexerade vyer.
Du kan fastställa status för det här alternativet i kolumnen is_numeric_roundabort_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsNumericRoundAbortEnabled
för funktionen DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | AV }
PÅ
Dubbla citattecken kan användas för att omsluta avgränsade identifierare.
Alla strängar som avgränsas med dubbla citattecken tolkas som objektidentifierare. Citerade identifierare behöver inte följa Transact-SQL regler för identifierare. De kan vara nyckelord och kan innehålla tecken som inte tillåts i Transact-SQL identifierare. Om ett dubbelt citattecken (
"
) är en del av identifieraren kan det representeras av två dubbla citattecken (""
).BORT
Identifierare kan inte vara inom citattecken och måste följa alla Transact-SQL regler för identifierare. Literaler kan avgränsas med enkla eller dubbla citattecken.
SQL Server gör också att identifierare kan avgränsas med hakparenteser ([
och ]
). Hakparenteserade identifierare kan alltid användas, oavsett vilken inställning QUOTED_IDENTIFIER är. Mer information finns i Databasidentifierare.
När en tabell skapas lagras alternativet QUOTED IDENTIFIER alltid som PÅ i tabellens metadata. Alternativet lagras även om alternativet är inställt på AV när tabellen skapas.
Inställningar på anslutningsnivå som anges med set-instruktionen åsidosätter standarddatabasinställningen för QUOTED_IDENTIFIER. ODBC- och OLE DB-klienter utfärdar en set-instruktionsinställning på anslutningsnivå QUOTED_IDENTIFIER till PÅ som standard. Klienterna kör -instruktionen när du ansluter till en instans av SQL Server. Mer information finns i SET QUOTED_IDENTIFIER.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_quoted_identifier_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsQuotedIdentifiersEnabled
för funktionen DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | AV }
PÅ
Rekursiv avfyrning av AFTER-utlösare tillåts.
BORT
Du kan fastställa det här alternativets status genom att undersöka kolumnen
is_recursive_triggers_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapenIsRecursiveTriggersEnabled
för funktionen DATABASEPROPERTYEX.Not
Endast direkt rekursion förhindras när RECURSIVE_TRIGGERS är inställt på OFF. Om du vill inaktivera indirekt rekursion måste du också ange serveralternativet kapslade utlösare till 0.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_recursive_triggers_on
i sys.databases katalogvy eller egenskapen IsRecursiveTriggersEnabled
för funktionen DATABASEPROPERTYEX.
<target_recovery_time_option> ::=
target_recovery_time_option stöds inte på Azure SQL Managed Instance.
Anger frekvensen för indirekta kontrollpunkter per databas. Från och med SQL Server 2016 (13.x) är standardvärdet för nya databaser 1 minut, vilket indikerar att databasen använder indirekta kontrollpunkter. För äldre versioner är standardvärdet 0, vilket anger att databasen använder automatiska kontrollpunkter, vars frekvens beror på inställningen för återställningsintervall för serverinstansen. Microsoft rekommenderar 1 minut för de flesta system.
MED <avslutning> ::=
Anger när ofullständiga transaktioner ska återställas när databasen övergår från ett tillstånd till ett annat. Om avslutningssatsen utelämnas väntar ALTER DATABASE-instruktionen på obestämd tid om det finns något lås på databasen. Endast en avslutningssats kan anges och den följer SET-satserna.
Not
Alla databasalternativ använder inte satsen WITH <avslutning>. Mer information finns i tabellen under Ange alternativ i avsnittet "Kommentarer" i den här artikeln.
ÅTERSTÄLLNING EFTER heltal [SEKUNDER] | ÅTERSTÄLLNING OMEDELBART
Anger om du vill återställa efter det angivna antalet sekunder eller omedelbart.
NO_WAIT
Anger att begäran misslyckas om det begärda databastillståndet eller alternativändringen inte kan slutföras omedelbart. Att slutföra omedelbart innebär att inte vänta på att transaktioner ska checkas in eller återställas på egen hand.
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | AV }
PÅ som standard men ställs också automatiskt in på AV efter återställning vid tidpunkt. Mer information om hur du aktiverar den här inställningen finns i Konfigurera kvarhållningsprincip.
PÅ
Standard. Aktiverar kvarhållningsprincip för temporala tabeller. Mer information finns i Hantera kvarhållning av historiska data i systemversionsbaserade temporala tabeller.
BORT
Utför inte en tidsmässig historisk kvarhållningsprincip.
Ange alternativ
Om du vill hämta aktuella inställningar för databasalternativ använder du sys.databases katalogvy eller DATABASEPROPERTYEX
När du har angett ett databasalternativ börjar den nya inställningen gälla omedelbart.
Du kan ändra standardvärdena för något av databasalternativen för alla nyligen skapade databaser. Det gör du genom att ändra lämpligt databasalternativ i model
-systemdatabasen.
Exempel
A. Aktivera ögonblicksbildisolering på en databas
I följande exempel aktiveras alternativet för ramverk för ögonblicksbildisolering för AdventureWorks2022
-databasen.
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
Resultatuppsättningen visar att ramverket för ögonblicksbildisolering är aktiverat.
Namn | snapshot_isolation_state | beskrivning |
---|---|---|
[database_name] | 1 | PÅ |
B. Aktivera, ändra eller inaktivera ändringsspårning
I följande exempel aktiveras ändringsspårning för AdventureWorks2022
-databasen och kvarhållningsperioden anges till 2
dagar.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
I följande exempel visas hur du ändrar kvarhållningsperioden till 3
dagar.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
I följande exempel visas hur du inaktiverar ändringsspårning för AdventureWorks2022
-databasen.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. Aktivera Query Store
Följande exempel aktiverar Query Store och konfigurerar Query Store-parametrar.
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. Aktivera Query Store med väntestatistik
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
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. Aktivera Query Store med anpassade alternativ för avbildningsprinciper
I följande exempel aktiveras Query Store och dess parametrar konfigureras.
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
)
);
Relaterat innehåll
- Statistik
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- ALTER DATABASE-kompatibilitetsnivå
- ÄNDRA databasspegling
- CREATE DATABASE
- Aktivera och inaktivera ändringsspårning (SQL Server)
- DROP DATABASE (Transact-SQL)
- ANGE TRANSAKTIONSISOLERINGSNIVÅ (Transact-SQL)
- sp_configure
- Metodtips för övervakning av arbetsbelastningar med Query Store
* Azure Synapse
Analys *
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 }
}
Argument
database_name
Namnet på databasen som ska ändras.
<auto_option> ::=
Styr automatiska alternativ.
AUTO_CREATE_STATISTICS { ON | AV }
PÅ
Query Optimizer skapar statistik för enskilda kolumner i frågepredikat, efter behov, för att förbättra frågeplaner och frågeprestanda. Den här statistiken med en kolumn skapas när Query Optimizer kompilerar frågor. Enkolumnsstatistiken skapas endast för kolumner som inte redan är den första kolumnen i ett befintligt statistikobjekt.
Standardvärdet är PÅ. Vi rekommenderar att du använder standardinställningen för de flesta databaser.
BORT
Frågeoptimeraren skapar inte statistik för enskilda kolumner i frågepredikat när den kompilerar frågor. Om du ställer in det här alternativet på AV kan det orsaka suboptimala frågeplaner och försämrad frågeprestanda.
Det här kommandot måste köras när du är ansluten till användardatabasen.
Du kan fastställa det här alternativets status genom att undersöka kolumnen is_auto_create_stats_on
i sys.databases katalogvy. Du kan också fastställa statusen genom att undersöka egenskapen IsAutoCreateStatistics
för funktionen DATABASEPROPERTYEX.
Mer information finns i avsnittet "Använda databasomfattande statistikalternativ" i Statistics.
<db_encryption_option> ::=
Styr databaskrypteringstillståndet.
KRYPTERING { PÅ | AV }
PÅ
Anger att databasen ska krypteras.
BORT
Anger att databasen inte ska krypteras.
Mer information om databaskryptering finns i Transparent datakryptering (TDE)och Transparent datakryptering för Azure SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics.
När kryptering är aktiverat på databasnivå krypteras alla filgrupper. Alla nya filgrupper ärver den krypterade egenskapen. Om några filgrupper i databasen är inställda på SKRIVSKYDDad misslyckas databaskrypteringsåtgärden.
Du kan se krypteringstillståndet för databasen och krypteringsgenomsökningens tillstånd med hjälp av sys.dm_database_encryption_keys
dynamisk hanteringsvy.
<query_store_option> ::=
Styr om Query Store är aktiverat i det här informationslagret.
QUERY_STORE { ON | AV }
PÅ
Aktiverar Query Store.
BORT
Inaktiverar Query Store. OFF är standardvärdet.
Not
För Azure Synapse Analytics måste du köra ALTER DATABASE SET QUERY_STORE
från användardatabasen. Det går inte att köra -instruktionen från en annan instans av informationslagret.
Not
För Azure Synapse Analytics kan Query Store aktiveras som på andra plattformar, men ytterligare konfigurationsalternativ stöds inte.
<result_set_caching_option> ::=
gäller för: Azure Synapse Analytics
Styr om frågeresultatet cachelagras i databasen.
RESULT_SET_CACHING { ON | AV }
PÅ
Anger att frågeresultatuppsättningar som returneras från den här databasen cachelagras i databasen.
BORT
Anger att frågeresultatuppsättningar som returneras från den här databasen inte cachelagras i databasen.
Det här kommandot måste köras när det är anslutet till master
-databasen. Ändringen av den här databasinställningen börjar gälla omedelbart. Lagringskostnader uppstår vid cachelagring av frågeresultatuppsättningar. När du har inaktiverat cachelagring av resultat för en databas tas den tidigare bevarade resultatcachen omedelbart bort från Azure Synapse-lagringen.
Kör det här kommandot för att kontrollera cachelagringskonfigurationen för en databas. Om cachelagring av resultatuppsättningar är aktiverat returnerar is_result_set_caching_on
1.
SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>
Kör det här kommandot för att kontrollera om en fråga kördes med cachelagrat resultat. Kolumnen result_cache_hit
returnerar 1 för cacheträff, 0 för cachemiss och negativa värden av orsaker till varför cachelagring av resultatuppsättningar inte användes. Mer information finns i 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'>
Not
Cachelagring av resultatuppsättningar ska inte användas tillsammans med DECRYPTBYKEY. Om den här kryptografiska funktionen måste användas kontrollerar du att cachelagring av resultatuppsättningar är inaktiverad (antingen på sessionsnivå eller databasnivå) vid tidpunkten för körningen.
Viktig
Åtgärder för att skapa resultatuppsättningscache och hämta data från cachen sker på kontrollnoden för en datalagerinstans. När cachelagring av resultatuppsättningar är aktiverat kan körning av frågor som returnerar stora resultatuppsättningar (till exempel >1 miljon rader) orsaka hög CPU-användning på kontrollnoden och sakta ned det övergripande frågesvaret på instansen. Dessa frågor används ofta vid datautforskning eller ETL-åtgärder. För att undvika att betona kontrollnoden och orsaka prestandaproblem bör användarna inaktivera cachelagring av resultatuppsättningar i databasen innan de kör dessa typer av frågor.
Mer information om prestandajustering med cachelagring av resultatuppsättningar finns i Vägledning för prestandajustering.
Behörigheter
Om du vill ange alternativet RESULT_SET_CACHING behöver en användare inloggning på servernivå (den som skapades av etableringsprocessen) eller vara medlem i dbmanager
databasrollen.
<snapshot_option> ::=
gäller för: Azure Synapse Analytics
Styr transaktionsisoleringsnivån för en databas.
READ_COMMITTED_SNAPSHOT { ON | AV }
PÅ
Aktiverar alternativet READ_COMMITTED_SNAPSHOT på databasnivå.
BORT
Inaktivera alternativet READ_COMMITTED_SNAPSHOT på databasnivå.
Det här kommandot måste köras när det är anslutet till master
-databasen. Om du aktiverar READ_COMMITTED_SNAPSHOT på eller av för en användardatabas avbryts alla öppna anslutningar till den här databasen. Du bör göra den här ändringen under en databasunderhållsperiod eller vänta tills det inte finns någon aktiv anslutning till databasen förutom anslutningen som kör KOMMANDOT ALTER DATABASE. Databasen behöver inte vara i enanvändarläge. Det går inte att ändra READ_COMMITTED_SNAPSHOT inställning på sessionsnivå. Kontrollera den här inställningen för en databas genom att kontrollera kolumnen is_read_committed_snapshot_on
i sys.databases
.
I en databas med READ_COMMITTED_SNAPSHOT aktiverad kan frågor få långsammare prestanda på grund av genomsökningen av versioner om flera dataversioner finns. Långöppna transaktioner kan också orsaka en ökning av databasens storlek. Det här problemet uppstår om det finns dataändringar av dessa transaktioner som blockerar versionsrensning.
Behörigheter
Om du vill ange alternativet READ_COMMITTED_SNAPSHOT behöver en användare ALTER-behörighet för databasen.
Exempel
Kontrollera statistikinställningen för en databas
SELECT name, is_auto_create_stats_on FROM sys.databases
Aktivera Query Store för en databas
ALTER DATABASE [database_name]
SET QUERY_STORE = ON;
Aktivera cachelagring av resultatuppsättningar för en databas
-- Run this command when connecting to the MASTER database
ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;
Kontrollera cachelagringsinställningen för resultatuppsättningen för en databas
SELECT name, is_result_set_caching_on
FROM sys.databases;
Aktivera alternativet Read_Committed_Snapshot för en databas
Kör det här kommandot när du ansluter till master
-databasen.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Relaterat innehåll
Microsoft Fabric
Microsoft Fabric
Använd ALTER DATABASE ... SET
för att hantera ett 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
}
Anmärkningar
För närvarande är pausning av Delta Lake-loggpublicering och inaktivering av V-Order-beteende i ett lager de enda användningsområdena för ALTER DATABASE ... SET
i Microsoft Fabric.
Behörigheter
Användaren måste vara medlem i administratörs-, medlems- eller deltagarrollerna på arbetsytan Infrastruktur.
Exempel
A. Pausa publiceringen av Delta Lake-loggar
Följande T-SQL-kommando pausar Delta Lake Log-publiceringen i den aktuella lagerkontexten.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Om du vill kontrollera den aktuella statusen för Delta Lake Log-publicering på alla lager, på din arbetsyta, använder du följande T-SQL-kod för att fråga sys.databases i ett nytt frågefönster:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;