Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nastaví možnosti databáze v Microsoft SQL Serveru, Azure SQL Database a Azure Synapse Analytics. Pro další možnosti ALTER DATABASE viz ALTER DATABASE.
Note
Nastavení některých možností pomocí příkazu ALTER DATABASE může vyžadovat výhradní přístup k databázi. Pokud příkaz ALTER DATABASE není dokončen včas, zkontrolujte, jestli relace ALTER DATABASE neblokují jiné relace v databázi.
Další informace o konvencích syntaxe najdete v tématu Transact-SQL konvence syntaxe.
Výběr produktu
V následujícím řádku vyberte název produktu, který vás zajímá. Tímto způsobem se na této webové stránce zobrazí jiný obsah, který je vhodný pro vámi vybraný produkt.
* SQL Server *
Azure Synapse
analýzy
SQL Server
Zrcadlení databáze, skupiny dostupnosti AlwaysOn a úrovně kompatibility jsou SET možnosti, ale jsou popsány v samostatných článcích kvůli jejich délce. Další informace naleznete v tématu ALTER DATABASE Database Mirroring, ALTER DATABASE SET HADRa ÚROVEŇ kompatibility ALTER DATABASE.
Konfigurace s vymezeným oborem databáze se používají k nastavení několika konfigurací databáze na úrovni jednotlivých databází. Další informace naleznete v tématu ALTER DATABASE SCOPED CONFIGURATION.
Note
Mnoho možností databázových sad lze pro aktuální relaci nastavit pomocí příkazů SET a často je konfigurují aplikace při připojení. Možnosti sady na úrovni relace přepíší hodnoty ALTER DATABASE SET. Možnosti databáze popsané v následujících částech jsou hodnoty, které můžete nastavit pro relace, které explicitně neposkytují další hodnoty možností sady.
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>
| <data_retention_policy>
| <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>
| <optimized_locking>
| <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>
}
;
<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 = { 170 | 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 }
<optimized_locking> ::=
{
OPTIMIZED_LOCKING = { ON | OFF }
}
Arguments
database_name
Název databáze, která se má upravit.
CURRENT
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Spustí akci v aktuální databázi.
CURRENT nejsou podporované pro všechny možnosti ve všech kontextech. Pokud CURRENT selže, zadejte název databáze.
< > accelerated_database_recovery ::=
Platí na: SQL Server (počínaje SQL Server 2019 (15.x))
PovolíPRIMARY. Další informace najdete v tématu Správa zrychleného obnovení databáze.
Pokud chcete nastavit ACCELERATED_DATABASE_RECOVERY ZAPNUTO nebo VYPNUTO, nesmí existovat žádná aktivní připojení k databázi s výjimkou připojení spuštěného příkazem ALTER DATABASE. Databáze ale nemusí být v režimu jednoho uživatele. Stav této možnosti nemůžete změnit, pokud databáze není ONLINE.
< > auto_option ::=
Řídí automatické možnosti.
AUTO_CLOSE { ON | VYPNUTO }
ON
Databáze se vypne čistě a jeho prostředky se uvolní po ukončení posledního uživatele.
Databáze se automaticky znovu otevře, když se uživatel pokusí databázi znovu použít. K tomuto chování dochází například v případě, že uživatel vydá příkaz
USE database_name. Databáze se může čistě vypnout s AUTO_CLOSE nastavenou na zapnuto. Pokud ano, databáze se znovu neotevře, dokud se uživatel pokusí databázi použít při příštím restartování databázového stroje.Po vypnutí databáze se při příštím pokusu aplikace o použití databáze musí nejprve otevřít a stav se změní na online. Může to nějakou dobu trvat a může dojít k vypršení časového limitu aplikace.
OFF
Databáze zůstane otevřená po ukončení posledního uživatele.
Možnost AUTO_CLOSE je užitečná pro desktopové databáze, protože umožňuje správu databázových souborů jako běžných souborů. Dají se přesunout, zkopírovat a zálohovat nebo dokonce poslat e-mailem jiným uživatelům. Proces AUTO_CLOSE je asynchronní; opakovaným otevřením a zavřením databáze nedojde ke snížení výkonu.
Note
Možnost AUTO_CLOSE není dostupná v databázi s omezením nebo ve službě SQL Database.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_close_on v katalogu sys.databases nebo IsAutoClose vlastnosti funkce DATABASEPROPERTYEX .
Když je AUTO_CLOSE nastaveno na ON, některé sloupce v katalogu sys.databases a funkce DATABASEPROPERTYEX vrátí NULL, protože databáze není dostupná pro získání dat. Pokud chcete tento problém vyřešit, spusťte příkaz USE pro otevření databáze.
Zrcadlení databáze vyžaduje AUTO_CLOSE vypnuto.
Pokud je databáze nastavena na AUTOCLOSE = ON, operace, která iniciuje automatické vypnutí databáze vymaže mezipaměť plánu pro instanci SQL Serveru. Vymazání mezipaměti plánu způsobí rekompilace všech následných plánů spuštění a může způsobit náhlé dočasné snížení výkonu dotazů. Od verze SQL Server 2005 (9.x) Service Pack 2 pro každé vymazané úložiště mezipaměti v mezipaměti plánu obsahuje protokol chyb SYSTÉMU SQL Server následující informační zprávu: 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. Tato zpráva se protokoluje každých pět minut, dokud se mezipaměť vyprázdní v daném časovém intervalu.
Nastavení AUTO_CLOSE může být užitečnou funkcí v některých výjimečných situacích, například v instanci SQL Serveru bez dostatečné paměti pro provoz s velkým počtem databází nebo pro starší 32bitovou instanci SQL Serveru s velkým počtem databází. V takových scénářích může být užitečné povolit AUTO_CLOSE a ušetřit prostředky paměti potřebné k tomu, aby byla databáze otevřená, když databáze nepoužívá žádnou aplikaci. Když je databáze otevřená, vyžadují se některé výchozí přidělení paměti (například interní struktury představující různé objekty metadat databáze a vyrovnávací paměti transakčních protokolů).
AUTO_CREATE_STATISTICS { ON | VYPNUTO }
ON
Optimalizátor dotazů vytváří statistiky pro jednotlivé sloupce v predikátech dotazů podle potřeby za účelem zlepšení plánů dotazů a výkonu dotazů. Tyto statistiky s jedním sloupcem se vytvoří, když Optimalizátor dotazů zkompiluje dotazy. Statistiky s jedním sloupcem se vytvářejí jenom u sloupců, které ještě nejsou prvním sloupcem existujícího objektu statistiky.
Výchozí nastavení je ZAPNUTO. Pro většinu databází doporučujeme použít výchozí nastavení.
OFF
Optimalizátor dotazů nevytváří statistiky pro jednotlivé sloupce v predikátech dotazů při kompilaci dotazů. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_create_stats_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoCreateStatistics vlastnosti funkce DATABASEPROPERTYEX .
Pro více informací viz sekce "Používání databázových statistikových možností" ve Statistikách.
PŘÍRŮSTKOVÉ = ZAPNUTO | PRYČ
Platí na: SQL Server (počínaje SQL Server 2014 (12.x)) a Azure SQL Database
Nastavte AUTO_CREATE_STATISTICS na ZAPNUTO a nastavte PŘÍRŮSTKOVÉ na ZAPNUTO. Tato sada automaticky vytvoří statistiky jako přírůstkové, kdykoli se podporují přírůstkové statistiky. Výchozí hodnota je VYPNUTÁ. Další informace naleznete v tématu VYTVOŘENÍ STATISTIKY.
AUTO_SHRINK { ON | VYPNUTO }
ON
Soubory databáze jsou kandidáty na pravidelné zmenšení. Pokud nemáte konkrétní požadavek, nenastavujte možnost AUTO_SHRINK databáze na hodnotu ZAPNUTO. Další informace naleznete v tématu Zmenšení databáze.
Datové soubory i soubory protokolu se dají automaticky zmenšit. AUTO_SHRINK zmenšuje velikost transakčního protokolu pouze v případě, že nastavíte databázi na JEDNODUCHÝ model obnovení nebo pokud zálohujete protokol. Když nastavíte AUTO_SHRINK na vypnuto, soubory databáze se při pravidelných kontrolách nevyužitého místa automaticky nezvětší.
Možnost AUTO_SHRINK zmenší soubory, pokud více než 25 procent souboru obsahuje nevyužité místo. Zmenší soubor na jednu ze dvou velikostí (podle toho, co je větší):
- Velikost, ve které je 25 procent souboru nevyužité místo
- Velikost souboru při jeho vytvoření
Databázi jen pro čtení nemůžete zmenšit.
OFF
Soubory databáze se při pravidelných kontrolách nevyužitého místa automaticky nezřetěší.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_shrink_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoShrink vlastnosti funkce DATABASEPROPERTYEX .
Note
Možnost AUTO_SHRINK není dostupná v databázi s omezením.
AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
ON
Určuje, že optimalizátor dotazů aktualizuje statistiky, když je používá dotaz a kdy může být zastaralý. Statistiky se po vložení, aktualizaci, odstranění nebo sloučení změní distribuci dat v tabulce nebo indexovém zobrazení. Optimalizátor dotazů určuje, kdy statistiky můžou být zastaralé, počítáním počtu úprav dat od poslední aktualizace statistiky a porovnáním počtu úprav s prahovou hodnotou. Prahová hodnota je založená na počtu řádků v tabulce nebo indexovaném zobrazení.
Optimalizátor dotazů před kompilací dotazu zkontroluje zastaralé statistiky a spustí plán dotazů uložený v mezipaměti. Optimalizátor dotazů používá sloupce, tabulky a indexovaná zobrazení v predikáte dotazu k určení, které statistiky můžou být zastaralé. Optimalizátor dotazů určuje tyto informace před kompilací dotazu. Před spuštěním plánu dotazů v mezipaměti databázový stroj ověří, že plán dotazu odkazuje na up-tostatistiky -date.
Možnost AUTO_UPDATE_STATISTICS se vztahuje na statistiky vytvořené pro indexy, jednosloupcové v predikátech dotazů a statistiky vytvořené pomocí příkazu CREATE STATISTICS. Tato možnost platí také pro filtrované statistiky.
Výchozí hodnota je ZAPNUTÁ. Pro většinu databází doporučujeme použít výchozí nastavení.
Pomocí možnosti AUTO_UPDATE_STATISTICS_ASYNC určete, jestli se statistiky aktualizují synchronně nebo asynchronně.
OFF
Určuje, že optimalizátor dotazů neaktualizuje statistiky, když je používá dotaz. Optimalizátor dotazů také neaktualizuje statistiky, když můžou být zastaralé. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_update_stats_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoUpdateStatistics vlastnosti funkce DATABASEPROPERTYEX .
Pro více informací viz sekce "Používání databázových statistikových možností" ve Statistikách.
AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
ON
Určuje, že aktualizace statistik pro možnost AUTO_UPDATE_STATISTICS jsou asynchronní. Optimalizátor dotazů nečeká na dokončení aktualizací statistik, než zkompiluje dotazy.
Nastavení této možnosti na HODNOTU ON nemá žádný vliv, pokud není AUTO_UPDATE_STATISTICS nastavena na hodnotu ZAPNUTO.
Ve výchozím nastavení je možnost AUTO_UPDATE_STATISTICS_ASYNC vypnutá a optimalizátor dotazů aktualizuje statistiky synchronně.
OFF
Určuje, že aktualizace statistik pro možnost AUTO_UPDATE_STATISTICS jsou synchronní. Optimalizátor dotazů čeká na dokončení aktualizací statistiky, než zkompiluje dotazy.
Note
Nastavení této možnosti na vypnuto nemá žádný vliv, pokud není AUTO_UPDATE_STATISTICS nastavena na zapnuto.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_update_stats_async_on v katalogu sys.databases .
Pro více informací, které popisují, kdy používat synchronní nebo asynchronní aktualizace statistiky, viz sekce "Možnosti statistiky" v sekci Statistika.
< > automatic_tuning_option ::=
Platí na: SQL Server (počínaje SQL Server 2017 (14.x))
Zapnutí nebo vypnutí FORCE_LAST_GOOD_PLAN automatické ladění. Stav této možnosti můžete zobrazit v zobrazení sys.database_automatic_tuning_options.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ZAPNUTO | VYPNUTO }
DEFAULT
Výchozí hodnota pro SQL Server je VYPNUTÁ.
ON
Databázový stroj automaticky vynutí poslední známý dobrý plán na Transact-SQL dotazy, kde nový plán dotazů způsobuje regrese výkonu. Databázový stroj nepřetržitě monitoruje výkon dotazů Transact-SQL dotazu s vynuceným plánem.
Pokud dojde k nárůstu výkonu, databázový stroj bude dál používat poslední známý dobrý plán. Pokud se nezjistí zvýšení výkonu, databázový stroj vytvoří nový plán dotazu. Příkaz selže, pokud není povoleno úložiště dotazů nebo pokud není v režimu čtení a zápisu .
OFF
Databázový engine hlásí možné regrese výkonu dotazů způsobené změnami plánu dotazů v sys.dm_db_tuning_recommendations zobrazení. Tato doporučení se ale nepoužijí automaticky. Uživatelé můžou monitorovat aktivní doporučení a opravovat zjištěné problémy pomocí Transact-SQL skriptů zobrazených v zobrazení. Výchozí hodnota je VYPNUTÁ.
< > change_tracking_option ::=
Platí na: SQL Server a Azure SQL Database
Řídí možnosti sledování změn. Můžete povolit sledování změn, nastavit možnosti, možnosti změn a zakázat sledování změn. Příklady najdete v sekci Příklady později v tomto článku.
ON
Povolí sledování změn pro databázi. Když povolíte sledování změn, můžete také nastavit možnosti AUTOMATICKÉHO VYČIŠTĚNÍ a UCHOVÁVÁNÍ ZMĚN.
AUTO_CLEANUP = { ON | VYPNUTO }
ON
Informace o sledování změn se po zadané době uchovávání automaticky odeberou.
OFF
Data sledování změn se z databáze automaticky neodeberou.
CHANGE_RETENTION = retention_period { DNY | HODINY | MINUTY }
Určuje minimální dobu pro uchovávání informací o sledování změn v databázi. Data se odeberou jenom v případech, kdy je hodnota AUTO_CLEANUP zapnutá.
retention_period je celé číslo, které určuje číselnou složku doby zadržení.
Výchozí doba udržení je 2 dny. Minimální doba uchovávání je 1 minuta. Výchozí typ udržení je DAYS.
VYPNUTO Zakáže sledování změn pro databázi. Před zakázání sledování změn v databázi zakažte sledování změn u všech tabulek.
< > containment_option ::=
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Řídí možnosti zahrnutí databáze.
ZAHRNUTÍ = { NONE | PARTIAL}
NONE
Databáze není obsažená databáze.
PARTIAL
Databáze je obsažená databáze. Nastavení zahrnutí databáze na částečnou chybu, pokud má databáze povolenou replikaci, zachytávání dat změn nebo sledování změn. Kontrola chyb se zastaví po jednom selhání. Další informace o databázích s omezením naleznete v tématu Obsažené databáze.
< > cursor_option ::=
Řídí možnosti kurzoru.
CURSOR_CLOSE_ON_COMMIT { ON | VYPNUTO }
ON
Všechny kurzory otevřené při potvrzení nebo vrácení transakce se zavře.
OFF
Kurzory zůstávají otevřené při potvrzení transakce; vrácení zpět transakce zavře všechny kurzory, s výjimkou těch, které jsou definovány jako INSENSITIVE nebo STATIC.
Nastavení na úrovni připojení, která jsou nastavená pomocí příkazu SET, přepíší výchozí nastavení databáze pro CURSOR_CLOSE_ON_COMMIT. Klienti ODBC a OLE DB vydávají nastavení příkazu SET na úrovni připojení CURSOR_CLOSE_ON_COMMIT pro relaci ve výchozím nastavení vypnuto. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET CURSOR_CLOSE_ON_COMMIT.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_cursor_close_on_commit_on v katalogu sys.databases nebo IsCloseCursorsOnCommitEnabled vlastnosti funkce DATABASEPROPERTYEX .
CURSOR_DEFAULT { LOCAL | GLOBAL }
Platí pro: SQL Server
Určuje, zda obor kurzoru používá MÍSTNÍ nebo GLOBÁLNÍ.
LOCAL
Když zadáte HODNOTU LOCAL a při vytváření kurzoru nedefinujete kurzor jako GLOBÁLNÍ, bude obor kurzoru místní. Konkrétně je obor místní pro dávku, uloženou proceduru nebo trigger, ve kterém jste vytvořili kurzor. Název kurzoru je platný pouze v rámci tohoto oboru.
Na kurzor lze odkazovat pomocí místních proměnných kurzoru v dávce, uložené proceduře nebo triggeru nebo parametru OUTPUT uložené procedury. Kurzor je implicitně uvolněn, když dávka, uložená procedura nebo aktivační událost skončí. Kurzor je uvolněn, pokud nebyl předán zpět v parametru OUTPUT. Kurzor může být předán zpět v parametru OUTPUT. Pokud kurzor předá tento způsob zpět, je kurzor uvolněn, když poslední proměnná, která odkazuje na kurzor je uvolněna nebo přejde mimo rozsah.
GLOBAL
Pokud je zadaná funkce GLOBAL a kurzor není při vytváření definován jako LOCAL, je obor kurzoru pro připojení globální. Na název kurzoru se dá odkazovat v libovolné uložené proceduře nebo dávce spuštěné připojením.
Kurzor je implicitně uvolněn pouze při odpojení. Pro více informací viz DECLARE CURSOR.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_local_cursor_default v katalogu sys.databases . Stav lze také zjistit zkoumáním IsLocalCursorsDefault vlastnosti funkce DATABASEPROPERTYEX .
< > temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | VYPNUTO }
Ve výchozím nastavení je zapnuto, ale také automaticky nastaveno na VYPNUTO po operaci obnovení k určitému bodu v čase. Další informace, včetně toho, jak toto nastavení povolit, najdete v tématu Jak nakonfigurovat zásady uchovávání informací.
ON
Default. Povolí zásady uchovávání dočasných tabulek. Další informace najdete v tématu Správa uchovávání historických dat v dočasných tabulkách s systémovou verzí.
OFF
Neprovádějte dočasné historické zásady uchovávání informací.
< > data_retention_policy ::=
Platí pouze na: Azure SQL Edge.
DATA_RETENTION { ON | VYPNUTO }
ON
Umožňuje vyčištění na základě zásad uchovávání dat v databázi.
OFF
Zakáže vyčištění na základě zásad uchovávání dat v databázi.
<database_mirroring>
Platí pro: SQL Server
Popisy argumentů naleznete v tématu ALTER DATABASE Database Mirroring.
< > date_correlation_optimization_option ::=
Platí pro: SQL Server
Řídí možnost date_correlation_optimization.
DATE_CORRELATION_OPTIMIZATION { ON | VYPNUTO }
ON
SQL Server udržuje korelační statistiky, kde omezení FOREIGN KEY spojuje libovolné dvě tabulky v databázi a tabulky mají sloupce date-time .
Zapnutí
DATE_CORRELATION_OPTIMIZATIONzvyšuje plochu útoku při obnově nedůvěryhodných záloh , protože optimalizátor vykonává objekty s vyššími oprávněními.OFF
Statistika korelace se neudržuje.
Pokud chcete nastavit DATE_CORRELATION_OPTIMIZATION na HODNOTU ON, nesmí existovat žádná aktivní připojení k databázi s výjimkou připojení, které spouští příkaz ALTER DATABASE. Následně se podporuje více připojení.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_date_correlation_on v katalogu sys.databases .
< > db_encryption_option ::=
Řídí stav šifrování databáze.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO | SUSPEND | RESUME }
ON
Nastaví databázi, která se má šifrovat.
OFF
Nastaví databázi tak, aby nebyla šifrovaná.
SUSPEND
Platí na: SQL Server (počínaje SQL Server 2019 (15.x))
Dá se použít k pozastavení kontroly šifrování po povolení nebo zakázání transparentního šifrování dat nebo po změně šifrovacího klíče.
RESUME
Platí na: SQL Server (počínaje SQL Server 2019 (15.x))
Dá se použít k obnovení dříve pozastavené kontroly šifrování.
Další informace o šifrování databáze najdete v tématu transparentního šifrování dat (TDE)a transparentního šifrování dat pro službu Azure SQL Database, azure SQL Managed Instance aAzure Synapse Analytics.
Pokud je šifrování povolené na úrovni databáze, všechny skupiny souborů se šifrují. Všechny nové skupiny souborů dědí zašifrovanou vlastnost. Pokud jsou některé skupiny souborů v databázi nastaveny jen pro čtení, operace šifrování databáze selže.
Stav šifrování databáze a stav skenovacího šifrování můžete vidět pomocí pohledu sys.dm_database_encryption_keys dynamické správy.
< > db_state_option ::=
Platí pro: SQL Server
Řídí stav databáze.
OFFLINE
Databáze se zavře, čistě vypne a označí se jako offline. Databázi není možné upravovat, pokud je offline.
ONLINE
Databáze je otevřená a dostupná pro použití.
EMERGENCY
Databáze je označena jako READ_ONLY, protokolování je zakázané a přístup je omezený na členy pevné role serveru správce systému. TÍSŇOVÉ VOLÁNÍ se primárně používá pro účely řešení potíží. Například databáze označená jako podezřelá kvůli poškozenému souboru protokolu může být nastavena na stav TÍSŇOVÉHO VOLÁNÍ. Toto nastavení může správci systému povolit přístup k databázi jen pro čtení. Databázi na stav TÍSŇOVÉHO VOLÁNÍ můžou nastavit jenom členové pevné role serveru sysadmin.
Vyžaduje oprávnění ALTER DATABASE pro databázi subjektu, změnit databázi do offline stavu nebo stavu tísňového volání a úroveň serveru ALTER ANY DATABASE oprávnění k přesunutí databáze z offline do online režimu.
Stav této možnosti můžete zjistit prohlédnutím sloupců state a state_desc v zobrazení katalogu sys.databases . Stav lze také zjistit zkoumáním Status vlastnosti funkce DATABASEPROPERTYEX . Další informace naleznete v tématu Stavy databáze.
Databázi označenou jako OBNOVENÍ nejde nastavit na OFFLINE, ONLINE nebo TÍSŇOVÉ VOLÁNÍ. Databáze může být ve stavu OBNOVENÍ během aktivní operace obnovení nebo v případě, že operace obnovení databáze nebo souboru protokolu selže kvůli poškozenému záložnímu souboru.
< > db_update_option ::=
Určuje, jestli jsou v databázi povolené aktualizace.
READ_ONLY
Uživatelé mohou číst data z databáze, ale nemůžou je upravovat.
Note
Pokud chcete zvýšit výkon dotazů, aktualizujte statistiky před nastavením databáze na READ_ONLY. Pokud jsou po nastavení READ_ONLY databáze potřeba další statistiky, databázový stroj vytvoří statistiku v systémové databázi
tempdb. Pro více informací o statistice pro databázi pouze pro čtení viz Statistiky.READ_WRITE
Databáze je k dispozici pro operace čtení a zápisu.
Pokud chcete tento stav změnit, musíte mít výhradní přístup k databázi. Další informace najdete v klauzuli SINGLE_USER.
Note
Ve federovaných databázích Azure SQL Database je SET { READ_ONLY | READ_WRITE } zakázaná.
< > db_user_access_option ::=
Řídí uživatelský přístup k databázi.
SINGLE_USER
Platí pro: SQL Server
Určuje, že k databázi má přístup pouze jeden uživatel najednou. Pokud zadáte SINGLE_USER a jiný uživatel se připojí k databázi, příkaz ALTER DATABASE se zablokuje, dokud se všichni uživatelé neodpojí od zadané databáze. Pokud chcete toto chování přepsat, přečtěte si klauzuli <ukončení>.
Databáze zůstane v režimu SINGLE_USER i v případě, že se uživatel, který nastavil možnost, odhlásí. V tomto okamžiku se k databázi může připojit jiný uživatel, ale jenom jeden.
Než nastavíte databázi na SINGLE_USER, ověřte, že je možnost AUTO_UPDATE_STATISTICS_ASYNC vypnutá. Pokud je nastavená hodnota ZAPNUTO, vlákno na pozadí použité k aktualizaci statistiky převezme připojení k databázi a v režimu jednoho uživatele nemáte přístup k databázi. Pro zobrazení stavu této možnosti se dotazujte na sloupec is_auto_update_stats_async_on v zobrazení katalogu sys.databases . Pokud je tato možnost nastavená na zapnuto, proveďte následující úlohy:
Nastavte AUTO_UPDATE_STATISTICS_ASYNC na VYPNUTO.
Zkontrolujte aktivní asynchronní statistiku dotazem do sys.dm_exec_background_job_queue dynamického managementu.
Pokud existují aktivní úlohy, buď povolte dokončení úloh, nebo je ručně ukončete pomocí KILL STATS JOB.
RESTRICTED_USER
Umožňuje připojení k databázi pouze členům db_owner pevné databázové role a dbcreator a sysadmin pevných rolí serveru. RESTRICTED_USER neomezuje jejich počet. Odpojte všechna připojení k databázi pomocí časového rámce určeného klauzulí ukončení příkazu ALTER DATABASE. Po přechodu databáze do stavu RESTRICTED_USER budou pokusy o připojení nekvalifikovaných uživatelů odmítnuty.
MULTI_USER
Všichni uživatelé, kteří mají příslušná oprávnění pro připojení k databázi, jsou povoleni. Stav této možnosti můžete zjistit prozkoumáním sloupce user_access v katalogu sys.databases . Stav lze také zjistit zkoumáním UserAccess vlastnosti funkce DATABASEPROPERTYEX .
< > delayed_durability_option ::=
Platí na: SQL Server (počínaje SQL Server 2014 (12.x))
Určuje, zda transakce potvrdí plně trvalé nebo zpožděné trvalé.
DISABLED
Všechny transakce následující
SET DISABLEDjsou plně odolné. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.ALLOWED
Všechny transakce následující
SET ALLOWEDjsou buď plně odolné nebo zpožděné, v závislosti na možnosti stálosti nastavené v atomovém bloku nebo příkazu commit.FORCED
Všechny transakce následující
SET FORCEDjsou zpožděné trvalé. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.
< > external_access_option ::=
Platí pro: SQL Server
Určuje, zda je databáze přístupná externími prostředky, jako jsou například objekty z jiné databáze.
DB_CHAINING { ON | VYPNUTO }
ON
Databáze může být zdrojem nebo cílem řetězu vlastnictví mezi databázemi.
OFF
Databáze se nemůže účastnit řetězení vlastnictví mezi databázemi.
Important
Instance SQL Serveru toto nastavení rozpozná, pokud je možnost řetězení vlastnictví mezi databázemi 0 (VYPNUTO). Pokud je řetězení vlastnictví mezi databázemi 1 (ZAPNUTO), můžou se všechny uživatelské databáze účastnit řetězů vlastnictví napříč databázemi bez ohledu na hodnotu této možnosti. Tato možnost je nastavena pomocí sp_configure.
Pokud chcete tuto možnost nastavit, vyžaduje CONTROL SERVER oprávnění k databázi.
Možnost DB_CHAINING nelze nastavit v systémových databázích master, modela tempdb.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_db_chaining_on v katalogu sys.databases .
DŮVĚRYHODNÉ { ON | VYPNUTO }
ON
Databázové moduly (například uživatelem definované funkce nebo uložené procedury), které používají kontext zosobnění, mají přístup k prostředkům mimo databázi.
OFF
Databázové moduly v kontextu zosobnění nemají přístup k prostředkům mimo databázi.
FUNKCE TRUSTWORTHY je při připojení databáze nastavena na hodnotu VYPNUTO.
Ve výchozím nastavení mají všechny systémové databáze s výjimkou databáze msdb nastavenou hodnotu TRUSTWORTHY vypnuto. Hodnotu nelze změnit pro databáze model a tempdb. Pro databázi master doporučujeme nikdy nastavit možnost TRUSTWORTHY na HODNOTU ON.
Pokud chcete tuto možnost nastavit, vyžaduje CONTROL SERVER oprávnění k databázi.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_trustworthy_on v katalogu sys.databases .
DEFAULT_FULLTEXT_LANGUAGE
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Určuje výchozí hodnotu jazyka pro fulltextové indexované sloupce.
Important
Tato možnost je povolená pouze v případě, že je funkce CONTAINMENT nastavená na ČÁSTEČNOU. Pokud je funkce CONTAINMENT nastavená na HODNOTU NONE, dojde k chybám.
DEFAULT_LANGUAGE
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Určuje výchozí jazyk pro všechna nově vytvořená přihlášení. Jazyk lze zadat zadáním místního ID (lcid), názvu jazyka nebo aliasu jazyka. Pro seznam přijatelných jazykových názvů a aliasů viz sys.syslanguages. Tato možnost je povolená pouze v případě, že je funkce CONTAINMENT nastavená na ČÁSTEČNOU. Pokud je funkce CONTAINMENT nastavená na HODNOTU NONE, dojde k chybám.
NESTED_TRIGGERS
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Určuje, zda aktivační událost AFTER může kaskádovat; to znamená, že proveďte akci, která inicializuje jinou aktivační událost, která inicializuje jinou aktivační událost atd. Tato možnost je povolená pouze v případě, že je funkce CONTAINMENT nastavená na ČÁSTEČNOU. Pokud je funkce CONTAINMENT nastavená na HODNOTU NONE, dojde k chybám.
TRANSFORM_NOISE_WORDS
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Používá se k potlačení chybové zprávy, pokud se slova šumu nebo stopwords, způsobí selhání logické operace v fulltextovém dotazu. Tato možnost je povolená pouze v případě, že je funkce CONTAINMENT nastavená na ČÁSTEČNOU. Pokud je funkce CONTAINMENT nastavená na HODNOTU NONE, dojde k chybám.
TWO_DIGIT_YEAR_CUTOFF
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Určuje celé číslo od 1753 do 9999, které představuje rok pro odříznutí pro interpretaci dvouciferných roků jako čtyřmístných roků. Tato možnost je povolená pouze v případě, že je funkce CONTAINMENT nastavená na ČÁSTEČNOU. Pokud je funkce CONTAINMENT nastavená na HODNOTU NONE, dojde k chybám.
< > FILESTREAM_option ::=
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Řídí nastavení pro FileTables.
NON_TRANSACTED_ACCESS = { VYPNUTO | READ_ONLY | PLNÝ }
OFF
Neaktuální přístup k datům FileTable je zakázaný.
READ_ONLY
Data FILESTREAM v FileTables v této databázi lze číst neaktuálními procesy.
FULL
Umožňuje úplný, neaktuální přístup k datům FILESTREAM v FileTables je povolený.
DIRECTORY_NAME = <directory_name>
Název adresáře kompatibilního s Windows. Tento název by měl být jedinečný mezi všemi názvy adresářů na úrovni databáze v instanci SQL Serveru. Porovnání jedinečnosti nerozlišuje malá a velká písmena bez ohledu na nastavení kolace. Tato možnost musí být nastavená před vytvořením tabulky FileTable v této databázi.
< > HADR_options ::=
Platí pro: SQL Server
< > mixed_page_allocation_option ::=
Platí na: SQL Server (počínaje SQL Server 2016 (13.x))
Určuje, zda databáze může vytvořit počáteční stránky v smíšeném rozsahu pro prvních osm stránek tabulky nebo indexu.
MIXED_PAGE_ALLOCATION { VYPNUTO | ON }
OFF
Databáze vždy vytváří počáteční stránky pomocí jednotných rozsahů. Vypnuto je výchozí hodnota.
ON
Databáze může vytvářet počáteční stránky pomocí smíšených rozsahů.
Toto nastavení je vždy zapnuté pro všechny systémové databáze s výjimkou tempdb, kde je vždy VYPNUTO. Nastavení nelze změnit pro systémové databáze.
< > PARAMETERIZATION_option ::=
Řídí možnost parametrizace. Další informace o parametrizaci naleznete v Průvodce architekturou zpracování dotazů.
PARAMETRIZACE { SIMPLE | FORCED }
SIMPLE
Dotazy jsou parametrizovány na základě výchozího chování databáze.
FORCED
SQL Server parametrizuje všechny dotazy v databázi.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_parameterization_forced v katalogu sys.databases .
< > query_store_options ::=
Platí na: SQL Server (počínaje SQL Server 2016 (13.x))
ZAPNUTO | OFF [ ( VYNUCENO ) ] | CLEAR [ ALL ]
Určuje, jestli je v této databázi povolené úložiště dotazů, a také určuje odebrání obsahu úložiště dotazů. Další informace najdete v tématu Scénáře použití úložiště dotazů.
ON
Povolí úložiště dotazů.
Mnoho nových funkcí výkonu SQL Serveru 2022 (16.x), jako jsou rady úložiště dotazů, zpětná vazba CE, stupeň paralelismu (DOP) a trvalost zpětné vazby pro udělení paměti (MGF) vyžaduje povolení úložiště dotazů. Pro databáze, které byly obnoveny z jiných instancí SQL Serveru a pro databáze upgradované z místního upgradu na SQL Server 2022 (16.x), tyto databáze zachovávají předchozí nastavení úložiště dotazů. Pokud je problém s režijním úložištěm dotazů, můžou správci využít vlastní zásady zachycení s
QUERY_CAPTURE_MODE = CUSTOM. Příklady, jak povolit Query Store s vlastními možnostmi politiky zachycování, viz sekce Příklady později v tomto článku.OFF [ ( VYNUCENO ) ]
Zakáže úložiště dotazů. FUNKCE FORCED je volitelná. VYNUCENě přeruší všechny spuštěné úlohy na pozadí úložiště dotazů a při vypnutí úložiště dotazů přeskočí synchronní vyprázdnění. Způsobí, že úložiště dotazů se co nejrychleji vypne. FORCED platí pro SQL Server 2016 (13.x) SP2 CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) CU6 a novější buildy.
Note
Úložiště dotazů nelze ve službě Azure SQL Database zakázat. Provádění
ALTER DATABASE [database] SET QUERY_STORE = OFFvrátí upozornění'QUERY_STORE=OFF' is not supported in this version of SQL Server..CLEAR [ VŠICHNI ]
Odebere data související s dotazy z úložiště dotazů. All je volitelné. Funkce ALL odebere data a metadata související s dotazy z úložiště dotazů.
OPERATION_MODE { READ_ONLY | READ_WRITE }
Popisuje režim operace úložiště dotazů.
READ_WRITE
Úložiště dotazů shromažďuje a uchovává informace o plánech dotazů a statistikách spouštění modulu runtime.
READ_ONLY
Informace se dají číst z úložiště dotazů, ale nepřidají se nové informace. Pokud došlo k vyčerpání maximálního vystaveného místa úložiště dotazů, změní úložiště dotazů režim operace na READ_ONLY.
CLEANUP_POLICY
Popisuje zásady uchovávání dat úložiště dotazů. STALE_QUERY_THRESHOLD_DAYS určuje počet dnů, po které se informace pro dotaz uchovávají v úložišti dotazů. STALE_QUERY_THRESHOLD_DAYS je typ bigint. Výchozí hodnota je 30.
DATA_FLUSH_INTERVAL_SECONDS
Určuje frekvenci, s jakou se data zapsaná do úložiště dotazů zachovají na disk. Kvůli optimalizaci výkonu se data shromážděná úložištěm dotazů asynchronně zapisují na disk. Frekvence, s jakou k tomuto asynchronnímu přenosu dochází, je nakonfigurována pomocí argumentu DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS je typ bigint. Výchozí hodnota je 900 (15 min).
MAX_STORAGE_SIZE_MB
Určuje prostor vystavený úložišti dotazů. MAX_STORAGE_SIZE_MB je typ bigint. Výchozí hodnota je 100 MB pro SQL Server (SQL Server 2016 (13.x) až SQL Server 2017 (14.x)). Od SQL Server 2019 (15.x) je výchozí hodnota 1000 MB.
MAX_STORAGE_SIZE_MB limit není striktně vynucený. Velikost úložiště se kontroluje jenom v případech, kdy úložiště dotazů zapisuje data na disk. Tento interval je nastaven možností DATA_FLUSH_INTERVAL_SECONDS nebo možností dialogového okna Úložiště dotazů v sadě Management Studio Interval vyprázdnění dat. Výchozí hodnota intervalu je 900 sekund (nebo 15 minut).
Pokud úložiště dotazů porušilo limit MAX_STORAGE_SIZE_MB mezi kontrolami velikosti úložiště, přejde do režimu jen pro čtení. Pokud je povolená SIZE_BASED_CLEANUP_MODE, aktivuje se také mechanismus čištění, který vynucuje limit MAX_STORAGE_SIZE_MB.
Jakmile se vymaže dostatek místa, režim úložiště dotazů se automaticky přepne zpět na čtení i zápis.
Important
Pokud si myslíte, že vaše zachycení pracovní zátěže potřebuje více než 10 GB místa na disku, měli byste pravděpodobně přehodnotit a optimalizovat zátěž tak, abyste mohli znovu použít plány dotazů (například pomocí nucené parametrizace, nebo upravit konfigurace Query Store).
Počínaje SQL Serverem 2019 (15.x) a v Azure SQL Database můžete nastavit QUERY_CAPTURE_MODE na VLASTNÍ, abyste získali další kontrolu nad zásadami zachytávání dotazů.
INTERVAL_LENGTH_MINUTES
Určuje časový interval, ve kterém se data statistik spouštění modulu runtime agregují do úložiště dotazů. Pro optimalizaci využití místa se statistiky spouštění modulu runtime v úložišti statistik modulu runtime agregují v rámci pevného časového intervalu. Toto pevné časové okno je nakonfigurováno pomocí argumentu INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES je typ bigint. Výchozí hodnota je 60.
SIZE_BASED_CLEANUP_MODE { AUTO | VYPNUTO }
Určuje, jestli se čištění automaticky aktivuje, když se celkové množství dat blíží maximální velikosti.
AUTO
Čištění podle velikosti se automaticky aktivuje, když velikost disku dosáhne 90% MAX_STORAGE_SIZE_MB. Čištění na základě velikosti nejprve odebere nejméně nákladné a nejstarší dotazy. Zastavuje přibližně na 80% MAX_STORAGE_SIZE_MB. Tato hodnota je výchozí konfigurační hodnotou.
OFF
Čištění na základě velikosti se neaktivuje automaticky.
SIZE_BASED_CLEANUP_MODE je typ Nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | VLASTNÍ | NONE }
Určuje aktuálně aktivní režim zachytávání dotazů. Každý režim definuje konkrétní zásady zachytávání dotazů. QUERY_CAPTURE_MODE je typ Nvarchar.
Note
Kurzory, dotazy uvnitř uložených procedur a nativně kompilované dotazy se vždy zaznamenávají, když je režim zachytávání dotazů nastavený na ALL, AUTO nebo CUSTOM.
ALL
Zachytává všechny dotazy. ALL je výchozí konfigurační hodnota pro SQL Server (SQL Server 2016 (13.x) až SQL Server 2017 (14.x)).
AUTO
Zachyťte relevantní dotazy na základě počtu spuštění a spotřeby prostředků. Toto je výchozí hodnota konfigurace PRO SQL Server (počínaje SQL Serverem 2019 (15.x)) a službou Azure SQL Database.
NONE
Zastavte zachytávání nových dotazů. Úložiště dotazů nadále shromažďuje statistiky kompilace a modulu runtime pro dotazy, které už byly zachyceny. Tuto konfiguraci používejte s opatrností, protože byste mohli vynechat zachytávání důležitých dotazů.
CUSTOM
Platí na: SQL Server (počínaje SQL Server 2019 (15.x))
Umožňuje kontrolovat QUERY_CAPTURE_POLICY možnosti. Vlastní zásady zachytávání vám můžou pomoct zachytit nejdůležitější dotazy ve vaší úloze. V <query_capture_policy_option_list> najdete přizpůsobitelné možnosti.
MAX_PLANS_PER_QUERY
Definuje maximální počet plánů udržovaných pro každý dotaz. MAX_PLANS_PER_QUERY je typ int. Výchozí hodnota je 200.
WAIT_STATS_CAPTURE_MODE { ON | VYPNUTO }
Platí na: SQL Server (počínaje SQL Server 2017 (14.x)))
Určuje, jestli se zachytávají statistiky čekání na dotaz.
ON
Zachytí se informace o statistikách čekání na dotaz. Tato hodnota je výchozí konfigurační hodnotou.
OFF
Informace o statistikách čekání na dotaz se nezaznamenají.
< > query_capture_policy_option_list :: =
Platí na: SQL Server (počínaje SQL Server 2019 (15.x))
Ovládá možnosti politiky zachycování úložiště dotazů . S výjimkou STALE_CAPTURE_POLICY_THRESHOLD tyto možnosti definují podmínky OR, ke kterým musí dojít, aby dotazy byly zachyceny v definované prahové hodnotě zásad zachytávání zastaralých.
Počínaje SQL Serverem 2019 (15.x) nastavení QUERY_CAPTURE_MODE = AUTO zaznamenává podrobnosti úložiště dotazů, když dojde k dosažení některé z následujících prahových hodnot:
- EXECUTION_COUNT = 30 spuštění = počet spuštění
- TOTAL_COMPILE_CPU_TIME_MS = 1 sekunda = čas kompilace v milisekundách
- TOTAL_EXECUTION_CPU_TIME_MS = 100 ms = doba spouštění procesoru v milisekundách
Například:
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
Tyto možnosti můžete přizpůsobit pomocí QUERY_CAPTURE_MODE = CUSTOM:
STALE_CAPTURE_POLICY_THRESHOLD = celé číslo { DNY | HODINY }
Definuje období intervalu vyhodnocení, které určuje, jestli se má dotaz zachytit. Výchozí hodnota je 1 den a dá se nastavit od 1 hodiny do sedmi dnů.
EXECUTION_COUNT = celé číslo
Definuje, kolikrát se dotaz provádí během období vyhodnocení. Výchozí hodnota je 30, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí dotaz provést nejméně 30krát za jeden den, aby se zachoval v úložišti dotazů. EXECUTION_COUNT je typ int.
TOTAL_COMPILE_CPU_TIME_MS = celé číslo
Definuje celkovou uplynulou dobu kompilace procesoru používanou dotazem během období vyhodnocení. Výchozí hodnota je 1000, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí mít dotaz celkem alespoň jednu sekundu času stráveného během kompilace dotazu v jednom dni, aby se zachoval v úložišti dotazů. TOTAL_COMPILE_CPU_TIME_MS je typ int.
TOTAL_EXECUTION_CPU_TIME_MS = celé číslo
Definuje celkovou uplynulou dobu výkonu procesoru používanou dotazem během období vyhodnocení. Výchozí hodnota je 100, což znamená, že pro výchozí prahovou hodnotu zastaralé zásady zachytávání musí mít dotaz celkem alespoň 100 ms času stráveného během provádění v jednom dni, aby se zachoval v úložišti dotazů. TOTAL_EXECUTION_CPU_TIME_MS je typ int.
< > recovery_option ::=
Platí pro: SQL Server
Řídí možnosti obnovení databáze a kontrolu vstupně-výstupních chyb disku.
FULL
Poskytuje úplné obnovení po selhání média pomocí záloh transakčních protokolů. Pokud je datový soubor poškozen, obnovení médií může obnovit všechny potvrzené transakce. Pro více informací viz Modely obnovy.
BULK_LOGGED
Poskytuje obnovení po selhání média. Kombinuje nejlepší výkon a minimální využití prostoru protokolu pro určité rozsáhlé nebo hromadné operace. Informace o tom, jaké operace lze minimální protokolovat, naleznete v tématu Transakční protokol. V rámci modelu obnovení BULK_LOGGED je protokolování pro tyto operace minimální. Pro více informací viz Modely obnovy.
SIMPLE
K dispozici je jednoduchá strategie zálohování, která používá minimální prostor protokolu. Prostor protokolu se dá automaticky znovu použít, pokud už není nutný pro obnovení serveru. Pro více informací viz Modely obnovy.
Important
Jednoduchý model obnovení je jednodušší spravovat než ostatní dva modely, ale na úkor větší ztráty dat expozice v případě poškození datového souboru. Všechny změny od poslední databáze nebo rozdílového zálohování databáze se ztratí a je nutné je znovu zadat ručně.
Výchozí model obnovení je určen modelem obnovení systémové databáze model. Pro více informací o výběru vhodného modelu zotavení viz Modely zotavení.
Stav této možnosti můžete zjistit prohlédnutím sloupců recovery_model a recovery_model_desc v zobrazení katalogu sys.databases . Stav lze také zjistit zkoumáním Recovery vlastnosti funkce DATABASEPROPERTYEX .
TORN_PAGE_DETECTION { ON | VYPNUTO }
ON
Databázový stroj může zjistit neúplné stránky.
OFF
Databázový stroj nedetekuje neúplné stránky.
Important
Struktura syntaxe TORN_PAGE_DETECTION ON | Funkce OFF bude odebrána v budoucí verzi SQL Serveru. Vyhněte se použití této struktury syntaxe v nové vývojové práci a naplánujte úpravu aplikací, které aktuálně používají strukturu syntaxe. Místo toho použijte možnost PAGE_VERIFY.
PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NIKDO }
Zjišťuje poškozené databázové stránky způsobené chybami vstupně-výstupní cesty disku. Chyby vstupně-výstupní cesty disku můžou být příčinou problémů s poškozením databáze. Tyto chyby jsou nejčastěji způsobeny selháním napájení nebo selháním hardwaru disku, ke kterým dochází v době zápisu stránky na disk.
CHECKSUM
Vypočítá kontrolní součet nad obsahem celé stránky a uloží hodnotu v záhlaví stránky při zápisu stránky na disk. Při čtení stránky z disku se kontrolní součet přepočítá a porovná s hodnotou kontrolního součtu uloženou v záhlaví stránky. Pokud se hodnoty neshodovaly, zobrazí se chybová zpráva 824 (označující selhání kontrolního součtu) do protokolu chyb SQL Serveru i do protokolu událostí systému Windows. Selhání kontrolního součtu značí problém s vstupně-výstupní cestou. K určení původní příčiny je potřeba prozkoumat hardware, ovladače firmwaru, BIOS, ovladače filtru (například antivirový software) a další součásti vstupně-výstupní cesty.
TORN_PAGE_DETECTION
Uloží určitý 2bitový vzor pro každý 512bajtový sektor na stránce databáze 8 kilobajtů (KB) a uloží do záhlaví stránky databáze při zápisu stránky na disk. Při čtení stránky z disku se bity roztrhané v záhlaví stránky porovnávají se skutečnými informacemi o sektorech stránek.
Chybějící hodnoty označují, že se na disk zapisovala jenom část stránky. V takovém případě je chybová zpráva 824 (označující chybu stránky roztrhané stránky) hlášena do protokolu chyb SQL Serveru i do protokolu událostí Systému Windows. Stránky s roztrženými soubory se obvykle detekují obnovením databáze, pokud se jedná o skutečně neúplný zápis stránky. Jiné selhání vstupně-výstupní cesty ale můžou kdykoli způsobit roztrženou stránku.
NONE
Zápisy na stránku databáze nevygenerují hodnotu CHECKSUM ani TORN_PAGE_DETECTION. SQL Server během čtení neověřuje kontrolní součet ani stránku s roztrženou stránkou, a to ani v případě, že je v záhlaví stránky hodnota CHECKSUM nebo TORN_PAGE_DETECTION.
Při použití možnosti PAGE_VERIFY zvažte následující důležité body:
Výchozí je CHECKSUM.
Při upgradu uživatelské nebo systémové databáze na SQL Server 2005 (9.x) nebo novější verze se hodnota PAGE_VERIFY (NONE nebo TORN_PAGE_DETECTION) nezmění. Doporučujeme změnit kontrolní součet.
Note
V dřívějších verzích SQL Serveru je možnost PAGE_VERIFY databáze nastavená na NONE pro
tempdbdatabázi a nelze ji upravit. Počínaje sql Serverem 2008 (10.0.x) je výchozí hodnota pro databázitempdbCHECKSUM pro nové instalace SQL Serveru. Při upgradu instalačního SQL Serveru zůstane výchozí hodnota NONE. Možnost lze upravit. Doporučujeme použít funkci CHECKSUM protempdbdatabázi.TORN_PAGE_DETECTION může používat méně prostředků, ale poskytuje minimální podmnožinu ochrany CHECKSUM.
PAGE_VERIFY lze nastavit bez přecházení databáze do offline režimu, uzamčení databáze nebo jiného zajištění souběžnosti databáze.
FUNKCE CHECKSUM se vzájemně vylučují TORN_PAGE_DETECTION. Obě možnosti nejde povolit současně.
Když se zjistí selhání stránky nebo kontrolního součtu, můžete obnovit obnovením dat nebo potenciálním opětovným sestavením indexu, pokud je selhání omezeno pouze na stránky indexu. Pokud dojde k selhání kontrolního součtu, abyste zjistili typ ovlivněné stránky databáze nebo stránek, spusťte DBCC CHECKDB. Pro více informací o možnostech obnovení viz OBNOVITELNÉ argumenty. I když obnovení dat vyřeší problém s poškozením dat, měla by být co nejdříve diagnostikována a opravena původní příčina (například selhání hardwaru disku), aby se zabránilo pokračování chyb.
SQL Server opakuje všechny chyby čtení, které selže s kontrolním součtem, stránkou roztrhané nebo jinou vstupně-výstupní chybou čtyřikrát. Pokud je čtení úspěšné v některém z pokusů o opakování, zpráva se zapíše do protokolu chyb. Příkaz, který aktivoval čtení, pokračuje. Příkaz selže s chybovou zprávou 824, pokud pokusy o opakování selžou.
Další informace o chybových zprávách 823, 824 a 825 najdete v tématech:
- Řešení chyby MSSQLSERVER 823
- Řešení potíží s chybou MSSQLSERVER 824
- Řešení potíží s chybou MSSQLSERVER 825 (opakování čtení).
Aktuální nastavení této možnosti lze určit zkoumáním sloupce page_verify_option v katalogu sys.databases nebo IsTornPageDetectionEnabled vlastnosti funkce DATABASEPROPERTYEX .
< > remote_data_archive_option ::=
Platí na: SQL Server (počínaje SQL Server 2016 (13.x))
Povolí nebo zakáže funkci Stretch Database pro databázi. Další informace najdete v tématu Stretch Database.
Important
Funkce Stretch Database je v SQL Serveru 2022 (16.x) a Azure SQL Database zastaralá. Tato funkce bude odebrána v budoucí verzi databázového stroje. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
REMOTE_DATA_ARCHIVE = { ON ( SERVER = <server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ON | OFF } ) | PRYČ
ON
Povolí funkci Stretch Database pro databázi. Další informace, včetně dalších požadavků, najdete v tématu Povolení funkce Stretch Database pro databázi.
K povolení funkce Stretch Database pro tabulku vyžaduje
db_owneroprávnění. Vyžaduje oprávněnídb_owneraCONTROL DATABASEk povolení funkce Stretch Database pro databázi.SERVER = <server_name>
Určuje adresu serveru Azure. Zahrňte
.database.windows.netčást názvu. NapříkladMyStretchDatabaseServer.database.windows.net.KVALIFIKACE = <db_scoped_credential_name>
Určuje přihlašovací údaje v oboru databáze, které instance SQL Serveru používá pro připojení k serveru Azure. Před spuštěním tohoto příkazu se ujistěte, že přihlašovací údaje existují. Další informace naleznete v tématu CREATE DATABASE SCOPED CREDENTIAL.
FEDERATED_SERVICE_ACCOUNT = { ON | VYPNUTO }
Účet federované služby můžete pro místní SQL Server použít ke komunikaci se vzdáleným serverem Azure, pokud jsou splněné následující podmínky.
- Účet služby, pod kterým je spuštěná instance SQL Serveru, je účet domény.
- Účet domény patří do domény, jejíž služba Active Directory je federovaná s ID Microsoft Entra.
- Vzdálený server Azure je nakonfigurovaný tak, aby podporoval ověřování Microsoft Entra.
- Účet služby, pod kterým je spuštěná instance SQL Serveru, musí být nakonfigurovaný jako účet
dbmanagernebosysadminna vzdáleném serveru Azure.
Pokud zadáte, že účet federované služby je zapnutý, nemůžete také zadat argument CREDENTIAL. Pokud zadáte HODNOTU OFF, zadejte argument CREDENTIAL.
OFF
Zakáže funkci Stretch Database pro databázi. Další informace najdete v tématu Zakázání funkce Stretch Database a vrácení vzdálených dat.
Funkci Stretch Database můžete zakázat pouze po tom, co databáze již neobsahuje žádné tabulky, které jsou povoleny pro funkci Stretch Database. Po zakázání funkce Stretch Database se migrace dat zastaví. Výsledky dotazu už také neobsahují výsledky ze vzdálených tabulek.
Zakázání funkce Stretch Database neodebere vzdálenou databázi. Pokud chcete vzdálenou databázi odstranit, odstraňte ji pomocí webu Azure Portal.
PERSISTENT_LOG_BUFFER
platí pro: SQL Server 2017 (14.x) a novější.
Pokud je tato možnost zadaná, vyrovnávací paměť transakčního protokolu se vytvoří na svazku umístěném na diskovém zařízení zálohovaného pamětí třídy úložiště (NVDIMM-N nevolatilním úložištěm), označované také jako trvalá vyrovnávací paměť protokolu. Další informace naleznete v tématu Akcelerace latence potvrzení transakce pomocí paměti třídy úložiště a Přidat trvalou vyrovnávací paměť protokolu do databáze.
< > service_broker_option ::=
Platí pro: SQL Server
Řídí následující možnosti služby Service Broker: povolí nebo zakáže doručování zpráv, nastaví nový identifikátor služby Service Broker nebo nastaví priority konverzací na ZAPNUTO nebo VYPNUTO.
ENABLE_BROKER
Určuje, že je pro zadanou databázi povolená služba Service Broker. Je zahájeno doručování zpráv a příznak is_broker_enabled je nastaven na true v katalogu sys.databases . Databáze uchovává existující identifikátor služby Service Broker. Službu Service Broker není možné povolit, pokud je databáze instančním objektem v konfiguraci zrcadlení databáze.
Note
ENABLE_BROKER vyžaduje výhradní zámek databáze. Pokud ostatní relace mají v databázi uzamčené prostředky, ENABLE_BROKER počká, až ostatní relace uvolní jejich zámky. Pokud chcete povolit službu Service Broker v uživatelské databázi, před spuštěním příkazu ALTER DATABASE SET ENABLE_BROKER se ujistěte, že databáze nepoužívá žádné jiné relace, například vložením databáze do režimu jednoho uživatele. Chcete-li povolit službu Service Broker v databázi msdb, nejprve zastavte agenta SQL Serveru, aby služba Service Broker mohla získat potřebný zámek.
DISABLE_BROKER
Určuje, že služba Service Broker je pro zadanou databázi zakázaná. Doručení zpráv je zastaveno a příznak is_broker_enabled je nastaven na false v katalogu sys.databases . Databáze uchovává existující identifikátor služby Service Broker.
NEW_BROKER
Určuje, že databáze by měla obdržet nový identifikátor zprostředkovatele. Databáze funguje jako nový zprostředkovatel služeb. Všechny existující konverzace v databázi se proto okamžitě odeberou, aniž by se vytvářely koncové dialogové zprávy. Všechny trasy, které odkazují na starý identifikátor služby Service Broker, musí být znovu vytvořeny s novým identifikátorem.
ERROR_BROKER_CONVERSATIONS
Určuje, že je povolené doručování zpráv služby Service Broker. Toto nastavení zachovává existující identifikátor služby Service Broker pro databázi. Service Broker ukončí všechny konverzace v databázi chybou. Toto nastavení umožňuje aplikacím spouštět pravidelné čištění stávajících konverzací.
HONOR_BROKER_PRIORITY { ON | VYPNUTO }
ON
Operace odesílání berou v úvahu úrovně priority, které jsou přiřazeny ke konverzacím. Zprávy z konverzací s vysokou prioritou se odesílají před zprávami z konverzací, které mají přiřazené úrovně s nízkou prioritou.
OFF
Operace odesílání se spouštějí, jako by všechny konverzace měly výchozí úroveň priority.
Změny možnosti HONOR_BROKER_PRIORITY se projeví okamžitě u nových dialogových oken nebo dialogových oken, které nemají žádné zprávy čekající na odeslání. Dialogy se zprávami, které se mají odeslat při spuštění příkazu ALTER DATABASE, nezabíjejí nové nastavení, dokud se neodesílají některé zprávy dialogového okna. Doba, po kterou můžou všechna dialogová okna začít používat nové nastavení, se může výrazně lišit.
Aktuální nastavení této vlastnosti je uvedeno ve sloupci is_broker_priority_honored v katalogu sys.databases .
< > snapshot_option ::=
Vypočítá úroveň izolace transakce.
ALLOW_SNAPSHOT_ISOLATION { ON | VYPNUTO }
ON
Povolí možnost Snímek na úrovni databáze. Když je povolená, příkazy DML začnou generovat verze řádků, i když žádná transakce nepoužívá izolaci snímků. Po povolení této možnosti mohou transakce zadat úroveň izolace transakce SNAPSHOT. Když transakce běží na úrovni izolace SNAPSHOT, všechny příkazy uvidí snímek dat, protože existuje na začátku transakce. Pokud transakce spuštěná na úrovni izolace SNAPSHOT přistupuje k datům ve více databázích, musí být buď ALLOW_SNAPSHOT_ISOLATION nastavena na ON ve všech databázích, nebo každý příkaz v transakci musí používat zamykání nápovědy pro všechny odkazy v klauzuli FROM na tabulku v databázi, kde ALLOW_SNAPSHOT_ISOLATION je vypnutá.
OFF
Vypne možnost Snímek na úrovni databáze. Transakce nemohou určit úroveň izolace transakce SNAPSHOT.
Když nastavíte ALLOW_SNAPSHOT_ISOLATION na nový stav (od ZAPNUTO do VYPNUTO nebo VYPNUTO na ZAPNUTO), funkce ALTER DATABASE nevrátí řízení volajícímu, dokud nebudou potvrzeny všechny existující transakce v databázi. Pokud je databáze již ve stavu zadaném v příkazu ALTER DATABASE, vrátí se ovládací prvek volajícímu okamžitě. Pokud se příkaz ALTER DATABASE nevrátí rychle, použijte sys.dm_tran_active_snapshot_database_transactions k ověření, zda existují dlouhodobé transakce. Pokud je příkaz ALTER DATABASE zrušen, databáze zůstane ve stavu, ve který byla spuštěna funkce ALTER DATABASE. Zobrazení katalogu sys.databases ukazuje stav transakcí s izolací snímků v databázi. Pokud snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, příkaz ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF pozastaví šest sekund a opakuje operaci.
Pokud je databáze offline, nemůžete změnit stav ALLOW_SNAPSHOT_ISOLATION.
Pokud nastavíte ALLOW_SNAPSHOT_ISOLATION v databázi READ_ONLY, nastavení se zachová, pokud je databáze později nastavená na READ_WRITE.
Můžete změnit nastavení ALLOW_SNAPSHOT_ISOLATION pro databáze master, model, msdba tempdb. Nastavení se uchovává při každém zastavení instance databázového stroje a restartování, pokud změníte nastavení pro tempdb. Pokud změníte nastavení pro model, toto nastavení se stane výchozím nastavením pro všechny nově vytvořené databáze s výjimkou tempdb.
Možnost je ve výchozím nastavení zapnutá pro databáze master a msdb.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce snapshot_isolation_state v katalogu sys.databases .
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
ON
Povolí možnost Read-Committed Snímek na úrovni databáze. Když je povolená, příkazy DML začnou generovat verze řádků, i když žádná transakce nepoužívá izolaci snímků. Jakmile je tato možnost povolená, transakce, které určují úroveň izolace potvrzené čtení, místo uzamčení používají správu verzí řádků. Všechny příkazy vidí snímek dat, protože existuje na začátku příkazu, když transakce běží na úrovni izolace READ COMMITTED.
OFF
Vypne možnost Read-Committed Snímek na úrovni databáze. Transakce určující úroveň izolace READ COMMITTED používají uzamčení.
Pokud chcete nastavit READ_COMMITTED_SNAPSHOT ZAPNUTO nebo VYPNUTO, nesmí existovat žádná aktivní připojení k databázi s výjimkou připojení spuštěného příkazem ALTER DATABASE. Databáze ale nemusí být v režimu jednoho uživatele. Pokud je databáze offline, nemůžete změnit stav této možnosti.
Pokud nastavíte READ_COMMITTED_SNAPSHOT v databázi READ_ONLY, nastavení se zachová, když je databáze později nastavená na READ_WRITE.
READ_COMMITTED_SNAPSHOT nelze zapnout pro systémové databáze master, tempdbnebo msdb. Pokud změníte nastavení pro model, toto nastavení se stane výchozím nastavením pro všechny nově vytvořené databáze s výjimkou tempdb.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_read_committed_snapshot_on v katalogu sys.databases .
Warning
Při vytvoření tabulky s DURABILITY = SCHEMA_ONLYa READ_COMMITTED_SNAPSHOT se následně změní pomocí ALTER DATABASE, data v tabulce budou ztracena.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | VYPNUTO }
Platí na: SQL Server (počínaje SQL Server 2014 (12.x))
ON
Pokud je úroveň izolace transakce nastavena na libovolnou úroveň izolace nižší než SNAPSHOT, všechny interpretované Transact-SQL operace s tabulkami optimalizovanými pro paměť se spouští pod izolací SNAPSHOT. Příklady úrovní izolace nižší než snímky jsou READ COMMITTED nebo READ UNCOMMITTED. Tyto operace se spouští, jestli je úroveň izolace transakce nastavena explicitně na úrovni relace, nebo se implicitně používá výchozí hodnota.
OFF
Nezvyšuje úroveň izolace transakcí pro interpretované operace Transact-SQL v tabulkách optimalizovaných pro paměť.
Pokud je databáze offline, nemůžete změnit stav MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT.
Výchozí možnost je VYPNUTÁ.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_memory_optimized_elevate_to_snapshot_on v katalogu sys.databases .
< > sql_option ::=
Řídí možnosti dodržování předpisů ANSI na úrovni databáze.
ANSI_NULL_DEFAULT { ON | VYPNUTO }
Určuje výchozí hodnotu, HODNOTU NULL nebo NOT NULL sloupce nebo uživatelem definovaný typ CLR, pro který není explicitně definována v příkazech CREATE TABLE nebo ALTER TABLE. Sloupce definované s omezeními se řídí pravidly omezení bez ohledu na to, co toto nastavení může být.
ON
Výchozí hodnota nedefinovaného sloupce je NULL.
OFF
Výchozí hodnota nedefinovaného sloupce není NULL.
Nastavení na úrovni připojení, která jsou nastavená pomocí příkazu SET, přepíší výchozí nastavení na úrovni databáze pro ANSI_NULL_DEFAULT. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_NULL_DEFAULT zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_NULL_DFLT_ON.
V případě kompatibility ANSI nastavení možnosti databáze ANSI_NULL_DEFAULT na HODNOTU ON změní výchozí hodnotu databáze na HODNOTU NULL.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_null_default_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiNullDefault vlastnosti funkce DATABASEPROPERTYEX .
ANSI_NULLS { ON | VYPNUTO }
ON
Všechna porovnání s hodnotou null se vyhodnotí jako UNKNOWN.
OFF
Porovnání hodnot, které nejsou unicode, na hodnotu null se vyhodnotí jako PRAVDA, pokud obě hodnoty mají hodnotu NULL.
Important
V budoucí verzi SQL Serveru bude ANSI_NULLS vždy zapnuté a všechny aplikace, které explicitně nastavily možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro ANSI_NULLS. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_NULLS zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_NULLS.
Important
NASTAVENÍ ANSI_NULLS musí být také při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_nulls_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiNullsEnabled vlastnosti funkce DATABASEPROPERTYEX .
ANSI_PADDING { ON | VYPNUTO }
ON
Řetězce jsou před převodem vycpané na stejnou délku. Také je vycpaný na stejnou délku před vložením do datového typu varchar nebo nvarchar .
OFF
Vkládá prázdné znaky do sloupců varchar nebo nvarchar . Také zanechává nuly v binárních hodnotách, které jsou vloženy do varbinárních sloupců. Hodnoty nejsou vycpané na délku sloupce.
Pokud je toto nastavení vypnuté, ovlivní pouze definici nových sloupců.
Important
V budoucí verzi SQL Serveru budou ANSI_PADDING vždy zapnuté a všechny aplikace, které explicitně nastaví možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Doporučujeme, abyste vždy nastavili ANSI_PADDING na ZAPNUTO. ANSI_PADDING musí být zapnuté při vytváření nebo manipulaci s indexy ve vypočítaných sloupcích nebo indexovaných zobrazeních.
sloupce char(n) a binární(n), které umožňují nulové hodnoty, jsou vyplněny na délku sloupce, když je ANSI_PADDING nastaveno na ON. Koncové prázdné hodnoty a nuly se oříznou, když je ANSI_PADDING vypnutý. sloupce char(n) a binární(n), které neumožňují null, jsou vždy vyplněny na délku sloupce.
Nastavení na úrovni připojení nastavená pomocí příkazu SET přepíší výchozí nastavení na úrovni databáze pro ANSI_PADDING. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_PADDING zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Další informace naleznete v tématu SET ANSI_PADDING.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_padding_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiPaddingEnabled vlastnosti funkce DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | VYPNUTO }
ON
Chyby nebo upozornění se vydávají v případě, že dojde k podmínkám, jako je dělení nulou. Chyby a upozornění se vydávají také v případech, kdy se hodnoty null zobrazují v agregačních funkcích.
OFF
Při výskytu podmínek, jako je například dělení nulou, se nevrací žádná upozornění a hodnoty null se vrátí.
Important
Nastavení ANSI_WARNINGS musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro ANSI_WARNINGS. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_WARNINGS zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_WARNINGS.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_warnings_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiWarningsEnabled vlastnosti funkce DATABASEPROPERTYEX .
ARITHABORT { ON | VYPNUTO }
ON
Dotaz se ukončí, když během provádění dotazu dojde k chybě přetečení nebo dělení nulou.
OFF
Při výskytu jedné z těchto chyb se zobrazí zpráva s upozorněním. Dotaz, dávka nebo transakce pokračuje v procesu, jako kdyby nedošlo k žádné chybě, i když se zobrazí upozornění.
Important
Nastavení ARITHABORT musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_arithabort_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsArithmeticAbortEnabled vlastnosti funkce DATABASEPROPERTYEX .
COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | VYPNUTO }
ON
Výsledek operace zřetězení je NULL, pokud je oba operandy NULL. Například zřetězení řetězce znaků "This is" a NULL vrátí hodnotu NULL místo hodnoty "This is".
OFF
Hodnota null je považována za prázdný řetězec znaků.
Important
CONCAT_NULL_YIELDS_NULL musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastavena na hodnotu ZAPNUTO.
V nadcházejících verzích SQL Serveru budou CONCAT_NULL_YIELDS_NULL vždy zapnuté a všechny aplikace, které explicitně nastavily možnost VYPNUTO, aktivují chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro CONCAT_NULL_YIELDS_NULL. Ve výchozím nastavení vydávají klienti ODBC a OLE DB nastavení příkazu SET na úrovni připojení CONCAT_NULL_YIELDS_NULL pro relaci při připojování k instanci SQL Serveru. Další informace naleznete v tématu SET CONCAT_NULL_YIELDS_NULL.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_concat_null_yields_null_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsNullConcat vlastnosti funkce DATABASEPROPERTYEX .
NUMERIC_ROUNDABORT { ON | VYPNUTO }
ON
Při ztrátě přesnosti ve výrazu se vygeneruje chyba.
OFF
Ztráta přesnosti nevygeneruje chybovou zprávu a výsledek se zaokrouhlí na přesnost sloupce nebo proměnné, do které se výsledek uloží.
Important
NUMERIC_ROUNDABORT musí být při vytváření nebo změnách indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastavena na hodnotu VYPNUTO.
Stav této možnosti můžete určit ve sloupci is_numeric_roundabort_on v zobrazení katalogu sys.databases . Stav lze také zjistit zkoumáním IsNumericRoundAbortEnabled vlastnosti funkce DATABASEPROPERTYEX .
QUOTED_IDENTIFIER { ON | VYPNUTO }
ON
Dvojité uvozovky lze použít k uzavření identifikátorů s oddělovači.
Všechny řetězce oddělené dvojitými uvozovkami se interpretují jako identifikátory objektů. Identifikátory uvozových čísel nemusí dodržovat pravidla Transact-SQL identifikátorů. Můžou to být klíčová slova a můžou obsahovat znaky, které nejsou povolené v identifikátorech Transact-SQL. Pokud je uvozovka (
") součástí identifikátoru, může být reprezentována dvěma uvozovkami ("").OFF
Identifikátory nemohou být v uvozovkách a musí dodržovat všechna pravidla Transact-SQL identifikátorů. Literály můžou být oddělené jednoduchými nebo dvojitými uvozovkami.
SQL Server také umožňuje oddělovat identifikátory hranatými závorkami ([ a ]). Identifikátory v hranatých závorkách je možné vždy použít bez ohledu na to, co je nastavení QUOTED_IDENTIFIER. Další informace naleznete v tématu Identifikátory databáze.
Při vytvoření tabulky je možnost QUOTED IDENTIFIER vždy uložena jako ON v metadatech tabulky. Tato možnost se uloží i v případě, že je tato možnost při vytváření tabulky nastavená na VYPNUTO.
Nastavení na úrovni připojení nastavená pomocí příkazu SET přepíší výchozí nastavení databáze pro QUOTED_IDENTIFIER. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení QUOTED_IDENTIFIER zapnuto. Klienti spustí příkaz při připojení k instanci SQL Serveru. Další informace naleznete v tématu SET QUOTED_IDENTIFIER.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_quoted_identifier_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsQuotedIdentifiersEnabled vlastnosti funkce DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | VYPNUTO }
ON
Je povoleno rekurzivní aktivaci triggerů AFTER.
OFF
Stav této možnosti můžete zjistit prozkoumáním sloupce
is_recursive_triggers_onv katalogu sys.databases . Stav lze také zjistit zkoumánímIsRecursiveTriggersEnabledvlastnosti funkce DATABASEPROPERTYEX .
Note
Pokud je RECURSIVE_TRIGGERS nastavená na VYPNUTO, zabrání se pouze přímá rekurze. Pokud chcete zakázat nepřímou rekurzi, musíte také nastavit možnost serveru vnořených triggerů na hodnotu 0.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_recursive_triggers_on v katalogu sys.databases nebo IsRecursiveTriggersEnabled vlastnosti funkce DATABASEPROPERTYEX .
< > suspend_for_snapshot_backup ::=
Platí pro: SQL Server (počínaje SQL Serverem 2022 (16.x))
Pozastaví databáze pro zálohování snímků. Může definovat skupinu jedné nebo více databází. Může určit režim pouze kopírování.
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | VYPNUTO }
Pozastaví nebo pozastaví databáze. Výchozí vypnuto.
MODE = COPY_ONLY
Optional. Používá COPY_ONLY režim.
< > target_recovery_time_option ::=
Platí na: SQL Server (počínaje SQL Server 2012 (11.x))
Určuje frekvenci nepřímých kontrolních bodů pro jednotlivé databáze. Od SQL Server 2016 (13.x) je výchozí hodnota pro nové databáze 1 minuta, což znamená, že databáze používá nepřímé kontrolní body. Ve starších verzích je výchozí hodnota 0, což značí, že databáze používá automatické kontrolní body, jejichž frekvence závisí na nastavení intervalu obnovení instance serveru. Microsoft doporučuje pro většinu systémů 1 minutu.
TARGET_RECOVERY_TIME = target_recovery_time { SEKUNDY | MINUTY }
target_recovery_time
Určuje maximální mez času obnovení zadané databáze v případě chybového ukončení. target_recovery_time je typ int.
SECONDS
Označuje, že target_recovery_time je vyjádřeno jako počet sekund.
MINUTES
Označuje, že target_recovery_time je vyjádřeno jako počet minut.
Pro více informací o nepřímých kontrolních stanovištích viz Databázové kontrolní body.
OPTIMIZED_LOCKING { ON | VYPNUTO }
Platí na: SQL Server (počínaje SQL Server 2025 (17.x))
Umožňuje optimalizované zamykaní. Optimalizované uzamčení je ve výchozím nastavení nastaveno na VYPNUTO.
Pokud chcete nastavit OPTIMIZED_LOCKING ZAPNUTO nebo VYPNUTO, nesmí existovat žádná aktivní připojení k databázi s výjimkou připojení, které spouští příkaz ALTER DATABASE. Databáze ale nemusí být v režimu jednoho uživatele. Stav této možnosti nemůžete změnit, pokud databáze není ONLINE.
< ukončení >WITH::=
Určuje, kdy se mají vrátit neúplné transakce při přechodu databáze z jednoho stavu do druhého. Pokud je klauzule ukončení vynechána, příkaz ALTER DATABASE počká na neomezenou dobu, pokud je v databázi nějaký zámek. Lze zadat pouze jednu klauzuli ukončení a řídí se klauzulí SET.
Note
Ne všechny možnosti databáze používají klauzuli< ukončení >WITH. Pro více informací viz tabulka v sekci "Poznámky" v sekci "Poznámky".
ROLLBACK PO celém čísle [SEKUNDY] | OKAMŽITÉ VRÁCENÍ
Určuje, jestli se má vrátit zpět po zadaném počtu sekund nebo okamžitě.
NO_WAIT
Určuje, že požadavek selže, pokud požadovaný stav databáze nebo změna možnosti nelze dokončit okamžitě. Dokončení okamžitě znamená, že nečeká na transakce, které se potvrdí nebo vrátí zpět samy.
Nastavení možností
Pro získání aktuálních nastavení databázových možností použijte katalogový pohled sys.databases nebo DATABASEPROPERTYEX
Po nastavení možnosti databáze se nové nastavení projeví okamžitě.
Výchozí hodnoty pro libovolnou z možností databáze pro všechny nově vytvořené databáze můžete změnit. Uděláte to tak, že v databázi model změníte příslušnou možnost databáze.
Ne všechny možnosti databáze používají klauzuli <ukončení> nebo je možné ji zadat v kombinaci s jinými možnostmi. Následující tabulka uvádí tyto možnosti a jejich možnosti a stav ukončení.
| Kategorie opcí | Lze zadat s dalšími možnostmi. | Může použít klauzuli< ukončení >WITH. |
|---|---|---|
| <db_state_option> | Yes | Yes |
| <db_user_access_option> | Yes | Yes |
| <db_update_option> | Yes | Yes |
| <delayed_durability_option> | Yes | Yes |
| <external_access_option> | Yes | No |
| <cursor_option> | Yes | No |
| <auto_option> | Yes | No |
| <sql_option> | Yes | No |
| <recovery_option> | Yes | No |
| <target_recovery_time_option> | No | Yes |
| <database_mirroring_option> | No | No |
| ALLOW_SNAPSHOT_ISOLATION | No | No |
| READ_COMMITTED_SNAPSHOT | No | Yes |
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Yes | Yes |
| <service_broker_option> | Yes | No |
| DATE_CORRELATION_OPTIMIZATION | Yes | Yes |
| <parameterization_option> | Yes | Yes |
| <change_tracking_option> | Yes | Yes |
| <db_encryption_option> | Yes | No |
| <accelerated_database_recovery> | No | Yes |
| <optimized_locking> | No | Yes |
Mezipaměť plánu pro instanci SQL Serveru se vymaže nastavením jedné z následujících možností:
OFFLINE
ONLINE
MODIFY_NAME
COLLATE
READ_ONLY
READ_WRITE
ZMĚNA VÝCHOZÍHO NASTAVENÍ FILEGROUP
ÚPRAVA READ_WRITE FILEGROUP
ÚPRAVA READ_ONLY FILEGROUP
Mezipaměť plánu se také vyprázdní v následujících scénářích.
- Databáze má možnost AUTO_CLOSE databáze nastavenou na zapnuto. Pokud žádné odkazy na připojení uživatele nebo nepoužívá databázi, úloha na pozadí se pokusí databázi zavřít a vypnout automaticky.
- Na databázi s výchozími možnostmi spustíte několik dotazů. Databáze se pak zahodí.
- Snímek databáze zdrojové databáze se zahodí.
- Úspěšně znovu sestavíte transakční protokol pro databázi.
- Obnovíte zálohu databáze.
- Odpojte databázi.
Vymazání mezipaměti plánu způsobí rekompilace všech následných plánů spuštění a může způsobit náhlé dočasné snížení výkonu dotazů. Pro každé vymazané úložiště mezipaměti v mezipaměti plánu obsahuje protokol chyb SYSTÉMU SQL Server následující informační zprávu: 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. Tato zpráva se protokoluje každých pět minut, dokud se mezipaměť vyprázdní v daném časovém intervalu.
Examples
A. Nastavení možností v databázi
Následující příklad nastaví možnosti ověření modelu obnovení a datové stránky pro ukázkovou databázi AdventureWorks2025.
USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO
B. Nastavení databáze na READ_ONLY
Změna stavu databáze nebo skupiny souborů na READ_ONLY nebo READ_WRITE vyžaduje výhradní přístup k databázi. Následující příklad nastaví databázi na SINGLE_USER režim získat výhradní přístup. Příklad pak nastaví stav AdventureWorks2025 databáze na READ_ONLY a vrátí přístup k databázi všem uživatelům.
Note
Tento příklad používá možnost ukončení WITH ROLLBACK IMMEDIATE v prvním příkazu ALTER DATABASE. Všechny neúplné transakce se vrátí zpět a všechna další připojení k databázi AdventureWorks2025 se okamžitě odpojí.
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. Povolení izolace snímků v databázi
Následující příklad umožňuje architekturu izolace snímků pro databázi AdventureWorks2025.
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
Sada výsledků ukazuje, že je povolená architektura izolace snímků.
| name | snapshot_isolation_state | description |
|---|---|---|
| [database_name] | 1 | ON |
D. Povolení, úprava nebo zakázání sledování změn
Následující příklad umožňuje sledování změn pro databázi AdventureWorks2025 a nastaví dobu uchovávání na 2 dnů.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Následující příklad ukazuje, jak změnit dobu uchovávání na 3 dnů.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Následující příklad ukazuje, jak zakázat sledování změn pro AdventureWorks2025 databázi.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Povolení úložiště dotazů
Platí na: SQL Server (počínaje SQL Server 2016 (13.x))
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
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. Povolení úložiště dotazů se statistikami čekání
Platí na: SQL Server (počínaje SQL Server 2017 (14.x))
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
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. Povolení úložiště dotazů s vlastními možnostmi zásad zachycení
Platí na: SQL Server (počínaje SQL Server 2019 (15.x))
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
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
)
);
Související obsah
- Statistics
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- úroveň kompatibility ALTER DATABASE
- Zrcadlení databáze ALTER DATABASE
- ALTER DATABASE SET HADR
- Vytvořit databázi
- povolení a zakázání funkce Change Tracking (SQL Server)
-
DROP DATABASE (Transact-SQL) - NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ (Transact-SQL)
- sp_configure
- osvědčené postupy pro monitorování úloh pomocí úložiště dotazů
* SQL databáze *
Azure Synapse
analýzy
Databáze SQL
Úrovně kompatibility jsou SET možnosti, ale jsou popsány v úrovni kompatibility ALTER DATABASE.
Note
Mnoho možností databázových sad lze nastavit pro aktuální relaci pomocí příkazů SET a často je konfigurují aplikace při připojení. Možnosti sady na úrovni relace přepíší hodnoty ALTER DATABASE SET. Možnosti databáze popsané v následujících částech jsou hodnoty, které je možné nastavit pro relace, které explicitně neposkytují další nastavené hodnoty možností.
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 }
Arguments
database_name
Název databáze, která se má upravit.
CURRENT
CURRENTspustí akci v aktuální databázi.CURRENTnejsou podporované pro všechny možnosti ve všech kontextech. PokudCURRENTselže, zadejte název databáze.
< > auto_option ::=
Řídí automatické možnosti.
AUTO_CREATE_STATISTICS { ON | VYPNUTO }
ON
Optimalizátor dotazů podle potřeby vytváří statistiky pro jednotlivé sloupce v predikátech dotazů, aby se zlepšily plány dotazů a výkon dotazů. Tyto statistiky s jedním sloupcem se vytvoří, když Optimalizátor dotazů zkompiluje dotazy. Statistiky s jedním sloupcem se vytvářejí jenom u sloupců, které ještě nejsou prvním sloupcem existujícího objektu statistiky.
Výchozí hodnota je ZAPNUTÁ. Pro většinu databází doporučujeme použít výchozí nastavení.
OFF
Optimalizátor dotazů při kompilaci dotazů nevytváří statistiky o jednotlivých sloupcích v predikátech dotazů. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_create_stats_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoCreateStatistics vlastnosti funkce DATABASEPROPERTYEX .
Pro více informací viz sekce "Možnosti statistiky" v sekci Statistika.
PŘÍRŮSTKOVÉ = ZAPNUTO | PRYČ
Nastavte AUTO_CREATE_STATISTICS na ZAPNUTO a nastavte PŘÍRŮSTKOVÉ na ZAPNUTO. Toto nastavení vytváří automaticky vytvořené statistiky jako přírůstkové, kdykoli jsou podporovány přírůstkové statistiky. Výchozí hodnota je VYPNUTÁ. Další informace naleznete v tématu VYTVOŘENÍ STATISTIKY.
AUTO_SHRINK { ON | VYPNUTO }
ON
Soubory databáze jsou kandidáty na pravidelné zmenšení. Pokud nemáte konkrétní požadavek, nenastavujte možnost AUTO_SHRINK databáze na hodnotu ZAPNUTO. Další informace naleznete v tématu Zmenšení databáze.
Datové soubory i soubory protokolu se dají automaticky zmenšit. AUTO_SHRINK zmenšuje velikost transakčního protokolu pouze v případě, že nastavíte databázi na JEDNODUCHÝ model obnovení nebo pokud zálohujete protokol. Pokud je tato možnost vypnutá, soubory databáze se při pravidelných kontrolách nevyužitého místa automaticky nezvětšují.
Možnost AUTO_SHRINK způsobí, že se soubory zvětší, když více než 25 procent souboru obsahuje nevyužité místo. Tato možnost způsobí, že se soubor zmenší na jednu ze dvou velikostí. Zmenší se na tu, která je větší:
- Velikost, ve které je 25 procent souboru nevyužité místo
- Velikost souboru při jeho vytvoření
Databázi jen pro čtení nemůžete zmenšit.
OFF
Soubory databáze se při pravidelných kontrolách nevyužitého místa automaticky nezřetěší.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_shrink_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoShrink vlastnosti funkce DATABASEPROPERTYEX .
Note
Možnost AUTO_SHRINK není dostupná v databázi s omezením.
AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
ON
Určuje, že optimalizátor dotazů aktualizuje statistiky, když je používá dotaz a kdy může být zastaralý. Statistiky se po vložení, aktualizaci, odstranění nebo sloučení změní distribuci dat v tabulce nebo indexovém zobrazení. Optimalizátor dotazů určuje, kdy statistiky můžou být zastaralé, počítáním počtu úprav dat od poslední aktualizace statistiky a porovnáním počtu úprav s prahovou hodnotou. Prahová hodnota je založená na počtu řádků v tabulce nebo indexovaném zobrazení.
Optimalizátor dotazů před kompilací dotazu zkontroluje zastaralé statistiky a spustí plán dotazů uložený v mezipaměti. Optimalizátor dotazů používá sloupce, tabulky a indexovaná zobrazení v predikáte dotazu k určení, které statistiky můžou být zastaralé. Optimalizátor dotazů určuje tyto informace před kompilací dotazu. Před spuštěním plánu dotazů v mezipaměti databázový stroj ověří, že plán dotazu odkazuje na up-tostatistiky -date.
Možnost AUTO_UPDATE_STATISTICS se vztahuje na statistiky vytvořené pro indexy, jednosloupcové v predikátech dotazů a statistiky vytvořené pomocí příkazu CREATE STATISTICS. Tato možnost platí také pro filtrované statistiky.
Výchozí hodnota je ZAPNUTÁ. Pro většinu databází doporučujeme použít výchozí nastavení.
Pomocí možnosti AUTO_UPDATE_STATISTICS_ASYNC určete, jestli se statistiky aktualizují synchronně nebo asynchronně.
OFF
Určuje, že optimalizátor dotazů neaktualizuje statistiky, když je používá dotaz. Optimalizátor dotazů také neaktualizuje statistiky, když můžou být zastaralé. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Stav této možnosti můžete zjistit prozkoumáním sloupce
is_auto_update_stats_onv katalogu sys.databases . Stav lze také zjistit zkoumánímIsAutoUpdateStatisticsvlastnosti funkce DATABASEPROPERTYEX .Pro více informací viz sekce "Možnosti statistiky" v sekci Statistika.
AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
ON
Určuje, že aktualizace statistik pro možnost AUTO_UPDATE_STATISTICS jsou asynchronní. Optimalizátor dotazů nečeká na dokončení aktualizací statistik, než zkompiluje dotazy.
Nastavení této možnosti na HODNOTU ON nemá žádný vliv, pokud není AUTO_UPDATE_STATISTICS nastavena na hodnotu ZAPNUTO.
Ve výchozím nastavení je možnost AUTO_UPDATE_STATISTICS_ASYNC nastavená na VYPNUTO a optimalizátor dotazů aktualizuje statistiky synchronně.
OFF
Určuje, že aktualizace statistik pro možnost AUTO_UPDATE_STATISTICS jsou synchronní. Optimalizátor dotazů čeká na dokončení aktualizací statistiky, než zkompiluje dotazy.
Nastavení této možnosti na vypnuto nemá žádný vliv, pokud není AUTO_UPDATE_STATISTICS nastavena na zapnuto.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_update_stats_async_on v katalogu sys.databases .
Pro více informací, které popisují, kdy používat synchronní nebo asynchronní aktualizace statistiky, viz sekce "Možnosti statistiky" v sekci Statistika.
< > automatic_tuning_option ::=
Ovládá automatické možnosti ladění. Možnosti pro následující nastavení můžete zobrazit na webu Azure Portal nebo prostřednictvím T-SQL v zobrazení sys.database_automatic_tuning_options.
AUTOMATIC_TUNING = { AUTO | DĚDIT | CUSTOM }
AUTO
Nastavení hodnoty automatického ladění na auto použije výchozí hodnoty konfigurace Azure pro automatické ladění. Na webu Azure Portal se zobrazí možnost zdědit z výchozích hodnot Azure.
INHERIT
Použití hodnoty INHERIT dědí výchozí konfiguraci z nadřazeného serveru. Na webu Azure Portal se zobrazí možnost Dědit z: Server. To je užitečné zejména v případě, že chcete přizpůsobit konfiguraci automatického ladění na nadřazený server a mít všechny databáze na tomto serveru DĚDIT tato vlastní nastavení. Aby dědičnost fungovala, musí se tři jednotlivé možnosti ladění FORCE_LAST_GOOD_PLAN, CREATE_INDEX a DROP_INDEX u databází nastavit na VÝCHOZÍ.
CUSTOM
Pomocí vlastní hodnoty je potřeba nakonfigurovat každou z možností automatického ladění dostupných v databázích. Na webu Azure Portal se zobrazí možnost Dědit z: Nedědit.
CREATE_INDEX = { DEFAULT | ZAPNUTO | VYPNUTO }
Zapnutí nebo vypnutí automatické správy CREATE_INDEX indexu automatického ladění. Stav této možnosti můžete zobrazit na webu Azure Portal nebo prostřednictvím T-SQL v zobrazení sys.database_automatic_tuning_options.
DEFAULT
Dědí výchozí nastavení ze serveru. V tomto případě jsou možnosti povolení nebo zakázání jednotlivých funkcí automatického ladění definovány na úrovni serveru.
ON
Pokud je tato možnost povolená, v databázi se automaticky vygenerují chybějící indexy. Po vytvoření indexu se ověří zvýšení výkonu úlohy. Pokud takový vytvořený index již neposkytuje výhody výkonu úloh, automaticky se vrátí. Automaticky vytvořené indexy se označí jako indexované systémem.
OFF
Nevygeneruje automaticky chybějící indexy v databázi.
DROP_INDEX = { DEFAULT | ZAPNUTO | VYPNUTO }
Zapnutí nebo vypnutí automatické správy DROP_INDEX indexu automatického ladění. Stav této možnosti můžete zobrazit na webu Azure Portal nebo prostřednictvím T-SQL v zobrazení sys.database_automatic_tuning_options.
DEFAULT
Dědí výchozí nastavení ze serveru. V tomto případě jsou možnosti povolení nebo zakázání jednotlivých funkcí automatického ladění definovány na úrovni serveru.
ON
Automaticky zahodí duplicitní indexy nebo už nebudou užitečné indexy úlohy výkonu.
OFF
Automaticky nezahazuje chybějící indexy v databázi.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ZAPNUTO | VYPNUTO }
Zapnutí nebo vypnutí automatické korekce FORCE_LAST_GOOD_PLAN plánu v rámci automatického ladění. Stav této možnosti můžete zobrazit na webu Azure Portal nebo prostřednictvím T-SQL v zobrazení sys.database_automatic_tuning_options.
DEFAULT
Dědí výchozí nastavení ze serveru. V tomto případě jsou možnosti povolení nebo zakázání jednotlivých funkcí automatického ladění definovány na úrovni serveru. Toto je výchozí hodnota. Výchozí hodnota pro nové servery Azure SQL je zapnutá, což znamená, že nové databáze ve výchozím nastavení dědí nastavení ZAPNUTO.
ON
Databázový stroj automaticky vynutí poslední známý dobrý plán na Transact-SQL dotazy, kde nový plán dotazů způsobuje regrese výkonu. Databázový stroj nepřetržitě monitoruje výkon dotazů Transact-SQL dotazu s vynuceným plánem. Pokud dojde k nárůstu výkonu, databázový stroj bude dál používat poslední známý dobrý plán. Pokud se nezjistí zvýšení výkonu, databázový stroj vytvoří nový plán dotazu. Příkaz selže, pokud není Query Store povolen nebo není v režimu čtení a zápisu .
OFF
Databázový engine hlásí možné regrese výkonu dotazů způsobené změnami plánu dotazů v sys.dm_db_tuning_recommendations zobrazení. Tato doporučení se ale nepoužijí automaticky. Uživatelé můžou monitorovat aktivní doporučení a opravovat zjištěné problémy pomocí Transact-SQL skriptů zobrazených v zobrazení.
< > change_tracking_option ::=
Řídí možnosti sledování změn. Můžete povolit sledování změn, nastavit možnosti, možnosti změn a zakázat sledování změn. Příklady najdete v sekci Příklady později v tomto článku.
ON
Povolí sledování změn pro databázi. Když povolíte sledování změn, můžete také nastavit možnosti AUTOMATICKÉHO VYČIŠTĚNÍ a UCHOVÁVÁNÍ ZMĚN.
AUTO_CLEANUP = { ON | VYPNUTO }
ON
Informace o sledování změn se po zadané době uchovávání automaticky odeberou.
OFF
Data sledování změn se z databáze neodeberou.
CHANGE_RETENTION = retention_period { DNY | HODINY | MINUTY }
Určuje minimální dobu pro uchovávání informací o sledování změn v databázi. Data se odeberou jenom v případech, kdy je hodnota AUTO_CLEANUP zapnutá.
retention_period je celé číslo, které určuje číselnou složku doby zadržení.
Výchozí doba udržení je 2 dny. Minimální doba uchovávání je 1 minuta. Výchozí typ udržení je DAYS.
OFF
Zakáže sledování změn pro databázi. Před zakázání sledování změn v databázi zakažte sledování změn u všech tabulek.
< > cursor_option ::=
Řídí možnosti kurzoru.
CURSOR_CLOSE_ON_COMMIT { ON | VYPNUTO }
ON
Všechny kurzory otevřené při potvrzení nebo vrácení transakce se zavře.
OFF
Kurzory zůstávají otevřené při potvrzení transakce; vrácení zpět transakce zavře všechny kurzory s výjimkou těch kurzorů definovaných jako INSENSITIVE nebo STATIC.
Nastavení na úrovni připojení, která jsou nastavená pomocí příkazu SET, přepíší výchozí nastavení databáze pro CURSOR_CLOSE_ON_COMMIT. Klienti ODBC a OLE DB vydávají nastavení příkazu SET na úrovni připojení CURSOR_CLOSE_ON_COMMIT pro relaci ve výchozím nastavení vypnuto. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET CURSOR_CLOSE_ON_COMMIT.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_cursor_close_on_commit_on v katalogu sys.databases nebo IsCloseCursorsOnCommitEnabled vlastnosti funkce DATABASEPROPERTYEX . Kurzor je implicitně uvolněn pouze při odpojení. Pro více informací viz DECLARE CURSOR.
< > db_encryption_option ::=
Řídí stav šifrování databáze.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO }
Nastaví databázi tak, aby byla zašifrována (ZAPNUTO) nebo není zašifrovaná (VYPNUTO). Další informace o šifrování databáze najdete v tématu transparentního šifrování dat (TDE)a transparentního šifrování dat pro službu Azure SQL Database, azure SQL Managed Instance aAzure Synapse Analytics.
Pokud je šifrování povolené na úrovni databáze, všechny skupiny souborů se šifrují. Všechny nové skupiny souborů dědí zašifrovanou vlastnost. Pokud jsou některé skupiny souborů v databázi nastaveny jen pro čtení, operace šifrování databáze selže.
Stav šifrování databáze můžete vidět pomocí sys.dm_database_encryption_keys dynamického pohledu správy.
< > db_update_option ::=
Určuje, jestli jsou v databázi povolené aktualizace.
READ_ONLY
Uživatelé mohou číst data z databáze, ale nemůžou je upravovat.
Note
Pokud chcete zvýšit výkon dotazů, aktualizujte statistiky před nastavením databáze na READ_ONLY. Pokud jsou po nastavení READ_ONLY databáze potřeba další statistiky, vytvoří databázový stroj statistiku v
tempdb. Pro více informací o statistice pro databázi pouze pro čtení viz Statistiky.READ_WRITE
Databáze je k dispozici pro operace čtení a zápisu.
Pokud chcete tento stav změnit, musíte mít výhradní přístup k databázi. Další informace najdete v klauzuli SINGLE_USER.
Note
Ve federovaných databázích Azure SQL Database je SET { READ_ONLY | READ_WRITE } zakázaná.
< > db_user_access_option ::=
Řídí uživatelský přístup k databázi.
RESTRICTED_USER
Umožňuje připojení k databázi jenom členům
db_ownerpevné databázové role adbcreatorasysadminpevných rolí serveru, ale neomezuje jejich počet. Všechna připojení k databázi jsou odpojena v časovém rámci určeném klauzulí ukončení příkazu ALTER DATABASE. Po přechodu databáze do stavu RESTRICTED_USER budou pokusy o připojení nekvalifikovaných uživatelů odmítnuty. Ve službě Azure SQL Database by se mělo spouštět z uživatelské databáze. V databázimasterse může zobrazit chybová zprávaMsg 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
Všichni uživatelé, kteří mají příslušná oprávnění pro připojení k databázi, jsou povoleni. Stav této možnosti můžete zjistit prozkoumáním sloupce
user_accessv katalogu sys.databases neboUserAccessvlastnosti funkce DATABASEPROPERTYEX . Ve službě Azure SQL Database by se mělo spouštět z uživatelské databáze. V databázimasterse může zobrazit chybová zprávaMsg 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 ::=
Určuje, zda transakce potvrdí plně trvalé nebo zpožděné trvalé.
DISABLED
Všechny transakce následující
SET DISABLEDjsou plně odolné. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.ALLOWED
Všechny transakce následující
SET ALLOWEDjsou buď plně odolné nebo zpožděné, v závislosti na možnosti stálosti nastavené v atomovém bloku nebo příkazu commit.FORCED
Všechny transakce následující
SET FORCEDjsou zpožděné trvalé. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.
< > PARAMETERIZATION_option ::=
Řídí možnost parametrizace.
PARAMETRIZACE { SIMPLE | FORCED }
SIMPLE
Dotazy jsou parametrizovány na základě výchozího chování databáze.
FORCED
SQL Server parametrizuje všechny dotazy v databázi.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_parameterization_forced v katalogu sys.databases .
< > query_store_options ::=
ZAPNUTO | VYPNUTO | CLEAR [ ALL ]
Určuje, jestli je v této databázi povolené úložiště dotazů, a také určuje odebrání obsahu úložiště dotazů.
ON
Povolí úložiště dotazů. Zapnuto je výchozí hodnota.
OFF
Zakáže úložiště dotazů.
Note
Úložiště dotazů nejde zakázat v jednoúčelové databázi Azure SQL Database a elastickém fondu. Provádění
ALTER DATABASE [database] SET QUERY_STORE = OFFvrátí upozornění'QUERY_STORE=OFF' is not supported in this version of SQL Server..CLEAR
Odeberte obsah úložiště dotazů.
OPERATION_MODE
Popisuje režim operace úložiště dotazů. Platné hodnoty jsou READ_ONLY a READ_WRITE. V READ_WRITE režimu úložiště dotazů shromažďuje a uchovává informace o plánu dotazu a spouštění za běhu. V READ_ONLY režimu je možné informace číst z úložiště dotazů, ale nepřidají se nové informace. Pokud došlo k vyčerpání maximálního přiděleného prostoru úložiště dotazů, změní úložiště dotazů režim operace na READ_ONLY.
CLEANUP_POLICY
Popisuje zásady uchovávání dat úložiště dotazů. STALE_QUERY_THRESHOLD_DAYS určuje počet dnů, po které se informace pro dotaz uchovávají v úložišti dotazů. STALE_QUERY_THRESHOLD_DAYS je typ bigint. Výchozí hodnota je 30. Pro edici SQL Database Basic je výchozí doba 7 dní.
DATA_FLUSH_INTERVAL_SECONDS
Určuje frekvenci, s jakou se data zapsaná do úložiště dotazů zachovají na disk. Kvůli optimalizaci výkonu se data shromážděná úložištěm dotazů asynchronně zapisují na disk. Frekvence, s jakou k tomuto asynchronnímu přenosu dochází, je nakonfigurována pomocí argumentu DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS je typ bigint. Výchozí hodnota je 900 (15 min).
MAX_STORAGE_SIZE_MB
Určuje prostor přidělený úložišti dotazů. MAX_STORAGE_SIZE_MB je typ bigint.
Note
V Azure SQL Database se výchozí MAX_STORAGE_SIZE_MB hodnota liší podle úrovně služby, následovně: Premium, Business Critical a Hyperscale: 1 024 MB; Standardní a obecné použití: 100 MB; Základní: 10 MB Maximální povolená MAX_STORAGE_SIZE_MB hodnota je 10 240 MB.
Note
MAX_STORAGE_SIZE_MB limit není striktně vynucený. Velikost úložiště se kontroluje jenom v případech, kdy úložiště dotazů zapisuje data na disk. Tento interval je nastaven možností DATA_FLUSH_INTERVAL_SECONDS nebo možností dialogového okna Úložiště dotazů v sadě Management Studio Interval vyprázdnění dat. Výchozí hodnota intervalu je 900 sekund (nebo 15 minut).
Pokud úložiště dotazů porušilo limit MAX_STORAGE_SIZE_MB mezi kontrolami velikosti úložiště, přejde do režimu jen pro čtení. Pokud je povolená SIZE_BASED_CLEANUP_MODE, aktivuje se také mechanismus čištění, který vynucuje limit MAX_STORAGE_SIZE_MB.
Jakmile se vymaže dostatek místa, režim úložiště dotazů se automaticky přepne zpět na čtení i zápis.
Important
Pokud si myslíte, že vaše zachycení pracovní zátěže potřebuje více než 10 GB místa na disku, měli byste pravděpodobně přehodnotit a optimalizovat zátěž tak, abyste mohli znovu použít plány dotazů (například pomocí nucené parametrizace, nebo upravit konfigurace Query Store).
Počínaje SQL Serverem 2019 (15.x) a v Azure SQL Database můžete nastavit QUERY_CAPTURE_MODE na VLASTNÍ, abyste získali další kontrolu nad zásadami zachytávání dotazů.
INTERVAL_LENGTH_MINUTES
Určuje časový interval, ve kterém se data statistik spouštění modulu runtime agregují do úložiště dotazů. Pro optimalizaci využití místa se statistiky spouštění modulu runtime v úložišti statistik modulu runtime agregují v rámci pevného časového intervalu. Toto pevné časové okno je nakonfigurováno pomocí argumentu INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES je typ bigint. Výchozí hodnota je 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | VYPNUTO }
Určuje, jestli se čištění aktivuje automaticky, když se celkové množství dat blíží maximální velikosti.
OFF
Čištění na základě velikosti se neaktivuje automaticky.
AUTO
Čištění podle velikosti se automaticky aktivuje, když velikost disku dosáhne 90% max_storage_size_mb. Čištění na základě velikosti nejprve odebere nejméně nákladné a nejstarší dotazy. Zastavuje přibližně na 80% max_storage_size_mb. Toto je výchozí hodnota konfigurace.
SIZE_BASED_CLEANUP_MODE je typ Nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | VLASTNÍ | NONE }
Určuje aktuálně aktivní režim zachytávání dotazů. Každý režim definuje konkrétní zásady zachytávání dotazů.
Note
Kurzory, dotazy uvnitř uložených procedur a nativně kompilované dotazy se vždy zaznamenávají, když je režim zachytávání dotazů nastavený na ALL, AUTO nebo CUSTOM.
ALL
Zachytává všechny dotazy.
AUTO
Zachyťte relevantní dotazy na základě počtu spuštění a spotřeby prostředků. Toto je výchozí hodnota konfigurace pro Azure SQL Database.
NONE
Zastavte zachytávání nových dotazů. Úložiště dotazů nadále shromažďuje statistiky kompilace a modulu runtime pro dotazy, které už byly zachyceny. Tuto konfiguraci používejte s opatrností, protože byste mohli vynechat zachytávání důležitých dotazů.
CUSTOM
Umožňuje kontrolu nad možnostmi QUERY_CAPTURE_POLICY.
QUERY_CAPTURE_MODE je typ Nvarchar.
MAX_PLANS_PER_QUERY
Definuje maximální počet plánů udržovaných pro každý dotaz. MAX_PLANS_PER_QUERY je typ int. Výchozí hodnota je 200.
WAIT_STATS_CAPTURE_MODE { ON | VYPNUTO }
Určuje, jestli se zachytávají statistiky čekání na dotaz.
ON
Zachytí se informace o statistikách čekání na dotaz. Tato hodnota je výchozí konfigurační hodnotou.
OFF
Informace o statistikách čekání na dotaz se nezaznamenají.
< > query_capture_policy_option_list :: =
Řídí možnosti zásad zachycení úložiště dotazů. S výjimkou STALE_CAPTURE_POLICY_THRESHOLD tyto možnosti definují podmínky OR, ke kterým musí dojít, aby dotazy byly zachyceny v definované prahové hodnotě zásad zachytávání zastaralých.
STALE_CAPTURE_POLICY_THRESHOLD = celé číslo { DNY | HODINY }
Definuje období intervalu vyhodnocení, které určuje, jestli se má dotaz zachytit. Výchozí hodnota je 1 den a dá se nastavit od 1 hodiny do sedmi dnů. číslo je typ int.
EXECUTION_COUNT = celé číslo
Definuje, kolikrát se dotaz provádí během období vyhodnocení. Výchozí hodnota je 30, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí dotaz provést nejméně 30krát za jeden den, aby se zachoval v úložišti dotazů. EXECUTION_COUNT je typ int.
TOTAL_COMPILE_CPU_TIME_MS = celé číslo
Definuje celkovou uplynulou dobu kompilace procesoru používanou dotazem během období vyhodnocení. Výchozí hodnota je 1000, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí mít dotaz celkem alespoň jednu sekundu času stráveného během kompilace dotazu v jednom dni, aby se zachoval v úložišti dotazů. TOTAL_COMPILE_CPU_TIME_MS je typ int.
TOTAL_EXECUTION_CPU_TIME_MS = celé číslo
Definuje celkovou uplynulou dobu výkonu procesoru používanou dotazem během období vyhodnocení. Výchozí hodnota je 100, což znamená, že pro výchozí prahovou hodnotu zastaralé zásady zachytávání musí mít dotaz celkem alespoň 100 ms času stráveného během provádění v jednom dni, aby se zachoval v úložišti dotazů. TOTAL_EXECUTION_CPU_TIME_MS je typ int.
< > snapshot_option ::=
Určuje úroveň izolace transakce.
ALLOW_SNAPSHOT_ISOLATION { ON | VYPNUTO }
ON
Povolí možnost Snímek na úrovni databáze. Když je povolená, příkazy DML začnou generovat verze řádků, i když žádná transakce nepoužívá izolaci snímků. Po povolení této možnosti mohou transakce zadat úroveň izolace transakce SNAPSHOT. Když transakce běží na úrovni izolace SNAPSHOT, všechny příkazy uvidí snímek dat, protože existuje na začátku transakce. Pokud transakce spuštěná na úrovni izolace SNAPSHOT přistupuje k datům ve více databázích, musí být buď ALLOW_SNAPSHOT_ISOLATION nastavena na ON ve všech databázích, nebo každý příkaz v transakci musí používat zamykání nápovědy pro všechny odkazy v klauzuli FROM na tabulku v databázi, kde ALLOW_SNAPSHOT_ISOLATION je vypnutá.
OFF
Vypne možnost Snímek na úrovni databáze. Transakce nemohou určit úroveň izolace transakce SNAPSHOT.
Když nastavíte ALLOW_SNAPSHOT_ISOLATION na nový stav (od ZAPNUTO do VYPNUTO nebo VYPNUTO na ZAPNUTO), funkce ALTER DATABASE nevrátí řízení volajícímu, dokud nebudou potvrzeny všechny existující transakce v databázi. Pokud je databáze již ve stavu zadaném v příkazu ALTER DATABASE, vrátí se ovládací prvek volajícímu okamžitě. Pokud se příkaz ALTER DATABASE nevrátí rychle, použijte sys.dm_tran_active_snapshot_database_transactions k ověření, zda existují dlouhodobé transakce. Pokud je příkaz ALTER DATABASE zrušen, databáze zůstane ve stavu, ve který byla spuštěna funkce ALTER DATABASE. Zobrazení katalogu sys.databases ukazuje stav transakcí s izolací snímků v databázi. Pokud snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, příkaz ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF pozastaví šest sekund a opakuje operaci.
Pokud je databáze offline, nemůžete změnit stav ALLOW_SNAPSHOT_ISOLATION.
Pokud nastavíte ALLOW_SNAPSHOT_ISOLATION v databázi READ_ONLY, nastavení se zachová, pokud je databáze později nastavená na READ_WRITE.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce snapshot_isolation_state v katalogu sys.databases .
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
ON
Povolí možnost Read-Committed Snímek na úrovni databáze. Když je povolená, příkazy DML začnou generovat verze řádků, i když žádná transakce nepoužívá izolaci snímků. Jakmile je tato možnost povolená, transakce určující úroveň izolace READ COMMITTED místo uzamčení používají správu verzí řádků. Všechny příkazy vidí snímek dat, protože existuje na začátku příkazu, když transakce běží na úrovni izolace READ COMMITTED.
OFF
Vypne možnost Read-Committed Snímek na úrovni databáze. Transakce určující úroveň izolace READ COMMITTED používají uzamčení.
Pokud chcete nastavit READ_COMMITTED_SNAPSHOT ZAPNUTO nebo VYPNUTO, nesmí existovat žádná aktivní připojení k databázi s výjimkou připojení spuštěného příkazem ALTER DATABASE. Databáze ale nemusí být v režimu jednoho uživatele. Pokud je databáze offline, nemůžete změnit stav této možnosti.
Pokud nastavíte READ_COMMITTED_SNAPSHOT v databázi READ_ONLY, nastavení se zachová, když je databáze později nastavená na READ_WRITE.
READ_COMMITTED_SNAPSHOT nelze zapnout pro systémové databáze master, tempdbnebo msdb. Pokud změníte nastavení pro model, toto nastavení se stane výchozím nastavením pro všechny nově vytvořené databáze s výjimkou tempdb.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_read_committed_snapshot_on v katalogu sys.databases .
Warning
Když je tabulka vytvořena s DURABILITY = SCHEMA_ONLY, a READ_COMMITTED_SNAPSHOT je následně změněna pomocí ALTER DATABASE, data v tabulce jsou ztracena.
Tip
Ve službě Azure SQL Database musí být příkaz ALTER DATABASE, který nastaví READ_COMMITTED_SNAPSHOT zapnuto nebo vypnuto pro databázi v databázi master.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | VYPNUTO }
ON
Pokud je úroveň izolace transakce nastavena na libovolnou úroveň izolace nižší než SNAPSHOT, všechny interpretované Transact-SQL operace s tabulkami optimalizovanými pro paměť se spouští pod izolací SNAPSHOT. Příklady úrovní izolace nižší než snímky jsou READ COMMITTED nebo READ UNCOMMITTED. Tyto operace se spouští, jestli je úroveň izolace transakce nastavena explicitně na úrovni relace, nebo se implicitně používá výchozí hodnota.
OFF
Nezvyšuje úroveň izolace transakcí pro interpretované operace Transact-SQL v tabulkách optimalizovaných pro paměť.
Pokud je databáze offline, nemůžete změnit stav MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT.
Výchozí hodnota je VYPNUTÁ.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_memory_optimized_elevate_to_snapshot_on v katalogu sys.databases .
< > sql_option ::=
Řídí možnosti dodržování předpisů ANSI na úrovni databáze.
ANSI_NULL_DEFAULT { ON | VYPNUTO }
Určuje výchozí hodnotu, HODNOTU NULL nebo NOT NULL sloupce nebo uživatelem definovaný typ CLR, pro který není explicitně definována v příkazech CREATE TABLE nebo ALTER TABLE. Sloupce definované s omezeními se řídí pravidly omezení bez ohledu na to, co toto nastavení může být.
ON
Výchozí hodnota je NULL.
OFF
Výchozí hodnota není NULL.
Nastavení na úrovni připojení, která jsou nastavená pomocí příkazu SET, přepíší výchozí nastavení na úrovni databáze pro ANSI_NULL_DEFAULT. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_NULL_DEFAULT zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_NULL_DFLT_ON.
V případě kompatibility ANSI nastavení možnosti databáze ANSI_NULL_DEFAULT na HODNOTU ON změní výchozí hodnotu databáze na HODNOTU NULL.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_null_default_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiNullDefault vlastnosti funkce DATABASEPROPERTYEX .
ANSI_NULLS { ON | VYPNUTO }
ON
Všechna porovnání s hodnotou null se vyhodnotí jako UNKNOWN.
OFF
Porovnání hodnot, které nejsou unicode, na hodnotu null se vyhodnotí jako PRAVDA, pokud obě hodnoty mají hodnotu NULL.
Important
V budoucí verzi SQL Serveru bude ANSI_NULLS vždy zapnuté a všechny aplikace, které explicitně nastavily možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro ANSI_NULLS. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_NULLS zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_NULLS.
Note
NASTAVENÍ ANSI_NULLS musí být také při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_nulls_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiNullsEnabled vlastnosti funkce DATABASEPROPERTYEX .
ANSI_PADDING { ON | VYPNUTO }
ON
Řetězce jsou před převodem vycpané na stejnou délku. Také je vycpaný na stejnou délku před vložením do datového typu varchar nebo nvarchar .
OFF
Vkládá prázdné znaky do sloupců varchar nebo nvarchar . Také zanechává nuly v binárních hodnotách, které jsou vloženy do varbinárních sloupců. Hodnoty nejsou vycpané na délku sloupce.
Pokud je toto nastavení vypnuté, ovlivní pouze definici nových sloupců.
Important
V budoucí verzi SQL Serveru budou ANSI_PADDING vždy zapnuté a všechny aplikace, které explicitně nastaví možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Doporučujeme, abyste vždy nastavili ANSI_PADDING na ZAPNUTO. ANSI_PADDING musí být zapnuté při vytváření nebo manipulaci s indexy ve vypočítaných sloupcích nebo indexovaných zobrazeních.
sloupce char(n) a binární(n), které umožňují nulové hodnoty, jsou vyplněny na délku sloupce, když je ANSI_PADDING nastaveno na ON. Koncové prázdné hodnoty a nuly se oříznou, když je ANSI_PADDING vypnutý. sloupce char(n) a binární(n), které neumožňují null, jsou vždy vyplněny na délku sloupce.
Nastavení na úrovni připojení nastavená pomocí příkazu SET přepíší výchozí nastavení na úrovni databáze pro ANSI_PADDING. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_PADDING zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Další informace naleznete v tématu SET ANSI_PADDING.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_padding_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiPaddingEnabled vlastnosti funkce DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | VYPNUTO }
ON
Chyby nebo upozornění se vydávají v případě, že dojde k podmínkám, jako je dělení nulou. Chyby a upozornění se vydávají také v případech, kdy se hodnoty null zobrazují v agregačních funkcích.
OFF
Při výskytu podmínek, jako je například dělení nulou, se nevrací žádná upozornění a hodnoty null se vrátí.
Note
Nastavení ANSI_WARNINGS musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro ANSI_WARNINGS. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_WARNINGS zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_WARNINGS.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_warnings_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiWarningsEnabled vlastnosti funkce DATABASEPROPERTYEX .
ARITHABORT { ON | VYPNUTO }
ON
Dotaz se ukončí, když během provádění dotazu dojde k chybě přetečení nebo dělení nulou.
OFF
Při výskytu jedné z těchto chyb se zobrazí zpráva s upozorněním. Dotaz, dávka nebo transakce pokračuje v procesu, jako kdyby nedošlo k žádné chybě, i když se zobrazí upozornění.
Note
Nastavení ARITHABORT musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_arithabort_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsArithmeticAbortEnabled vlastnosti funkce DATABASEPROPERTYEX .
COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | VYPNUTO }
ON
Výsledek operace zřetězení je NULL, pokud je oba operandy NULL. Například zřetězení řetězce znaků "This is" a NULL způsobí hodnotu NULL místo hodnoty "This is".
OFF
Hodnota null je považována za prázdný řetězec znaků.
Note
CONCAT_NULL_YIELDS_NULL musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastavena na hodnotu ZAPNUTO.
V budoucí verzi SQL Serveru bude CONCAT_NULL_YIELDS_NULL vždy zapnuté a všechny aplikace, které explicitně nastavily možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro CONCAT_NULL_YIELDS_NULL. Ve výchozím nastavení vydávají klienti ODBC a OLE DB nastavení příkazu SET na úrovni připojení CONCAT_NULL_YIELDS_NULL pro relaci při připojování k instanci SQL Serveru. Další informace naleznete v tématu SET CONCAT_NULL_YIELDS_NULL.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_concat_null_yields_null_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsNullConcat vlastnosti funkce DATABASEPROPERTYEX .
NUMERIC_ROUNDABORT { ON | VYPNUTO }
ON
Při ztrátě přesnosti ve výrazu se vygeneruje chyba.
OFF
Ztráta přesnosti nevygeneruje chybovou zprávu a výsledek se zaokrouhlí na přesnost sloupce nebo proměnné, do které se výsledek uloží.
Important
NUMERIC_ROUNDABORT musí být při vytváření nebo změnách indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastavena na hodnotu VYPNUTO.
Stav této možnosti můžete určit ve sloupci is_numeric_roundabort_on v zobrazení katalogu sys.databases . Stav lze také zjistit zkoumáním IsNumericRoundAbortEnabled vlastnosti funkce DATABASEPROPERTYEX .
QUOTED_IDENTIFIER { ON | VYPNUTO }
ON
Dvojité uvozovky lze použít k uzavření identifikátorů s oddělovači.
Všechny řetězce oddělené dvojitými uvozovkami se interpretují jako identifikátory objektů. Identifikátory uvozových čísel nemusí dodržovat pravidla Transact-SQL identifikátorů. Můžou to být klíčová slova a můžou obsahovat znaky, které nejsou povolené v identifikátorech Transact-SQL. Pokud je uvozovka (
") součástí identifikátoru, může být reprezentována dvěma uvozovkami ("").OFF
Identifikátory nemohou být v uvozovkách a musí dodržovat všechna pravidla Transact-SQL identifikátorů. Literály můžou být oddělené jednoduchými nebo dvojitými uvozovkami.
SQL Server také umožňuje oddělovat identifikátory hranatými závorkami ([ a ]). Identifikátory v hranatých závorkách je možné vždy použít bez ohledu na to, co je nastavení QUOTED_IDENTIFIER. Další informace naleznete v tématu Identifikátory databáze.
Při vytvoření tabulky je možnost QUOTED IDENTIFIER vždy uložena jako ON v metadatech tabulky. Tato možnost se uloží i v případě, že je tato možnost při vytváření tabulky nastavená na VYPNUTO.
Nastavení na úrovni připojení nastavená pomocí příkazu SET přepíší výchozí nastavení databáze pro QUOTED_IDENTIFIER. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení QUOTED_IDENTIFIER zapnuto. Klienti spustí příkaz při připojení k instanci SQL Serveru. Další informace naleznete v tématu SET QUOTED_IDENTIFIER.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_quoted_identifier_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsQuotedIdentifiersEnabled vlastnosti funkce DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | VYPNUTO }
ON
Je povoleno rekurzivní aktivaci triggerů AFTER.
OFF
Stav této možnosti můžete zjistit prozkoumáním sloupce
is_recursive_triggers_onv katalogu sys.databases . Stav lze také zjistit zkoumánímIsRecursiveTriggersEnabledvlastnosti funkce DATABASEPROPERTYEX .
Note
Pokud je RECURSIVE_TRIGGERS nastavená na VYPNUTO, zabrání se pouze přímá rekurze. Pokud chcete zakázat nepřímou rekurzi, musíte také nastavit možnost serveru vnořených triggerů na hodnotu 0.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_recursive_triggers_on v katalogu sys.databases nebo IsRecursiveTriggersEnabled vlastnosti funkce DATABASEPROPERTYEX .
< > target_recovery_time_option ::=
Určuje frekvenci nepřímých kontrolních bodů pro jednotlivé databáze. Od SQL Server 2016 (13.x) je výchozí hodnota pro nové databáze 1 minuta, což znamená, že databáze používá nepřímé kontrolní body. Ve starších verzích je výchozí hodnota 0, což značí, že databáze používá automatické kontrolní body, jejichž frekvence závisí na nastavení intervalu obnovení instance serveru. Microsoft doporučuje pro většinu systémů 1 minutu.
TARGET_RECOVERY_TIME = target_recovery_time { SEKUNDY | MINUTY }
target_recovery_time
Určuje maximální mez času obnovení zadané databáze v případě chybového ukončení. target_recovery_time je typ int.
SECONDS
Označuje, že target_recovery_time je vyjádřeno jako počet sekund.
MINUTES
Označuje, že target_recovery_time je vyjádřeno jako počet minut.
Pro více informací o nepřímých kontrolních stanovištích viz Databázové kontrolní body.
< ukončení >WITH::=
Určuje, kdy se mají vrátit neúplné transakce při přechodu databáze z jednoho stavu do druhého. Pokud je klauzule ukončení vynechána, příkaz ALTER DATABASE počká na neomezenou dobu, pokud je v databázi nějaký zámek. Lze zadat pouze jednu klauzuli ukončení a řídí se klauzulí SET.
Note
Ne všechny možnosti databáze používají klauzuli< ukončení >WITH. Pro více informací viz tabulka v sekci "Poznámky" v sekci "Poznámky".
ROLLBACK PO celém čísle [SEKUNDY] | OKAMŽITÉ VRÁCENÍ
Určuje, jestli se má vrátit zpět po zadaném počtu sekund nebo okamžitě.
NO_WAIT
Určuje, že požadavek selže, pokud požadovaný stav databáze nebo změna možnosti nelze dokončit okamžitě. Dokončení okamžitě znamená, že nečeká na transakce, které se potvrdí nebo vrátí zpět samy.
< > temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | VYPNUTO }
Ve výchozím nastavení je zapnuto, ale také automaticky nastaveno na VYPNUTO po operaci obnovení k určitému bodu v čase. Další informace, včetně toho, jak toto nastavení povolit, najdete v tématu Jak nakonfigurovat zásady uchovávání informací.
ON
Default. Povolí zásady uchovávání dočasných tabulek. Další informace najdete v tématu Správa uchovávání historických dat v dočasných tabulkách s systémovou verzí.
OFF
Neprovádějte dočasné historické zásady uchovávání informací.
Nastavení možností
Pro získání aktuálních nastavení databázových možností použijte katalogový pohled sys.databases nebo DATABASEPROPERTYEX
Po nastavení možnosti databáze se nové nastavení projeví okamžitě.
Výchozí hodnoty pro libovolnou z možností databáze pro všechny nově vytvořené databáze můžete změnit. Uděláte to tak, že v databázi model změníte příslušnou možnost databáze.
Ne všechny možnosti databáze používají klauzuli <ukončení> nebo je možné ji zadat v kombinaci s jinými možnostmi. Následující tabulka uvádí tyto možnosti a jejich možnosti a stav ukončení.
| Kategorie opcí | Lze zadat s dalšími možnostmi. | Může použít klauzuli< ukončení >WITH. |
|---|---|---|
| <auto_option> | Yes | No |
| <change_tracking_option> | Yes | Yes |
| <cursor_option> | Yes | No |
| <db_encryption_option> | Yes | No |
| <db_update_option> | Yes | Yes |
| <db_user_access_option> | Yes | Yes |
| <delayed_durability_option> | Yes | Yes |
| <parameterization_option> | Yes | Yes |
| ALLOW_SNAPSHOT_ISOLATION | No | No |
| READ_COMMITTED_SNAPSHOT | No | Yes |
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Yes | Yes |
| DATE_CORRELATION_OPTIMIZATION | Yes | Yes |
| <sql_option> | Yes | No |
| <target_recovery_time_option> | No | Yes |
Examples
A. Nastavení databáze na READ_ONLY
Změna stavu databáze nebo skupiny souborů na READ_ONLY nebo READ_WRITE vyžaduje výhradní přístup k databázi a dokončení může trvat několik sekund. Následující příklad nastaví databázi na RESTRICTED_USER režim pro omezení přístupu. Příklad pak nastaví stav AdventureWorks2025 databáze na READ_ONLY a vrátí přístup k databázi všem uživatelům.
--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
Nastavení databáze zpět do režimu čtení i zápisu:
--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO
Postup ověření:
SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO
B. Povolení izolace snímků v databázi
Následující příklad umožňuje architekturu izolace snímků pro databázi AdventureWorks2025.
--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
Ověřte stav snapshot_isolation_framework v databázi.
--Connect to [database_name]
SELECT name, snapshot_isolation_state,
snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO
Sada výsledků ukazuje, že je povolená architektura izolace snímků.
| name | snapshot_isolation_state | description |
|---|---|---|
| [database_name] | 1 | ON |
C. Povolení, úprava nebo zakázání sledování změn
Následující příklad umožňuje sledování změn pro databázi AdventureWorks2025 a nastaví dobu uchovávání na 2 dnů.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Následující příklad ukazuje, jak změnit dobu uchovávání na 3 dny.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Následující příklad ukazuje, jak zakázat sledování změn pro AdventureWorks2025 databázi.
--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
D. Povolení úložiště dotazů
Následující příklad povolí úložiště dotazů a nakonfiguruje parametry úložiště dotazů.
--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. Povolení úložiště dotazů se statistikami čekání
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
--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. Povolení úložiště dotazů s vlastními možnostmi zásad zachycení
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
--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
)
);
Související obsah
- Statistics
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- úroveň kompatibility ALTER DATABASE
- Zrcadlení databáze ALTER DATABASE
- Vytvořit databázi
- povolení a zakázání funkce Change Tracking (SQL Server)
-
DROP DATABASE (Transact-SQL) - NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ (Transact-SQL)
- sp_configure
- osvědčené postupy pro monitorování úloh pomocí úložiště dotazů
- nápovědy k úložišti dotazů
* SQL spravovaná instance *
Azure Synapse
analýzy
Azure SQL Managed Instance
Úrovně kompatibility jsou SET možnosti, ale jsou popsány v úrovni kompatibility ALTER DATABASE.
Note
Mnoho možností databázových sad lze nastavit pro aktuální relaci pomocí příkazů SET a často je konfigurují aplikace při připojení. Možnosti sady na úrovni relace přepíší hodnoty ALTER DATABASE SET. Možnosti databáze popsané v následujících částech jsou hodnoty, které je možné nastavit pro relace, které explicitně neposkytují další nastavené hodnoty možností.
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 = { 170 | 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 }
Arguments
database_name
Název databáze, která se má upravit.
CURRENT
CURRENT spustí akci v aktuální databázi.
CURRENT nejsou podporované pro všechny možnosti ve všech kontextech. Pokud CURRENT selže, zadejte název databáze.
< > auto_option ::=
Řídí automatické možnosti.
AUTO_CREATE_STATISTICS { ON | VYPNUTO }
ON
Optimalizátor dotazů podle potřeby vytváří statistiky pro jednotlivé sloupce v predikátech dotazů, aby se zlepšily plány dotazů a výkon dotazů. Tyto statistiky s jedním sloupcem se vytvoří, když Optimalizátor dotazů zkompiluje dotazy. Statistiky s jedním sloupcem se vytvářejí jenom u sloupců, které ještě nejsou prvním sloupcem existujícího objektu statistiky.
Výchozí hodnota je ZAPNUTÁ. Pro většinu databází doporučujeme použít výchozí nastavení.
OFF
Optimalizátor dotazů při kompilaci dotazů nevytváří statistiky o jednotlivých sloupcích v predikátech dotazů. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Stav této možnosti můžete zjistit prozkoumáním sloupce
is_auto_create_stats_onv katalogu sys.databases . Stav lze také zjistit zkoumánímIsAutoCreateStatisticsvlastnosti funkce DATABASEPROPERTYEX .Pro více informací viz sekce "Možnosti statistiky" v sekci Statistika.
PŘÍRŮSTKOVÉ = ZAPNUTO | PRYČ
Nastavte AUTO_CREATE_STATISTICS na ZAPNUTO a nastavte PŘÍRŮSTKOVÉ na ZAPNUTO. Toto nastavení vytváří automaticky vytvořené statistiky jako přírůstkové, kdykoli jsou podporovány přírůstkové statistiky. Výchozí hodnota je VYPNUTÁ. Další informace naleznete v tématu VYTVOŘENÍ STATISTIKY.
AUTO_SHRINK { ON | VYPNUTO }
ON
Soubory databáze jsou kandidáty na pravidelné zmenšení. Pokud nemáte konkrétní požadavek, nenastavujte možnost AUTO_SHRINK databáze na hodnotu ZAPNUTO. Další informace naleznete v tématu Zmenšení databáze.
Datové soubory i soubory protokolu se dají automaticky zmenšit. AUTO_SHRINK zmenšuje velikost transakčního protokolu pouze v případě, že nastavíte databázi na JEDNODUCHÝ model obnovení nebo pokud zálohujete protokol. Pokud je tato možnost vypnutá, soubory databáze se při pravidelných kontrolách nevyužitého místa automaticky nezvětšují.
Možnost AUTO_SHRINK způsobí, že se soubory zvětší, když více než 25 procent souboru obsahuje nevyužité místo. Tato možnost způsobí, že se soubor zmenší na jednu ze dvou velikostí. Zmenší se na tu, která je větší:
- Velikost, ve které je 25 procent souboru nevyužité místo
- Velikost souboru při jeho vytvoření
Databázi jen pro čtení nemůžete zmenšit.
OFF
Soubory databáze se při pravidelných kontrolách nevyužitého místa automaticky nezřetěší.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_shrink_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoShrink vlastnosti funkce DATABASEPROPERTYEX .
Note
Možnost AUTO_SHRINK není dostupná v databázi s omezením.
AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
ON
Určuje, že optimalizátor dotazů aktualizuje statistiky, když je používá dotaz a kdy může být zastaralý. Statistiky se po vložení, aktualizaci, odstranění nebo sloučení změní distribuci dat v tabulce nebo indexovém zobrazení. Optimalizátor dotazů určuje, kdy statistiky můžou být zastaralé, počítáním počtu úprav dat od poslední aktualizace statistiky a porovnáním počtu úprav s prahovou hodnotou. Prahová hodnota je založená na počtu řádků v tabulce nebo indexovaném zobrazení.
Optimalizátor dotazů před kompilací dotazu zkontroluje zastaralé statistiky a spustí plán dotazů uložený v mezipaměti. Optimalizátor dotazů používá sloupce, tabulky a indexovaná zobrazení v predikáte dotazu k určení, které statistiky můžou být zastaralé. Optimalizátor dotazů určuje tyto informace před kompilací dotazu. Před spuštěním plánu dotazů v mezipaměti databázový stroj ověří, že plán dotazu odkazuje na up-tostatistiky -date.
Možnost AUTO_UPDATE_STATISTICS se vztahuje na statistiky vytvořené pro indexy, jednosloupcové v predikátech dotazů a statistiky vytvořené pomocí příkazu CREATE STATISTICS. Tato možnost platí také pro filtrované statistiky.
Výchozí hodnota je ZAPNUTÁ. Pro většinu databází doporučujeme použít výchozí nastavení.
Pomocí možnosti AUTO_UPDATE_STATISTICS_ASYNC určete, jestli se statistiky aktualizují synchronně nebo asynchronně.
OFF
Určuje, že optimalizátor dotazů neaktualizuje statistiky, když je používá dotaz. Optimalizátor dotazů také neaktualizuje statistiky, když můžou být zastaralé. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_update_stats_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoUpdateStatistics vlastnosti funkce DATABASEPROPERTYEX .
Pro více informací viz sekce "Využití databázových statistikových možností" v sekci Statistika.
AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
ON
Určuje, že aktualizace statistik pro možnost AUTO_UPDATE_STATISTICS jsou asynchronní. Optimalizátor dotazů nečeká na dokončení aktualizací statistik, než zkompiluje dotazy.
Nastavení této možnosti na HODNOTU ON nemá žádný vliv, pokud není AUTO_UPDATE_STATISTICS nastavena na hodnotu ZAPNUTO.
Ve výchozím nastavení je možnost AUTO_UPDATE_STATISTICS_ASYNC nastavená na VYPNUTO a optimalizátor dotazů aktualizuje statistiky synchronně.
OFF
Určuje, že aktualizace statistik pro možnost AUTO_UPDATE_STATISTICS jsou synchronní. Optimalizátor dotazů čeká na dokončení aktualizací statistiky, než zkompiluje dotazy.
Nastavení této možnosti na vypnuto nemá žádný vliv, pokud není AUTO_UPDATE_STATISTICS nastavena na zapnuto.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_update_stats_async_on v katalogu sys.databases .
Pro více informací, které popisují, kdy použít synchronní nebo asynchronní aktualizace statistiky, viz sekce "Používání databázových statistikových možností" v sekci Statistika.
< > automatic_tuning_option ::=
Ovládá automatické možnosti ladění.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ZAPNUTO | VYPNUTO }
Zapnutí nebo vypnutí FORCE_LAST_GOOD_PLAN automatické ladění.
DEFAULT
Výchozí hodnota služby Azure SQL Managed Instance je zapnutá.
ON
Databázový stroj automaticky vynutí poslední známý dobrý plán na Transact-SQL dotazy, kde nový plán dotazů způsobuje regrese výkonu. Databázový stroj nepřetržitě monitoruje výkon dotazů Transact-SQL dotazu s vynuceným plánem. Pokud dojde k nárůstu výkonu, databázový stroj bude dál používat poslední známý dobrý plán. Pokud se nezjistí zvýšení výkonu, databázový stroj vytvoří nový plán dotazu. Příkaz selže, pokud není Query Store povolen nebo není v režimu čtení a zápisu . Toto je výchozí hodnota.
OFF
Databázový engine hlásí možné regrese výkonu dotazů způsobené změnami plánu dotazů v sys.dm_db_tuning_recommendations zobrazení. Tato doporučení se ale nepoužijí automaticky. Uživatelé můžou monitorovat aktivní doporučení a opravovat zjištěné problémy pomocí Transact-SQL skriptů zobrazených v zobrazení.
< > change_tracking_option ::=
Řídí možnosti sledování změn. Můžete povolit sledování změn, nastavit možnosti, možnosti změn a zakázat sledování změn. Příklady najdete v sekci Příklady později v tomto článku.
ON
Povolí sledování změn pro databázi. Když povolíte sledování změn, můžete také nastavit možnosti AUTOMATICKÉHO VYČIŠTĚNÍ a UCHOVÁVÁNÍ ZMĚN.
AUTO_CLEANUP = { ON | VYPNUTO }
ON
Informace o sledování změn se po zadané době uchovávání automaticky odeberou.
OFF
Data sledování změn se z databáze neodeberou.
CHANGE_RETENTION = retention_period { DNY | HODINY | MINUTY }
Určuje minimální dobu pro uchovávání informací o sledování změn v databázi. Data se odeberou jenom v případech, kdy je hodnota AUTO_CLEANUP zapnutá.
retention_period je celé číslo, které určuje číselnou složku doby zadržení.
Výchozí doba udržení je 2 dny. Minimální doba uchovávání je 1 minuta. Výchozí typ udržení je DAYS.
OFF
Zakáže sledování změn pro databázi. Před zakázání sledování změn v databázi zakažte sledování změn u všech tabulek.
< > cursor_option ::=
Řídí možnosti kurzoru.
CURSOR_CLOSE_ON_COMMIT { ON | VYPNUTO }
ON
Všechny kurzory otevřené při potvrzení nebo vrácení transakce se zavře.
OFF
Kurzory zůstávají otevřené při potvrzení transakce; vrácení transakce zpět zavře všechny kurzory s výjimkou těch definovaných jako INSENSITIVE nebo STATIC.
Nastavení na úrovni připojení, která jsou nastavená pomocí příkazu SET, přepíší výchozí nastavení databáze pro CURSOR_CLOSE_ON_COMMIT. Klienti ODBC a OLE DB vydávají nastavení příkazu SET na úrovni připojení CURSOR_CLOSE_ON_COMMIT pro relaci ve výchozím nastavení vypnuto. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET CURSOR_CLOSE_ON_COMMIT.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_cursor_close_on_commit_on v zobrazení katalogu sys.databases nebo vlastnosti IsCloseCursorsOnCommitEnabled funkce DATABASEPROPERTYEX . Kurzor je implicitně uvolněn pouze při odpojení. Pro více informací viz DECLARE CURSOR.
< > db_encryption_option ::=
Řídí stav šifrování databáze.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO }
Nastaví databázi tak, aby byla zašifrována (ZAPNUTO) nebo není zašifrovaná (VYPNUTO). Další informace o šifrování databáze najdete v tématu transparentního šifrování dat (TDE)a transparentního šifrování dat pro službu Azure SQL Database, azure SQL Managed Instance aAzure Synapse Analytics.
Pokud je šifrování povolené na úrovni databáze, všechny skupiny souborů se šifrují. Všechny nové skupiny souborů dědí zašifrovanou vlastnost. Pokud jsou některé skupiny souborů v databázi nastaveny jen pro čtení, operace šifrování databáze selže.
Stav šifrování databáze můžete vidět pomocí sys.dm_database_encryption_keys dynamického pohledu správy.
< > delayed_durability_option ::=
Určuje, zda transakce potvrdí plně trvalé nebo zpožděné trvalé.
DISABLED
Všechny transakce následující
SET DISABLEDjsou plně odolné. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.ALLOWED
Všechny transakce následující
SET ALLOWEDjsou buď plně odolné nebo zpožděné, v závislosti na možnosti stálosti nastavené v atomovém bloku nebo příkazu commit.FORCED
Všechny transakce následující
SET FORCEDjsou zpožděné trvalé. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.
< > PARAMETERIZATION_option ::=
Řídí možnost parametrizace.
PARAMETRIZACE { SIMPLE | FORCED }
SIMPLE
Dotazy jsou parametrizovány na základě výchozího chování databáze.
FORCED
SQL Server parametrizuje všechny dotazy v databázi.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_parameterization_forced v katalogu sys.databases .
< > query_store_options ::=
ZAPNUTO | VYPNUTO | CLEAR [ ALL ]
Určuje, jestli je v této databázi povolené úložiště dotazů, a také určuje odebrání obsahu úložiště dotazů.
ON
Povolí úložiště dotazů.
OFF
Zakáže úložiště dotazů. Toto je výchozí hodnota.
CLEAR
Odeberte obsah úložiště dotazů.
OPERATION_MODE
Popisuje režim operace úložiště dotazů. Platné hodnoty jsou READ_ONLY a READ_WRITE. V READ_WRITE režimu úložiště dotazů shromažďuje a uchovává informace o plánu dotazu a spouštění za běhu. V READ_ONLY režimu je možné informace číst z úložiště dotazů, ale nepřidají se nové informace. Pokud došlo k vyčerpání maximálního přiděleného prostoru úložiště dotazů, změní úložiště dotazů režim operace na READ_ONLY.
CLEANUP_POLICY
Popisuje zásady uchovávání dat úložiště dotazů. STALE_QUERY_THRESHOLD_DAYS určuje počet dnů, po které se informace pro dotaz uchovávají v úložišti dotazů. STALE_QUERY_THRESHOLD_DAYS je typ bigint. Výchozí hodnota je 30. Pro edici SQL Database Basic je výchozí doba 7 dní.
DATA_FLUSH_INTERVAL_SECONDS
Určuje frekvenci, s jakou se data zapsaná do úložiště dotazů zachovají na disk. Kvůli optimalizaci výkonu se data shromážděná úložištěm dotazů asynchronně zapisují na disk. Frekvence, s jakou k tomuto asynchronnímu přenosu dochází, je nakonfigurována pomocí argumentu DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS je typ bigint. Výchozí hodnota je 900 (15 min).
MAX_STORAGE_SIZE_MB
Určuje prostor přidělený úložišti dotazů. MAX_STORAGE_SIZE_MB je typ bigint. Výchozí hodnota je 100 MB.
MAX_STORAGE_SIZE_MB limit není striktně vynucený. Velikost úložiště se kontroluje jenom v případech, kdy úložiště dotazů zapisuje data na disk. Tento interval je nastaven možností DATA_FLUSH_INTERVAL_SECONDS nebo možností dialogového okna Úložiště dotazů v sadě Management Studio Interval vyprázdnění dat. Výchozí hodnota intervalu je 900 sekund (nebo 15 minut).
Pokud úložiště dotazů porušilo limit MAX_STORAGE_SIZE_MB mezi kontrolami velikosti úložiště, přejde do režimu jen pro čtení. Pokud je povolená SIZE_BASED_CLEANUP_MODE, aktivuje se také mechanismus čištění, který vynucuje limit MAX_STORAGE_SIZE_MB.
Jakmile se vymaže dostatek místa, režim úložiště dotazů se automaticky přepne zpět na čtení i zápis.
Important
- Pokud si myslíte, že vaše zachycení pracovní zátěže potřebuje více než 10 GB místa na disku, měli byste pravděpodobně přehodnotit a optimalizovat zátěž tak, abyste mohli znovu použít plány dotazů (například pomocí nucené parametrizace, nebo upravit konfigurace Query Store).
- Počínaje SQL Serverem 2019 (15.x) a v Azure SQL Database můžete nastavit
QUERY_CAPTURE_MODEna VLASTNÍ, abyste získali další kontrolu nad zásadami zachytávání dotazů. -
MAX_STORAGE_SIZE_MBlimit nastavení je 10 240 MB ve službě Azure SQL Managed Instance.
INTERVAL_LENGTH_MINUTES
Určuje časový interval, ve kterém se data statistik spouštění modulu runtime agregují do úložiště dotazů. Pro optimalizaci využití místa se statistiky spouštění modulu runtime v úložišti statistik modulu runtime agregují v rámci pevného časového intervalu. Toto pevné časové okno je nakonfigurováno pomocí argumentu INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES je typ bigint. Výchozí hodnota je 60.
SIZE_BASED_CLEANUP_MODE = { AUTO | VYPNUTO }
Určuje, jestli se čištění aktivuje automaticky, když se celkové množství dat blíží maximální velikosti.
OFF
Čištění na základě velikosti se neaktivuje automaticky.
AUTO
Čištění podle velikosti se automaticky aktivuje, když velikost disku dosáhne 90% max_storage_size_mb. Čištění na základě velikosti nejprve odebere nejméně nákladné a nejstarší dotazy. Zastavuje přibližně na 80% max_storage_size_mb. Toto je výchozí hodnota konfigurace.
SIZE_BASED_CLEANUP_MODE je typ Nvarchar.
QUERY_CAPTURE_MODE { ALL | AUTO | VLASTNÍ | NONE }
Určuje aktuálně aktivní režim zachytávání dotazů.
ALL
Všechny dotazy jsou zachyceny.
AUTO
Zachyťte relevantní dotazy na základě počtu spuštění a spotřeby prostředků. Toto je výchozí hodnota konfigurace pro Azure SQL Database.
NONE
Zastavte zachytávání nových dotazů. Úložiště dotazů nadále shromažďuje statistiky kompilace a modulu runtime pro dotazy, které už byly zachyceny. Tuto konfiguraci používejte s opatrností, protože byste mohli vynechat zachytávání důležitých dotazů.
QUERY_CAPTURE_MODE je typ Nvarchar.
MAX_PLANS_PER_QUERY
Celé číslo představující maximální počet plánů udržovaných pro každý dotaz. MAX_PLANS_PER_QUERY je typ int. Výchozí hodnota je 200.
WAIT_STATS_CAPTURE_MODE { ON | VYPNUTO }
Určuje, jestli se zachytávají statistiky čekání na dotaz.
ON
Zachytí se informace o statistikách čekání na dotaz. Tato hodnota je výchozí konfigurační hodnotou.
OFF
Informace o statistikách čekání na dotaz se nezaznamenají.
< > query_capture_policy_option_list :: =
Řídí možnosti zásad zachycení úložiště dotazů. S výjimkou STALE_CAPTURE_POLICY_THRESHOLD tyto možnosti definují podmínky OR, ke kterým musí dojít, aby dotazy byly zachyceny v definované prahové hodnotě zásad zachytávání zastaralých.
STALE_CAPTURE_POLICY_THRESHOLD = celé číslo { DNY | HODINY }
Definuje období intervalu vyhodnocení, které určuje, jestli se má dotaz zachytit. Výchozí hodnota je 1 den a dá se nastavit od 1 hodiny do sedmi dnů.
EXECUTION_COUNT = celé číslo
Definuje, kolikrát se dotaz provádí během období vyhodnocení. Výchozí hodnota je 30, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí dotaz provést nejméně 30krát za jeden den, aby se zachoval v úložišti dotazů. EXECUTION_COUNT je typ int.
TOTAL_COMPILE_CPU_TIME_MS = celé číslo
Definuje celkovou uplynulou dobu kompilace procesoru používanou dotazem během období vyhodnocení. Výchozí hodnota je 1000, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí mít dotaz celkem alespoň jednu sekundu času stráveného během kompilace dotazu v jednom dni, aby se zachoval v úložišti dotazů. TOTAL_COMPILE_CPU_TIME_MS je typ int.
TOTAL_EXECUTION_CPU_TIME_MS = celé číslo
Definuje celkovou uplynulou dobu výkonu procesoru používanou dotazem během období vyhodnocení. Výchozí hodnota je 100, což znamená, že pro výchozí prahovou hodnotu zastaralých zásad zachytávání musí mít dotaz celkem alespoň 100 ms času stráveného během provádění v jednom dni, aby se zachoval v úložišti dotazů. TOTAL_EXECUTION_CPU_TIME_MS je typ int.
< > snapshot_option ::=
Určuje úroveň izolace transakce.
ALLOW_SNAPSHOT_ISOLATION { ON | VYPNUTO }
ON
Povolí možnost Snímek na úrovni databáze. Když je povolená, příkazy DML začnou generovat verze řádků, i když žádná transakce nepoužívá izolaci snímků. Po povolení této možnosti mohou transakce zadat úroveň izolace transakce SNAPSHOT. Když transakce běží na úrovni izolace SNAPSHOT, všechny příkazy uvidí snímek dat, protože existuje na začátku transakce. Pokud transakce spuštěná na úrovni izolace SNAPSHOT přistupuje k datům ve více databázích, musí být buď ALLOW_SNAPSHOT_ISOLATION nastavena na ON ve všech databázích, nebo každý příkaz v transakci musí používat zamykání nápovědy pro všechny odkazy v klauzuli FROM na tabulku v databázi, kde ALLOW_SNAPSHOT_ISOLATION je vypnutá.
OFF
Vypne možnost Snímek na úrovni databáze. Transakce nemohou určit úroveň izolace transakce SNAPSHOT.
Když nastavíte ALLOW_SNAPSHOT_ISOLATION na nový stav (od ZAPNUTO do VYPNUTO nebo VYPNUTO na ZAPNUTO), funkce ALTER DATABASE nevrátí řízení volajícímu, dokud nebudou potvrzeny všechny existující transakce v databázi. Pokud je databáze již ve stavu zadaném v příkazu ALTER DATABASE, vrátí se ovládací prvek volajícímu okamžitě. Pokud se příkaz ALTER DATABASE nevrátí rychle, použijte sys.dm_tran_active_snapshot_database_transactions k ověření, zda existují dlouhodobé transakce. Pokud je příkaz ALTER DATABASE zrušen, databáze zůstane ve stavu, ve který byla spuštěna funkce ALTER DATABASE. Zobrazení katalogu sys.databases ukazuje stav transakcí s izolací snímků v databázi. Pokud snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, příkaz ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF pozastaví šest sekund a opakuje operaci.
Pokud je databáze offline, nemůžete změnit stav ALLOW_SNAPSHOT_ISOLATION.
Můžete změnit nastavení ALLOW_SNAPSHOT_ISOLATION pro databáze master, model, msdba tempdb. Nastavení se uchovává při každém zastavení instance databázového stroje a restartování, pokud změníte nastavení pro tempdb. Pokud změníte nastavení systémové databáze model, stane se toto nastavení výchozím nastavením pro všechny nově vytvořené databáze s výjimkou tempdb.
Ve výchozím nastavení je tato možnost zapnutá pro databáze master a msdb.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce snapshot_isolation_state v katalogu sys.databases .
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
ON
Povolí možnost Read-Committed Snímek na úrovni databáze. Když je povolená, příkazy DML začnou generovat verze řádků, i když žádná transakce nepoužívá izolaci snímků. Po povolení této možnosti transakce určující úroveň izolace READ COMMITTED místo uzamčení používají správu verzí řádků. Všechny příkazy vidí snímek dat, protože existuje na začátku příkazu, když transakce běží na úrovni izolace READ COMMITTED.
OFF
Vypne možnost Read-Committed Snímek na úrovni databáze. Transakce určující úroveň izolace READ COMMITTED používají uzamčení.
Pokud chcete nastavit READ_COMMITTED_SNAPSHOT na ZAPNUTO nebo VYPNUTO, nesmí existovat žádná aktivní připojení k databázi s výjimkou připojení, které spouští příkaz ALTER DATABASE. Databáze ale nemusí být v režimu jednoho uživatele. Pokud je databáze offline, nemůžete změnit stav této možnosti.
READ_COMMITTED_SNAPSHOT nelze zapnout pro systémové databáze master, tempdbnebo msdb. Pokud změníte nastavení systémové databáze model, stane se toto nastavení výchozím nastavením pro všechny nově vytvořené databáze s výjimkou tempdb.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_read_committed_snapshot_on v katalogu sys.databases .
Warning
Při vytvoření tabulky s DURABILITY = SCHEMA_ONLYa READ_COMMITTED_SNAPSHOT se následně změní pomocí ALTER DATABASE, data v tabulce budou ztracena.
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | VYPNUTO }
ON
Pokud je úroveň izolace transakce nastavena na libovolnou úroveň izolace nižší než SNAPSHOT, všechny interpretované Transact-SQL operace s tabulkami optimalizovanými pro paměť se spouští pod izolací SNAPSHOT. Příklady úrovní izolace nižší než snímky jsou READ COMMITTED nebo READ UNCOMMITTED. Tyto operace se spouští, jestli je úroveň izolace transakce nastavena explicitně na úrovni relace, nebo se implicitně používá výchozí hodnota.
OFF
Nezvyšuje úroveň izolace transakcí pro interpretované operace Transact-SQL v tabulkách optimalizovaných pro paměť.
Pokud je databáze offline, nemůžete změnit stav MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT.
Výchozí hodnota je VYPNUTÁ.
Aktuální nastavení této možnosti lze určit prozkoumáním sloupce is_memory_optimized_elevate_to_snapshot_on v katalogu sys.databases .
< > sql_option ::=
Řídí možnosti dodržování předpisů ANSI na úrovni databáze.
ANSI_NULL_DEFAULT { ON | VYPNUTO }
Určuje výchozí hodnotu, HODNOTU NULL nebo NOT NULL sloupce nebo uživatelem definovaný typ CLR, pro který není explicitně definována v příkazech CREATE TABLE nebo ALTER TABLE. Sloupce definované s omezeními se řídí pravidly omezení bez ohledu na to, co toto nastavení může být.
ON
Výchozí hodnota je NULL.
OFF
Výchozí hodnota není NULL.
Nastavení na úrovni připojení, která jsou nastavená pomocí příkazu SET, přepíší výchozí nastavení na úrovni databáze pro ANSI_NULL_DEFAULT. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_NULL_DEFAULT zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_NULL_DFLT_ON.
V případě kompatibility ANSI nastavení možnosti databáze ANSI_NULL_DEFAULT na HODNOTU ON změní výchozí hodnotu databáze na HODNOTU NULL.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_null_default_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiNullDefault vlastnosti funkce DATABASEPROPERTYEX .
ANSI_NULLS { ON | VYPNUTO }
ON
Všechna porovnání s hodnotou null se vyhodnotí jako UNKNOWN.
OFF
Porovnání hodnot, které nejsou unicode, na hodnotu null se vyhodnotí jako PRAVDA, pokud obě hodnoty mají hodnotu NULL.
Important
V budoucí verzi SQL Serveru bude ANSI_NULLS vždy zapnuté a všechny aplikace, které explicitně nastavily možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro ANSI_NULLS. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_NULLS zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_NULLS.
Important
NASTAVENÍ ANSI_NULLS musí být také při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_nulls_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiNullsEnabled vlastnosti funkce DATABASEPROPERTYEX .
ANSI_PADDING { ON | VYPNUTO }
ON
Řetězce jsou před převodem vycpané na stejnou délku. Také je vycpaný na stejnou délku před vložením do datového typu varchar nebo nvarchar .
OFF
Vkládá prázdné znaky do sloupců varchar nebo nvarchar . Také zanechává nuly v binárních hodnotách, které jsou vloženy do varbinárních sloupců. Hodnoty nejsou vycpané na délku sloupce.
Pokud je toto nastavení vypnuté, ovlivní pouze definici nových sloupců.
Important
V budoucí verzi SQL Serveru budou ANSI_PADDING vždy zapnuté a všechny aplikace, které explicitně nastaví možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Doporučujeme, abyste vždy nastavili ANSI_PADDING na ZAPNUTO. ANSI_PADDING musí být zapnuté při vytváření nebo manipulaci s indexy ve vypočítaných sloupcích nebo indexovaných zobrazeních.
sloupce char(n) a binární(n), které umožňují nulové hodnoty, jsou vyplněny na délku sloupce, když je ANSI_PADDING nastaveno na ON. Koncové prázdné hodnoty a nuly se oříznou, když je ANSI_PADDING vypnutý. sloupce char(n) a binární(n), které neumožňují null, jsou vždy vyplněny na délku sloupce.
Nastavení na úrovni připojení nastavená pomocí příkazu SET přepíší výchozí nastavení na úrovni databáze pro ANSI_PADDING. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_PADDING zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Další informace naleznete v tématu SET ANSI_PADDING.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_padding_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiPaddingEnabled vlastnosti funkce DATABASEPROPERTYEX .
ANSI_WARNINGS { ON | VYPNUTO }
ON
Chyby nebo upozornění se vydávají v případě, že dojde k podmínkám, jako je dělení nulou. Chyby a upozornění se vydávají také v případech, kdy se hodnoty null zobrazují v agregačních funkcích.
OFF
Při výskytu podmínek, jako je například dělení nulou, se nevrací žádná upozornění a hodnoty null se vrátí.
Important
Nastavení ANSI_WARNINGS musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastaveno na hodnotu ZAPNUTO.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro ANSI_WARNINGS. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení ANSI_WARNINGS zapnuto pro relaci. Klienti spustí příkaz při připojení k instanci SQL Serveru. Pro více informací viz SET ANSI_WARNINGS.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_ansi_warnings_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAnsiWarningsEnabled vlastnosti funkce DATABASEPROPERTYEX .
ARITHABORT { ON | VYPNUTO }
ON
Dotaz se ukončí, když během provádění dotazu dojde k chybě přetečení nebo dělení nulou.
OFF
Při výskytu jedné z těchto chyb se zobrazí zpráva s upozorněním. Dotaz, dávka nebo transakce pokračuje v procesu, jako kdyby nedošlo k žádné chybě, i když se zobrazí upozornění.
Important
SET ARITHABORT při vytváření nebo změnách indexů ve počítaných sloupcích nebo indexovaných zobrazeních musí být povolena (ZAPNUTO).
Stav této možnosti můžete zjistit prozkoumáním sloupce is_arithabort_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsArithmeticAbortEnabled vlastnosti funkce DATABASEPROPERTYEX .
COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | VYPNUTO }
ON
Výsledek operace zřetězení je NULL, pokud je oba operandy NULL. Například zřetězení řetězce znaků "This is" a NULL způsobí hodnotu NULL místo hodnoty "This is".
OFF
Hodnota null je považována za prázdný řetězec znaků.
Important
CONCAT_NULL_YIELDS_NULL musí být při vytváření nebo provádění změn indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastavena na hodnotu ZAPNUTO.
V budoucí verzi SQL Serveru bude CONCAT_NULL_YIELDS_NULL vždy zapnuté a všechny aplikace, které explicitně nastavily možnost VYPNUTO, způsobí chybu. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Nastavení na úrovni připojení, která jsou nastavena pomocí příkazu SET, přepíší výchozí nastavení databáze pro CONCAT_NULL_YIELDS_NULL. Ve výchozím nastavení vydávají klienti ODBC a OLE DB nastavení příkazu SET na úrovni připojení CONCAT_NULL_YIELDS_NULL pro relaci při připojování k instanci SQL Serveru. Další informace naleznete v tématu SET CONCAT_NULL_YIELDS_NULL.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_concat_null_yields_null_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsNullConcat vlastnosti funkce DATABASEPROPERTYEX .
NUMERIC_ROUNDABORT { ON | VYPNUTO }
ON
Při ztrátě přesnosti ve výrazu se vygeneruje chyba.
OFF
Ztráta přesnosti nevygeneruje chybovou zprávu a výsledek se zaokrouhlí na přesnost sloupce nebo proměnné, do které se výsledek uloží.
Important
NUMERIC_ROUNDABORT musí být při vytváření nebo změnách indexů ve vypočítaných sloupcích nebo indexovaných zobrazeních nastavena na hodnotu VYPNUTO.
Stav této možnosti můžete určit ve sloupci is_numeric_roundabort_on v zobrazení katalogu sys.databases . Stav lze také zjistit zkoumáním IsNumericRoundAbortEnabled vlastnosti funkce DATABASEPROPERTYEX .
QUOTED_IDENTIFIER { ON | VYPNUTO }
ON
Dvojité uvozovky lze použít k uzavření identifikátorů s oddělovači.
Všechny řetězce oddělené dvojitými uvozovkami se interpretují jako identifikátory objektů. Identifikátory uvozových čísel nemusí dodržovat pravidla Transact-SQL identifikátorů. Můžou to být klíčová slova a můžou obsahovat znaky, které nejsou povolené v identifikátorech Transact-SQL. Pokud je uvozovka (
") součástí identifikátoru, může být reprezentována dvěma uvozovkami ("").OFF
Identifikátory nemohou být v uvozovkách a musí dodržovat všechna pravidla Transact-SQL identifikátorů. Literály můžou být oddělené jednoduchými nebo dvojitými uvozovkami.
SQL Server také umožňuje oddělovat identifikátory hranatými závorkami ([ a ]). Identifikátory v hranatých závorkách je možné vždy použít bez ohledu na to, co je nastavení QUOTED_IDENTIFIER. Další informace naleznete v tématu Identifikátory databáze.
Při vytvoření tabulky je možnost QUOTED IDENTIFIER vždy uložena jako ON v metadatech tabulky. Tato možnost se uloží i v případě, že je tato možnost při vytváření tabulky nastavená na VYPNUTO.
Nastavení na úrovni připojení nastavená pomocí příkazu SET přepíší výchozí nastavení databáze pro QUOTED_IDENTIFIER. Klienti ODBC a OLE DB ve výchozím nastavení vydávají nastavení příkazu SET na úrovni připojení QUOTED_IDENTIFIER zapnuto. Klienti spustí příkaz při připojení k instanci SQL Serveru. Další informace naleznete v tématu SET QUOTED_IDENTIFIER.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_quoted_identifier_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsQuotedIdentifiersEnabled vlastnosti funkce DATABASEPROPERTYEX .
RECURSIVE_TRIGGERS { ON | VYPNUTO }
ON
Je povoleno rekurzivní aktivaci triggerů AFTER.
OFF
Stav této možnosti můžete zjistit prozkoumáním sloupce
is_recursive_triggers_onv katalogu sys.databases . Stav lze také zjistit zkoumánímIsRecursiveTriggersEnabledvlastnosti funkce DATABASEPROPERTYEX .Note
Pokud je RECURSIVE_TRIGGERS nastavená na VYPNUTO, zabrání se pouze přímá rekurze. Pokud chcete zakázat nepřímou rekurzi, musíte také nastavit možnost serveru vnořených triggerů na hodnotu 0.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_recursive_triggers_on v katalogu sys.databases nebo IsRecursiveTriggersEnabled vlastnosti funkce DATABASEPROPERTYEX .
< > target_recovery_time_option ::=
target_recovery_time_option není podporováno na Azure SQL Managed Instance.
Určuje frekvenci nepřímých kontrolních bodů pro jednotlivé databáze. Od SQL Server 2016 (13.x) je výchozí hodnota pro nové databáze 1 minuta, což znamená, že databáze používá nepřímé kontrolní body. Ve starších verzích je výchozí hodnota 0, což značí, že databáze používá automatické kontrolní body, jejichž frekvence závisí na nastavení intervalu obnovení instance serveru. Microsoft doporučuje pro většinu systémů 1 minutu.
< ukončení >WITH::=
Určuje, kdy se mají vrátit neúplné transakce při přechodu databáze z jednoho stavu do druhého. Pokud je klauzule ukončení vynechána, příkaz ALTER DATABASE počká na neomezenou dobu, pokud je v databázi nějaký zámek. Lze zadat pouze jednu klauzuli ukončení a řídí se klauzulí SET.
Note
Ne všechny možnosti databáze používají klauzuli< ukončení >WITH. Pro více informací viz tabulka v sekci "Poznámky" v sekci "Poznámky".
ROLLBACK PO celém čísle [SEKUNDY] | OKAMŽITÉ VRÁCENÍ
Určuje, jestli se má vrátit zpět po zadaném počtu sekund nebo okamžitě.
NO_WAIT
Určuje, že požadavek selže, pokud požadovaný stav databáze nebo změna možnosti nelze dokončit okamžitě. Dokončení okamžitě znamená, že nečeká na transakce, které se potvrdí nebo vrátí zpět samy.
< > temporal_history_retention ::=
TEMPORAL_HISTORY_RETENTION { ON | VYPNUTO }
Ve výchozím nastavení je zapnuto, ale také automaticky nastaveno na VYPNUTO po operaci obnovení k určitému bodu v čase. Další informace, včetně toho, jak toto nastavení povolit, najdete v tématu Jak nakonfigurovat zásady uchovávání informací.
ON
Default. Povolí zásady uchovávání dočasných tabulek. Další informace najdete v tématu Správa uchovávání historických dat v dočasných tabulkách s systémovou verzí.
OFF
Neprovádějte dočasné historické zásady uchovávání informací.
Nastavení možností
Pro získání aktuálních nastavení databázových možností použijte katalogový pohled sys.databases nebo DATABASEPROPERTYEX
Po nastavení možnosti databáze se nové nastavení projeví okamžitě.
Výchozí hodnoty pro libovolnou z možností databáze pro všechny nově vytvořené databáze můžete změnit. Uděláte to tak, že v systémové databázi model změníte příslušnou možnost databáze.
Examples
A. Povolení izolace snímků v databázi
Následující příklad umožňuje architekturu izolace snímků pro databázi AdventureWorks2025.
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
Sada výsledků ukazuje, že je povolená architektura izolace snímků.
| name | snapshot_isolation_state | description |
|---|---|---|
| [database_name] | 1 | ON |
B. Povolení, úprava nebo zakázání sledování změn
Následující příklad umožňuje sledování změn pro databázi AdventureWorks2025 a nastaví dobu uchovávání na 2 dnů.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);
Následující příklad ukazuje, jak změnit dobu uchovávání na 3 dnů.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);
Následující příklad ukazuje, jak zakázat sledování změn pro AdventureWorks2025 databázi.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
C. Povolení úložiště dotazů
Následující příklad povolí úložiště dotazů a nakonfiguruje parametry úložiště dotazů.
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. Povolení úložiště dotazů se statistikami čekání
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
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. Povolení úložiště dotazů s vlastními možnostmi zásad zachycení
Následující příklad povolí úložiště dotazů a nakonfiguruje jeho parametry.
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
)
);
Související obsah
- Statistics
- DATABASEPROPERTYEX (Transact-SQL)
- sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- úroveň kompatibility ALTER DATABASE
- Zrcadlení databáze ALTER DATABASE
- Vytvořit databázi
- povolení a zakázání funkce Change Tracking (SQL Server)
-
DROP DATABASE (Transact-SQL) - NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ (Transact-SQL)
- sp_configure
- osvědčené postupy pro monitorování úloh pomocí úložiště dotazů
* Azure Synapse
Analýza *
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 }
}
Arguments
database_name
Název databáze, která se má upravit.
< > auto_option ::=
Řídí automatické možnosti.
AUTO_CREATE_STATISTICS { ON | VYPNUTO }
ON
Optimalizátor dotazů podle potřeby vytváří statistiky pro jednotlivé sloupce v predikátech dotazů, aby se zlepšily plány dotazů a výkon dotazů. Tyto statistiky s jedním sloupcem se vytvoří, když Optimalizátor dotazů zkompiluje dotazy. Statistiky s jedním sloupcem se vytvářejí jenom u sloupců, které ještě nejsou prvním sloupcem existujícího objektu statistiky.
Výchozí hodnota je ZAPNUTÁ. Pro většinu databází doporučujeme použít výchozí nastavení.
OFF
Optimalizátor dotazů při kompilaci dotazů nevytváří statistiky o jednotlivých sloupcích v predikátech dotazů. Nastavením této možnosti na vypnuto může dojít k neoptimálním plánům dotazů a snížení výkonu dotazů.
Tento příkaz musí být spuštěn při připojení k uživatelské databázi.
Stav této možnosti můžete zjistit prozkoumáním sloupce is_auto_create_stats_on v katalogu sys.databases . Stav lze také zjistit zkoumáním IsAutoCreateStatistics vlastnosti funkce DATABASEPROPERTYEX .
Pro více informací viz sekce "Využití databázových statistikových možností" v sekci Statistika.
< > db_encryption_option ::=
Řídí stav šifrování databáze.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO }
ON
Nastaví databázi, která se má šifrovat.
OFF
Nastaví databázi tak, aby nebyla šifrovaná.
Další informace o šifrování databáze najdete v tématu transparentního šifrování dat (TDE)a transparentního šifrování dat pro službu Azure SQL Database, azure SQL Managed Instance aAzure Synapse Analytics.
Pokud je šifrování povolené na úrovni databáze, všechny skupiny souborů se šifrují. Všechny nové skupiny souborů dědí zašifrovanou vlastnost. Pokud jsou některé skupiny souborů v databázi nastaveny jen pro čtení, operace šifrování databáze selže.
Stav šifrování databáze a stav kontroly šifrování můžete zobrazit pomocí zobrazení dynamické správy sys.dm_database_encryption_keys.
< > query_store_option ::=
Určuje, jestli je v tomto datovém skladu povolené úložiště dotazů.
QUERY_STORE { ON | VYPNUTO }
ON
Povolí úložiště dotazů.
OFF
Zakáže úložiště dotazů. Vypnuto je výchozí hodnota.
Note
Pro Azure Synapse Analytics musíte spustit ALTER DATABASE SET QUERY_STORE z uživatelské databáze. Provádění příkazu z jiné instance datového skladu se nepodporuje.
Note
Pro Azure Synapse Analytics je možné úložiště dotazů povolit jako na jiných platformách, ale další možnosti konfigurace se nepodporují.
< > result_set_caching_option ::=
platí pro: Azure Synapse Analytics
Určuje, zda je výsledek dotazu uložen v mezipaměti v databázi.
RESULT_SET_CACHING { ON | VYPNUTO }
ON
Určuje, že sady výsledků dotazu vrácené z této databáze jsou uloženy v mezipaměti v databázi.
OFF
Určuje, že sady výsledků dotazu vrácené z této databáze nejsou uloženy v mezipaměti v databázi.
Tento příkaz musí být spuštěn při připojení k databázi master. Změna tohoto nastavení databáze se projeví okamžitě. Náklady na úložiště se účtují ukládáním sad výsledků dotazů do mezipaměti. Po zakázání ukládání výsledků do mezipaměti databáze se z úložiště Azure Synapse okamžitě odstraní dříve trvalá mezipaměť výsledků.
Spuštěním tohoto příkazu zkontrolujte konfiguraci ukládání do mezipaměti sady výsledků databáze. Pokud je ukládání sady výsledků do mezipaměti zapnuté, is_result_set_caching_on vrátí hodnotu 1.
SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>
Spuštěním tohoto příkazu zkontrolujte, jestli byl dotaz proveden pomocí výsledku uloženého v mezipaměti. Sloupec result_cache_hit vrátí hodnotu 1 pro dosažení mezipaměti, 0 pro chybějící mezipaměť a záporné hodnoty z důvodů, proč se nepoužila mezipaměť sady výsledků. Podrobnosti sys.dm_pdw_exec_requests získejte.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Note
Ukládání do mezipaměti sady výsledků by se nemělo používat ve spojení s DECRYPTBYKEY. Pokud je potřeba tuto kryptografickou funkci použít, ujistěte se, že je v době spuštění zakázané ukládání do mezipaměti (buď na úrovni relace , nebo na úrovni databáze).
Important
Operace pro vytvoření mezipaměti sady výsledků a načtení dat z mezipaměti probíhají na řídicím uzlu instance datového skladu. Pokud je ukládání sad výsledků do mezipaměti zapnuté, můžou spuštěné dotazy, které vrací velkou sadu výsledků (například >1 milion řádků), způsobit vysoké využití procesoru na řídicím uzlu a zpomalit celkovou odpověď na dotazy v instanci. Tyto dotazy se běžně používají při zkoumání dat nebo operacích ETL. Aby se zabránilo stresu řídicího uzlu a problému s výkonem, uživatelé by před spuštěním těchto typů dotazů měli vypnout ukládání sad výsledků do mezipaměti v databázi.
Podrobnosti o ladění výkonu s ukládáním sady výsledků do mezipaměti najdete v pokyny k ladění výkonu.
Permissions
Aby uživatel nastavil možnost RESULT_SET_CACHING, potřebuje přihlášení objektu zabezpečení na úrovni serveru (ten vytvořený procesem zřizování) nebo být členem role databáze dbmanager.
< > snapshot_option ::=
platí pro: Azure Synapse Analytics
Řídí úroveň izolace transakcí databáze.
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
ON
Povolí možnost READ_COMMITTED_SNAPSHOT na úrovni databáze.
OFF
Vypněte možnost READ_COMMITTED_SNAPSHOT na úrovni databáze.
Tento příkaz musí být spuštěn při připojení k databázi master. Zapnutí nebo vypnutí READ_COMMITTED_SNAPSHOT pro uživatelskou databázi ukončí všechna otevřená připojení k této databázi. Tuto změnu byste měli provést během časového období údržby databáze nebo počkat, dokud nedojde k žádnému aktivnímu připojení k databázi s výjimkou připojení, které spouští příkaz ALTER DATABASE. Databáze nemusí být v režimu jednoho uživatele. Změna nastavení READ_COMMITTED_SNAPSHOT na úrovni relace se nepodporuje. Chcete-li ověřit toto nastavení pro databázi, zkontrolujte sloupec is_read_committed_snapshot_on v sys.databases.
V databázi s povolenou READ_COMMITTED_SNAPSHOT mohou dotazy zaznamenat pomalejší výkon kvůli kontrole verzí, pokud existuje více datových verzí. Dlouhotrvající transakce můžou také způsobit zvětšení velikosti databáze. K tomuto problému dochází v případě, že dojde ke změnám dat těmito transakcemi, které blokují vyčištění verze.
Permissions
Aby uživatel nastavil možnost READ_COMMITTED_SNAPSHOT, potřebuje pro databázi oprávnění ALTER.
Examples
Kontrola nastavení statistiky pro databázi
SELECT name, is_auto_create_stats_on FROM sys.databases
Povolení úložiště dotazů pro databázi
ALTER DATABASE [database_name]
SET QUERY_STORE = ON;
Povolení ukládání sad výsledků do mezipaměti pro databázi
-- Run this command when connecting to the MASTER database
ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;
Kontrola nastavení ukládání do mezipaměti sady výsledků pro databázi
SELECT name, is_result_set_caching_on
FROM sys.databases;
Povolení možnosti Read_Committed_Snapshot pro databázi
Spusťte tento příkaz při připojování k databázi master.
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;
Související obsah
Azure Synapse
analýzy
Microsoft Fabric Data Warehouse
Datový sklad Microsoft Fabric
Ke správě služby Microsoft Fabric Warehouse použijte ALTER DATABASE ... SET.
Syntax
-- Microsoft Fabric Data Warehouse
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
| <timestamp>
| <result_set_caching>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
<timestamp> ::=
{
TIMESTAMP = {CURRENT_TIMESTAMP | 'YYYY-MM-DDTHH:MM:SS.SS' }
}
<result_set_caching> ::=
{
RESULT_SET_CACHING { ON | OFF }
}
Arguments
DATA_LAKE_LOG_PUBLISHING
Pozastaví nebo obnoví publikování protokolů Delta Lake. Další informace najdete v tématu o publikování protokolů Delta Lake.
VORDER
Může zakázat chování V-Order. Další informace najdete v tématu Zakázání chování objednávky V ve skladu.
TIMESTAMP
Aktualizuje časové razítko pro existující snímek skladu v datovém skladu Fabric. Časové razítko musí být zadané v časovém pásmu UTC. Pro více informací viz Skladové snímky.
RESULT_SET_CACHING
Povolí nebo zakáže ukládání sady výsledků do mezipaměti (Preview) pro aktuální položku. Další informace naleznete v tématu Ukládání sady výsledků do mezipaměti.
Permissions
Uživatel musí být členem role Správce, Člen nebo Přispěvatel v pracovním prostoru Prostředky infrastruktury.
Examples
A. Pozastavení publikování protokolů Delta Lake
Následující příkaz T-SQL pozastaví publikování protokolu Delta Lake v kontextu aktuálního skladu.
ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;
Chcete-li zkontrolovat aktuální stav publikování logů Delta Lake ve všech skladech vašeho pracovního prostoru, použijte následující T-SQL kód k dotazování sys.databases v novém dotazovacím okně:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;
B. Nastavení a kontrola ukládání sad výsledků do mezipaměti (Preview)
Následující příkaz T-SQL umožní položce MyDataWarehouse začít vytvářet a používat mezipaměť sady výsledků (Preview) pro příslušné SELECT dotazy. Další informace naleznete v tématu Ukládání sady výsledků do mezipaměti.
ALTER DATABASE [MyDataWarehouse] SET RESULT_SET_CACHING ON;
Sloupec is_result_set_caching_on ze sys.databases lze pak zkontrolovat, zda bylo zapnuto cache (preview) výsledkové sady.
SELECT [name], [is_result_set_caching_on] FROM sys.databases;
Související obsah
- Co je datové sklady v Microsoft Fabric?
- protokoly Delta Lake ve službě Warehouse v Microsoft Fabric
- vysvětlení pořadí virtuálních objednávek pro Microsoft Fabric Warehouse