Možnosti ALTER DATABASE SET (Transact-SQL)
Nastaví možnosti databáze v Microsoft SQL Serveru, Azure SQL Database a Azure Synapse Analytics. Další možnosti ALTER DATABASE naleznete v tématu ALTER DATABASE.
Poznámka
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.
Poznámka
Mnoho možností sady databází je možné nakonfigurovat pro aktuální relaci pomocí příkazů SET a aplikace je často konfigurují 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>
| <database_mirroring_option>
| <date_correlation_optimization_option>
| <db_encryption_option>
| <db_state_option>
| <db_update_option>
| <db_user_access_option>
| <delayed_durability_option>
| <external_access_option>
| FILESTREAM ( <FILESTREAM_option> )
| <HADR_options>
| <mixed_page_allocation_option>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <remote_data_archive_option>
| <persistent_log_buffer_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <suspend_for_snapshot_backup>
| <target_recovery_time_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
}
;
<accelerated_database_recovery> ::=
{
ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
[ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ];
}
<auto_option> ::=
{
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }
| AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<automatic_tuning_option> ::=
{
AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}
<change_tracking_option> ::=
{
CHANGE_TRACKING
{
= OFF
| = ON [ ( <change_tracking_option_list > [,...n] ) ]
| ( <change_tracking_option_list> [,...n] )
}
}
<change_tracking_option_list> ::=
{
AUTO_CLEANUP = { ON | OFF }
| CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}
<containment_option> ::=
CONTAINMENT = { NONE | PARTIAL }
<cursor_option> ::=
{
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }
}
<database_mirroring_option>
ALTER DATABASE Database Mirroring
<date_correlation_optimization_option> ::=
DATE_CORRELATION_OPTIMIZATION { ON | OFF }
<db_encryption_option> ::=
ENCRYPTION { ON | OFF | SUSPEND | RESUME }
<db_state_option> ::=
{ ONLINE | OFFLINE | EMERGENCY }
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<delayed_durability_option> ::=
DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }
<external_access_option> ::=
{
DB_CHAINING { ON | OFF }
| TRUSTWORTHY { ON | OFF }
| DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}
<FILESTREAM_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
| DIRECTORY_NAME = <directory_name>
}
<HADR_options> ::=
ALTER DATABASE SET HADR
<mixed_page_allocation_option> ::=
MIXED_PAGE_ALLOCATION { OFF | ON }
<parameterization_option> ::=
PARAMETERIZATION { SIMPLE | FORCED }
<query_store_options> ::=
{
QUERY_STORE
{
= OFF [ ( FORCED ) ]
| = ON [ ( <query_store_option_list> [,...n] ) ]
| ( < query_store_option_list> [,...n] )
| CLEAR [ ALL ]
}
}
<query_store_option_list> ::=
{
OPERATION_MODE = { READ_WRITE | READ_ONLY }
| CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
| DATA_FLUSH_INTERVAL_SECONDS = number
| MAX_STORAGE_SIZE_MB = number
| INTERVAL_LENGTH_MINUTES = number
| SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
| QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
| MAX_PLANS_PER_QUERY = number
| WAIT_STATS_CAPTURE_MODE = { ON | OFF }
| QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}
<query_capture_policy_option_list> :: =
{
STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
| EXECUTION_COUNT = number
| TOTAL_COMPILE_CPU_TIME_MS = number
| TOTAL_EXECUTION_CPU_TIME_MS = number
}
<recovery_option> ::=
{
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }
| PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}
<remote_data_archive_option> ::=
{
REMOTE_DATA_ARCHIVE =
{
ON ( SERVER = <server_name>,
{
CREDENTIAL = <db_scoped_credential_name>
| FEDERATED_SERVICE_ACCOUNT = ON | OFF
}
)
| OFF
}
}
<persistent_log_buffer_option> ::=
{
PERSISTENT_LOG_BUFFER
{
= ON (DIRECTORY_NAME= 'path-to-directory-on-a-DAX-volume')
| = OFF
}
}
<service_broker_option> ::=
{
ENABLE_BROKER
| DISABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
| HONOR_BROKER_PRIORITY { ON | OFF }
}
<snapshot_option> ::=
{
ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
| READ_COMMITTED_SNAPSHOT { ON | OFF }
| MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}
<sql_option> ::=
{
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }
}
<suspend_for_snapshot_backup> ::=
SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]
<target_recovery_time_option> ::=
TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }
<termination>::=
{
ROLLBACK AFTER number [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT
}
<temporal_history_retention> ::=
TEMPORAL_HISTORY_RETENTION { ON | OFF }
<data_retention_policy> ::=
DATA_RETENTION { ON | OFF }
Argumenty
database_name
Název databáze, která se má upravit.
SOUČASNÝ
platí pro: SQL Server (počínaje SQL Serverem 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í pro: SQL Server (počínaje SQL Serverem 2019 (15.x))
PovolíPRIMARY
. Další informace najdete v tématu Správa zrychleného obnovení databáze.
<auto_option> ::=
Řídí automatické možnosti.
AUTO_CLOSE { ON | VYPNUTO }
NA
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.
PRYČ
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.
Poznámka
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 určit prozkoumáním sloupce is_auto_close_on
v zobrazení katalogu sys.databases nebo vlastností IsAutoClose
funkce DATABASEPROPERTY EX.
Pokud je AUTO_CLOSE nastavena na hodnotu ZAPNUTO, některé sloupce v zobrazení katalogu sys.databases a funkce DATABASEPROPERTYEX vrátí hodnotu NULL, protože databáze není k dispozici k načtení 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 }
NA
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í.
PRYČ
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 určit prozkoumáním sloupce is_auto_create_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoCreateStatistics
vlastnosti DATABASEPROPERTYEX.
Další informace najdete v části "Použití možností statistiky pro celou databázi" v Statistika.
PŘÍRŮSTKOVÉ = ZAPNUTO | PRYČ
platí pro: SQL Server (počínaje SQL Serverem 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 CREATE STATISTICS.
AUTO_SHRINK { ON | VYPNUTO }
NA
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.
PRYČ
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 určit prozkoumáním sloupce is_auto_shrink_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoShrink
vlastnosti DATABASEPROPERTYEX.
Poznámka
Možnost AUTO_SHRINK není dostupná v databázi s omezením.
AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
NA
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ě.
PRYČ
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 určit prozkoumáním sloupce is_auto_update_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoUpdateStatistics
vlastnosti DATABASEPROPERTYEX.
Další informace najdete v části "Použití možností statistiky pro celou databázi" v Statistika.
AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
NA
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ě.
PRYČ
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.
Poznámka
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 určit prozkoumáním sloupce is_auto_update_stats_async_on
v zobrazení katalogu sys.databases.
Další informace, které popisují, kdy použít synchronní nebo asynchronní statistiky aktualizace, naleznete v části Možnosti statistiky v Statistika.
<automatic_tuning_option> ::=
platí pro: SQL Server (počínaje SQL Serverem 2017 (14.x))
Povolí nebo zakáže FORCE_LAST_GOOD_PLAN
možnost automatického ladění. Stav této možnosti můžete zobrazit v zobrazení sys.database_automatic_tuning_options
.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ZAPNUTO | VYPNUTO }
VÝCHOZÍ
Výchozí hodnota pro SQL Server je VYPNUTÁ.
NA
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 úložiště dotazů není povolené nebo pokud úložiště dotazů není v režimu pro čtení i zápis.
PRYČ
Databázový stroj hlásí potenciální regrese výkonu dotazů způsobené změnami plánu dotazů v zobrazení sys.dm_db_tuning_recommendations. 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í pro: 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 části Příklady dále v tomto článku.
NA
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 }
NA
Informace o sledování změn se po zadané době uchovávání automaticky odeberou.
PRYČ
Data sledování změn se z databáze automaticky neodeberou.
CHANGE_RETENTION = retention_period { DAYS | HODINY | MINUTES }
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 součást doby uchovávání.
Výchozí doba uchovávání je 2 dny. Minimální doba uchovávání je 1 minuta. Výchozí typ uchovávání 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í pro: SQL Server (počínaje SQL Serverem 2012 (11.x))
Řídí možnosti zahrnutí databáze.
ZAHRNUTÍ = { NONE | PARTIAL}
ŽÁDNÝ
Databáze není obsažená databáze.
ČÁSTEČNÝ
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 Databáze s omezením.
<cursor_option> ::=
Řídí možnosti kurzoru.
CURSOR_CLOSE_ON_COMMIT { ON | VYPNUTO }
NA
Všechny kurzory otevřené při potvrzení nebo vrácení transakce se zavře.
PRYČ
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. Další informace naleznete v tématu SET CURSOR_CLOSE_ON_COMMIT.
Stav této možnosti můžete určit prozkoumáním sloupce is_cursor_close_on_commit_on
v zobrazení katalogu sys.databases nebo vlastností IsCloseCursorsOnCommitEnabled
funkce DATABASEPROPERTY EX.
CURSOR_DEFAULT { LOCAL | GLOBAL }
platí pro: SQL Server
Určuje, zda obor kurzoru používá MÍSTNÍ nebo GLOBÁLNÍ.
MÍSTNÍ
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.
GLOBÁLNÍ
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í. Další informace naleznete v tématu DECLARE CURSOR.
Stav této možnosti můžete určit prozkoumáním sloupce is_local_cursor_default
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsLocalCursorsDefault
vlastnosti 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í.
NA
Výchozí. 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í.
PRYČ
Neprovádějte dočasné historické zásady uchovávání informací.
<data_retention_policy> ::=
platí jenom pro: Azure SQL Edge.
DATA_RETENTION { ON | VYPNUTO }
NA
Umožňuje vyčištění na základě zásad uchovávání dat v databázi.
PRYČ
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 }
NA
SQL Server udržuje statistiku korelace, kde omezení CIZÍ KLÍČ propojuje všechny dvě tabulky v databázi a tabulky mají sloupce data a času.
PRYČ
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 zobrazení katalogu sys.databases.
<db_encryption_option> ::=
Řídí stav šifrování databáze.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO | SUSPEND | RESUME }
NA
Nastaví databázi, která se má šifrovat.
PRYČ
Nastaví databázi tak, aby nebyla šifrovaná.
PŘERUŠIT
platí pro: SQL Server (počínaje SQL Serverem 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.
POKRAČOVAT
platí pro: SQL Server (počínaje SQL Serverem 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 kontroly šifrování můžete zobrazit pomocí sys.dm_database_encryption_keys zobrazení 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í.
NOUZOVÉ
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 určit prozkoumáním sloupců state
a state_desc
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním Status
vlastnosti 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.
Poznámka
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
. Další informace o statistikách pro databázi jen pro čtení naleznete v tématu Statistika.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.
Poznámka
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. Pokud chcete zobrazit stav této možnosti, zadejte dotaz 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í statistické úlohy dotazováním sys.dm_exec_background_job_queue zobrazení dynamické správy.
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 určit prozkoumáním sloupce user_access
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním UserAccess
vlastnosti DATABASEPROPERTYEX.
<delayed_durability_option> ::=
platí pro: SQL Server (počínaje SQL Serverem 2014 (12.x))
Určuje, zda transakce potvrdí plně trvalé nebo zpožděné trvalé.
INVALIDNÍ
Všechny transakce následující
SET DISABLED
jsou plně odolné. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.POVOLENÝ
Všechny transakce následující
SET ALLOWED
jsou buď plně odolné nebo zpožděné, v závislosti na možnosti stálosti nastavené v atomovém bloku nebo příkazu commit.VYNUCENÝ
Všechny transakce následující
SET FORCED
jsou 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 }
NA
Databáze může být zdrojem nebo cílem řetězu vlastnictví mezi databázemi.
PRYČ
Databáze se nemůže účastnit řetězení vlastnictví mezi databázemi.
Důležitý
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
, model
a tempdb
.
Stav této možnosti můžete určit prozkoumáním sloupce is_db_chaining_on
v zobrazení katalogu sys.databases.
DŮVĚRYHODNÉ { ON | VYPNUTO }
NA
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.
PRYČ
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 určit prozkoumáním sloupce is_trustworthy_on
v zobrazení katalogu sys.databases.
DEFAULT_FULLTEXT_LANGUAGE
platí pro: SQL Server (počínaje SQL Serverem 2012 (11.x))
Určuje výchozí hodnotu jazyka pro fulltextové indexované sloupce.
Důležitý
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í pro: SQL Server (počínaje SQL Serverem 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. Seznam přijatelných názvů jazyků a aliasů naleznete v tématu 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í pro: SQL Server (počínaje SQL Serverem 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í pro: SQL Server (počínaje SQL Serverem 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í pro: SQL Server (počínaje SQL Serverem 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í pro: SQL Server (počínaje SQL Serverem 2012 (11.x))
Řídí nastavení pro FileTables.
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
PRYČ
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.
PLNÝ
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í pro: SQL Server (počínaje SQL Serverem 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 }
PRYČ
Databáze vždy vytváří počáteční stránky pomocí jednotných rozsahů. Vypnuto je výchozí hodnota.
NA
Databáze může vytvářet počáteční stránky pomocí smíšených rozsahů.
Toto nastavení je zapnuté pro všechny systémové databáze. Systémová databáze tempdb
je jediná systémová databáze, která podporuje funkci VYPNUTO.
<PARAMETERIZATION_option> ::=
Řídí možnost parametrizace. Další informace o parametrizaci naleznete v Průvodce architekturou zpracování dotazů.
PARAMETRIZACE { SIMPLE | FORCED }
JEDNODUCHÝ
Dotazy jsou parametrizovány na základě výchozího chování databáze.
VYNUCENÝ
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 zobrazení katalogu sys.databases.
<query_store_options> ::=
platí pro: SQL Server (počínaje SQL Serverem 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ů.
NA
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 povolení úložiště dotazů s vlastními možnostmi zásad zachycení najdete v části Příklady dále 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.
Poznámka
Úložiště dotazů nelze ve službě Azure SQL Database zakázat. Provádění
ALTER DATABASE [database] SET QUERY_STORE = OFF
vrátí upozornění'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.CLEAR [ ALL ]
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)). Počínaje SQL Serverem 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.
Důležitý
Pokud si myslíte, že zachytávání úloh vyžaduje více než 10 GB místa na disku, měli byste pravděpodobně znovu zvážit a optimalizovat úlohy tak, aby opakovaně používaly plány dotazů (například pomocí vynucené parametrizacenebo upravte konfigurace úložiště dotazů.
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í na základě velikosti se automaticky aktivuje, když velikost na disku dosáhne 90% MAX_STORAGE_SIZE_MB. Čištění na základě velikosti nejprve odebere nejméně nákladné a nejstarší dotazy. Zastaví se přibližně na 80% MAX_STORAGE_SIZE_MB. Tato hodnota je výchozí konfigurační hodnotou.
PRYČ
Č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.
Poznámka
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.
VŠICHNI
Zachytává všechny dotazy. ALL je výchozí hodnota konfigurace 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.
ŽÁDNÝ
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ů.
ZVYK
platí pro: SQL Server (počínaje SQL Serverem 2019 (15.x))
Umožňuje kontrolu nad možnostmi QUERY_CAPTURE_POLICY. 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í pro: SQL Server (počínaje SQL Serverem 2017 (14.x))
Určuje, jestli se zachytávají statistiky čekání na dotaz.
NA
Zachytí se informace o statistikách čekání na dotaz. Tato hodnota je výchozí konfigurační hodnotou.
PRYČ
Informace o statistikách čekání na dotaz se nezaznamenají.
<query_capture_policy_option_list> :: =
platí pro: SQL Server (počínaje SQL Serverem 2019 (15.x))
Řídí možnosti zásad úložiště dotazů zachycení. 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 { DAYS | 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 = celočíselná
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 = celočíselná
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 = celočíselná
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.
PLNÝ
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. Další informace naleznete v tématu modely obnovení.
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í. Další informace naleznete v tématu modely obnovení.
JEDNODUCHÝ
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. Další informace naleznete v tématu modely obnovení.
Důležitý
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
. Další informace o výběru vhodného modelu obnovení naleznete v tématu Modely obnovení.
Stav této možnosti můžete určit prozkoumáním sloupců recovery_model
a recovery_model_desc
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním Recovery
vlastnosti DATABASEPROPERTYEX.
TORN_PAGE_DETECTION { ON | VYPNUTO }
NA
Databázový stroj může zjistit neúplné stránky.
PRYČ
Databázový stroj nedetekuje neúplné stránky.
Důležitý
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 | NONE }
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.
KONTROLNÍ SOUČET
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.
ŽÁDNÝ
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í hodnota 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.
Poznámka
V dřívějších verzích SQL Serveru je možnost PAGE_VERIFY databáze nastavená na NONE pro
tempdb
databázi a nelze ji upravit. Počínaje sql Serverem 2008 (10.0.x) je výchozí hodnota pro databázitempdb
CHECKSUM 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 protempdb
databá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. Další informace o možnostech obnovení naleznete v tématu argumenty RESTORE. 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 prozkoumáním sloupce page_verify_option
v zobrazení sys.databases katalogu nebo vlastností IsTornPageDetectionEnabled
DATABASEPROPERTYEX funkce.
<remote_data_archive_option> ::=
platí pro: SQL Server (počínaje SQL Serverem 2016 (13.x))
Povolí nebo zakáže funkci Stretch Database pro databázi. Další informace najdete v tématu Stretch Database.
Důležitý
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Č
NA
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_owner
oprávnění. Vyžaduje oprávněnídb_owner
aCONTROL DATABASE
k 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
.CREDENTIAL = <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
dbmanager
nebosysadmin
na 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.
PRYČ
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 spuštěno doručování zpráv a příznak is_broker_enabled
je v zobrazení katalogu sys.database s nastaven na hodnotu true. 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.
Poznámka
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ávy je zastaveno a příznak is_broker_enabled
je nastaven na false v zobrazení 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 }
NA
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.
PRYČ
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 hlášeno ve sloupci is_broker_priority_honored
v zobrazení katalogu sys.databases.
<snapshot_option> ::=
Vypočítá úroveň izolace transakce.
ALLOW_SNAPSHOT_ISOLATION { ON | VYPNUTO }
NA
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á.
PRYČ
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 příkaz ALTER DATABASE nevrací rychle, použijte sys.dm_tran_active_snapshot_database_transactions k určení, zda existují dlouhotrvající 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 označuje stav transakcí izolace 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
, msdb
a 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 zobrazení katalogu sys.databases.
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
NA
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.
PRYČ
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
, tempdb
nebo 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 zobrazení katalogu sys.databases.
Varování
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í pro: SQL Server (počínaje SQL Serverem 2014 (12.x))
NA
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.
PRYČ
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 zobrazení 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.
NA
Výchozí hodnota nedefinovaného sloupce je NULL.
PRYČ
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. Další informace naleznete v tématu 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 určit prozkoumáním sloupce is_ansi_null_default_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiNullDefault
vlastnosti DATABASEPROPERTYEX.
ANSI_NULLS { ON | VYPNUTO }
NA
Všechna porovnání s hodnotou null se vyhodnotí jako UNKNOWN.
PRYČ
Porovnání hodnot, které nejsou unicode, na hodnotu null se vyhodnotí jako PRAVDA, pokud obě hodnoty mají hodnotu NULL.
Důležitý
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. Další informace naleznete v tématu SET ANSI_NULLS.
Důležitý
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 určit prozkoumáním sloupce is_ansi_nulls_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiNullsEnabled
vlastnosti DATABASEPROPERTYEX.
ANSI_PADDING { ON | VYPNUTO }
NA
Řetězce jsou před převodem vycpané na stejnou délku. Před vložením do varchar nebo nvarchar datového typu se také vložil na stejnou délku.
PRYČ
Vloží koncové mezery v hodnotách znaků do varchar nebo nvarchar sloupců. Také ponechá koncové nuly v binárních hodnotách, které se vloží do varbinárních sloupců. Hodnoty nejsou vycpané na délku sloupce.
Pokud je toto nastavení vypnuté, ovlivní pouze definici nových sloupců.
Důležitý
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.
znak(n) a binární (n) sloupce, které umožňují vložit hodnoty null na délku sloupce, pokud je ANSI_PADDING nastavena na zapnuto. Koncové prázdné hodnoty a nuly se oříznou, když je ANSI_PADDING vypnutý. char(n) a binary(n) sloupce, které neumožňují, jsou vždy vycpané 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 určit prozkoumáním sloupce is_ansi_padding_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiPaddingEnabled
vlastnosti DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | VYPNUTO }
NA
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.
PRYČ
Při výskytu podmínek, jako je například dělení nulou, se nevrací žádná upozornění a hodnoty null se vrátí.
Důležitý
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. Další informace naleznete v tématu SET ANSI_WARNINGS.
Stav této možnosti můžete určit prozkoumáním sloupce is_ansi_warnings_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiWarningsEnabled
vlastnosti DATABASEPROPERTYEX.
ARITHABORT { ON | VYPNUTO }
NA
Dotaz se ukončí, když během provádění dotazu dojde k chybě přetečení nebo dělení nulou.
PRYČ
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í.
Důležitý
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 určit prozkoumáním sloupce is_arithabort_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsArithmeticAbortEnabled
vlastnosti DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | VYPNUTO }
NA
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".
PRYČ
Hodnota null je považována za prázdný řetězec znaků.
Důležitý
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 určit prozkoumáním sloupce is_concat_null_yields_null_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsNullConcat
vlastnosti DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | VYPNUTO }
NA
Při ztrátě přesnosti ve výrazu se vygeneruje chyba.
PRYČ
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ží.
Důležitý
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 můžete také určit prozkoumáním IsNumericRoundAbortEnabled
vlastnosti DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | VYPNUTO }
NA
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 (""
).PRYČ
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 určit prozkoumáním sloupce is_quoted_identifier_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsQuotedIdentifiersEnabled
vlastnosti DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | VYPNUTO }
NA
Je povoleno rekurzivní aktivaci triggerů AFTER.
PRYČ
Stav této možnosti můžete určit prozkoumáním sloupce
is_recursive_triggers_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumánímIsRecursiveTriggersEnabled
vlastnosti DATABASEPROPERTYEX.
Poznámka
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 určit prozkoumáním sloupce is_recursive_triggers_on
v zobrazení katalogu sys.databases nebo vlastností IsRecursiveTriggersEnabled
funkce DATABASEPROPERTY EX.
<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 | OFF }
Pozastaví nebo pozastaví databáze. Výchozí vypnuto.
MODE = COPY_ONLY
Volitelný. Používá COPY_ONLY režim.
<target_recovery_time_option> ::=
platí pro: SQL Server (počínaje SQL Serverem 2012 (11.x))
Určuje frekvenci nepřímých kontrolních bodů pro jednotlivé databáze. Počínaje SQL Serverem 2016 (13.x) je výchozí hodnota pro nové databáze 1 minutu, 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 { SECONDS | MINUTES }
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.
SEKUNDY
Označuje, že target_recovery_time se vyjadřuje jako počet sekund.
MINUTY
Označuje, že target_recovery_time se vyjadřuje jako počet minut.
Další informace o nepřímých kontrolních bodech naleznete v tématu 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.
Poznámka
Ne všechny možnosti databáze používají klauzuli> ukončení <WITH. Další informace najdete v tabulce v části Nastavení části Poznámky v tomto článku.
VRÁCENÍ ZPĚT PO celé číslo [SEKUNDY] | OKAMŽITÉ VRÁCENÍ ZPĚT
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í
Chcete-li načíst aktuální nastavení pro možnosti databáze, použijte zobrazení katalogu
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 Možnosti | Lze zadat s dalšími možnostmi. | Může použít klauzuli> ukončení <WITH. |
---|---|---|
<db_state_option> | Ano | Ano |
<db_user_access_option> | Ano | Ano |
<db_update_option> | Ano | Ano |
<delayed_durability_option> | Ano | Ano |
<external_access_option> | Ano | Ne |
<cursor_option> | Ano | Ne |
<auto_option> | Ano | Ne |
<sql_option> | Ano | Ne |
<recovery_option> | Ano | Ne |
<target_recovery_time_option> | Ne | Ano |
<database_mirroring_option> | Ne | Ne |
ALLOW_SNAPSHOT_ISOLATION | Ne | Ne |
READ_COMMITTED_SNAPSHOT | Ne | Ano |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Ano | Ano |
<service_broker_option> | Ano | Ne |
DATE_CORRELATION_OPTIMIZATION | Ano | Ano |
<parameterization_option> | Ano | Ano |
<change_tracking_option> | Ano | Ano |
<db_encryption_option> | Ano | Ne |
<accelerated_database_recovery> | Ano | Ano |
Mezipaměť plánu pro instanci SQL Serveru se vymaže nastavením jedné z následujících možností:
OFFLINE
ONLINE
MODIFY_NAME
KOLACIONOVAT
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.
Příklady
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 AdventureWorks2022
.
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 AdventureWorks2022
databáze na READ_ONLY
a vrátí přístup k databázi všem uživatelům.
Poznámka
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 AdventureWorks2022
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 AdventureWorks2022
.
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ů.
Jméno | snapshot_isolation_state | popis |
---|---|---|
[database_name] | 1 | NA |
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 AdventureWorks2022
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 AdventureWorks2022
databázi.
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;
E. Povolení úložiště dotazů
platí pro: SQL Server (počínaje SQL Serverem 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í pro: SQL Server (počínaje SQL Serverem 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í pro: SQL Server (počínaje SQL Serverem 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
- statistiky
-
DATABASEPROPERTYEX (Transact-SQL) - sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- úroveň kompatibility ALTER DATABASE
- ALTER DATABASE Database Mirroring
- ALTER DATABASE SET HADR
- CREATE DATABASE
- 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 Database *
Azure Synapse
analýzy
SQL Database
Úrovně kompatibility jsou SET
možnosti, ale jsou popsány v úrovni kompatibility ALTER DATABASE.
Poznámka
Mnoho možností sady databází lze pro aktuální relaci nakonfigurovat pomocí příkazy SET a aplikace je často konfigurují 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 }
Argumenty
database_name
Název databáze, která se má upravit.
SOUČASNÝ
CURRENT
spustí akci v aktuální databázi.CURRENT
nejsou podporované pro všechny možnosti ve všech kontextech. PokudCURRENT
selže, zadejte název databáze.
<auto_option> ::=
Řídí automatické možnosti.
AUTO_CREATE_STATISTICS { ON | VYPNUTO }
NA
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í.
PRYČ
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 určit prozkoumáním sloupce is_auto_create_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoCreateStatistics
vlastnosti DATABASEPROPERTYEX.
Další informace naleznete v části Možnosti statistiky v 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 CREATE STATISTICS.
AUTO_SHRINK { ON | VYPNUTO }
NA
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.
PRYČ
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 určit prozkoumáním sloupce is_auto_shrink_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoShrink
vlastnosti DATABASEPROPERTYEX.
Poznámka
Možnost AUTO_SHRINK není dostupná v databázi s omezením.
AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
NA
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ě.
PRYČ
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 určit prozkoumáním sloupce
is_auto_update_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumánímIsAutoUpdateStatistics
vlastnosti DATABASEPROPERTYEX.Další informace naleznete v části Možnosti statistiky v Statistika.
AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
NA
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ě.
PRYČ
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 určit prozkoumáním sloupce is_auto_update_stats_async_on
v zobrazení katalogu sys.databases.
Další informace, které popisují, kdy použít synchronní nebo asynchronní statistiky aktualizace, naleznete v části Možnosti statistiky v Statistika.
<automatic_tuning_option> ::=
Řídí automatické možnosti pro automatické 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.
ZDĚDIT
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Í.
ZVYK
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 }
Povolí nebo zakáže automatickou správu indexů CREATE_INDEX
možnost 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
.
VÝCHOZÍ
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.
NA
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.
PRYČ
Nevygeneruje automaticky chybějící indexy v databázi.
DROP_INDEX = { DEFAULT | ZAPNUTO | VYPNUTO }
Povolí nebo zakáže automatickou správu indexů DROP_INDEX
možnost 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
.
VÝCHOZÍ
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.
NA
Automaticky zahodí duplicitní indexy nebo už nebudou užitečné indexy úlohy výkonu.
PRYČ
Automaticky nezahazuje chybějící indexy v databázi.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ZAPNUTO | VYPNUTO }
Povolí nebo zakáže automatickou opravu plánu FORCE_LAST_GOOD_PLAN
možnost 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
.
VÝCHOZÍ
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.
NA
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 úložiště dotazů není povolené nebo není v režimu pro čtení i zápis.
PRYČ
Databázový stroj hlásí potenciální regrese výkonu dotazů způsobené změnami plánu dotazů v zobrazení sys.dm_db_tuning_recommendations. 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 části Příklady dále v tomto článku.
NA
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 }
NA
Informace o sledování změn se po zadané době uchovávání automaticky odeberou.
PRYČ
Data sledování změn se z databáze neodeberou.
CHANGE_RETENTION = retention_period { DAYS | HODINY | MINUTES }
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 součást doby uchovávání.
Výchozí doba uchovávání je 2 dny. Minimální doba uchovávání je 1 minuta. Výchozí typ uchovávání je DAYS.
PRYČ
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 }
NA
Všechny kurzory otevřené při potvrzení nebo vrácení transakce se zavře.
PRYČ
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. Další informace naleznete v tématu SET CURSOR_CLOSE_ON_COMMIT.
Stav této možnosti můžete určit prozkoumáním sloupce is_cursor_close_on_commit_on
v zobrazení katalogu sys.databases nebo vlastností IsCloseCursorsOnCommitEnabled
funkce DATABASEPROPERTY EX. Kurzor je implicitně uvolněn pouze při odpojení. Další informace naleznete v tématu 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 zobrazit pomocí zobrazení sys.dm_database_encryption_keys dynamické 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.
Poznámka
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
. Další informace o statistikách pro databázi jen pro čtení naleznete v tématu Statistika.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.
Poznámka
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_owner
pevné databázové role adbcreator
asysadmin
pevný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ázimaster
se 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 určit prozkoumáním sloupce
user_access
v zobrazení katalogu sys.databases nebo vlastnostíUserAccess
funkce DATABASEPROPERTY EX. Ve službě Azure SQL Database by se mělo spouštět z uživatelské databáze. V databázimaster
se 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é.
INVALIDNÍ
Všechny transakce následující
SET DISABLED
jsou plně odolné. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.POVOLENÝ
Všechny transakce následující
SET ALLOWED
jsou buď plně odolné nebo zpožděné, v závislosti na možnosti stálosti nastavené v atomovém bloku nebo příkazu commit.VYNUCENÝ
Všechny transakce následující
SET FORCED
jsou 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 }
JEDNODUCHÝ
Dotazy jsou parametrizovány na základě výchozího chování databáze.
VYNUCENÝ
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 zobrazení 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ů.
NA
Povolí úložiště dotazů. Zapnuto je výchozí hodnota.
PRYČ
Zakáže úložiště dotazů.
Poznámka
Ú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 = OFF
vrátí upozornění'QUERY_STORE=OFF' is not supported in this version of SQL Server.
.JASNÝ
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í 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.
Poznámka
Ve službě Azure SQL Database se výchozí hodnota MAX_STORAGE_SIZE_MB
liší podle úrovně služby: Premium, Business Critical a Hyperscale: 1 024 MB; Standard a Pro obecné účely: 100 MB; Základní: 10 MB Maximální povolená hodnota MAX_STORAGE_SIZE_MB
je 10 240 MB.
Poznámka
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.
Důležitý
Pokud si myslíte, že zachytávání úloh vyžaduje více než 10 GB místa na disku, měli byste pravděpodobně znovu zvážit a optimalizovat úlohy tak, aby opakovaně používaly plány dotazů (například pomocí vynucené parametrizacenebo upravte konfigurace úložiště dotazů.
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.
PRYČ
Čištění na základě velikosti se neaktivuje automaticky.
AUTO
Čištění na základě velikosti se automaticky aktivuje, když velikost na disku dosáhne 90% max_storage_size_mb. Čištění na základě velikosti nejprve odebere nejméně nákladné a nejstarší dotazy. Zastaví se 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ů.
Poznámka
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.
VŠICHNI
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.
ŽÁDNÝ
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ů.
ZVYK
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.
NA
Zachytí se informace o statistikách čekání na dotaz. Tato hodnota je výchozí konfigurační hodnotou.
PRYČ
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 { DAYS | 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 .
EXECUTION_COUNT = celočíselná
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 = celočíselná
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 = celočíselná
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 }
NA
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á.
PRYČ
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 příkaz ALTER DATABASE nevrací rychle, použijte sys.dm_tran_active_snapshot_database_transactions k určení, zda existují dlouhotrvající 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 označuje stav transakcí izolace 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 zobrazení katalogu sys.databases.
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
NA
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.
PRYČ
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
, tempdb
nebo 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 zobrazení katalogu sys.databases.
Varování
Když se vytvoří tabulka s DURABILITY = SCHEMA_ONLY
a READ_COMMITTED_SNAPSHOT se následně změní pomocí ALTER DATABASE
, data v tabulce se ztratí.
Spropitné
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 }
NA
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.
PRYČ
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 zobrazení 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.
NA
Výchozí hodnota je NULL.
PRYČ
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. Další informace naleznete v tématu 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 určit prozkoumáním sloupce is_ansi_null_default_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiNullDefault
vlastnosti DATABASEPROPERTYEX.
ANSI_NULLS { ON | VYPNUTO }
NA
Všechna porovnání s hodnotou null se vyhodnotí jako UNKNOWN.
PRYČ
Porovnání hodnot, které nejsou unicode, na hodnotu null se vyhodnotí jako PRAVDA, pokud obě hodnoty mají hodnotu NULL.
Důležitý
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. Další informace naleznete v tématu SET ANSI_NULLS.
Poznámka
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 určit prozkoumáním sloupce is_ansi_nulls_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiNullsEnabled
vlastnosti DATABASEPROPERTYEX.
ANSI_PADDING { ON | VYPNUTO }
NA
Řetězce jsou před převodem vycpané na stejnou délku. Před vložením do varchar nebo nvarchar datového typu se také vložil na stejnou délku.
PRYČ
Vloží koncové mezery v hodnotách znaků do varchar nebo nvarchar sloupců. Také ponechá koncové nuly v binárních hodnotách, které se vloží do varbinárních sloupců. Hodnoty nejsou vycpané na délku sloupce.
Pokud je toto nastavení vypnuté, ovlivní pouze definici nových sloupců.
Důležitý
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.
znak(n) a binární (n) sloupce, které umožňují vložit hodnoty null na délku sloupce, pokud je ANSI_PADDING nastavena na zapnuto. Koncové prázdné hodnoty a nuly se oříznou, když je ANSI_PADDING vypnutý. char(n) a binary(n) sloupce, které neumožňují, jsou vždy vycpané 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 určit prozkoumáním sloupce is_ansi_padding_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiPaddingEnabled
vlastnosti DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | VYPNUTO }
NA
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.
PRYČ
Při výskytu podmínek, jako je například dělení nulou, se nevrací žádná upozornění a hodnoty null se vrátí.
Poznámka
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. Další informace naleznete v tématu SET ANSI_WARNINGS.
Stav této možnosti můžete určit prozkoumáním sloupce is_ansi_warnings_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiWarningsEnabled
vlastnosti DATABASEPROPERTYEX.
ARITHABORT { ON | VYPNUTO }
NA
Dotaz se ukončí, když během provádění dotazu dojde k chybě přetečení nebo dělení nulou.
PRYČ
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í.
Poznámka
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 určit prozkoumáním sloupce is_arithabort_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsArithmeticAbortEnabled
vlastnosti DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | VYPNUTO }
NA
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".
PRYČ
Hodnota null je považována za prázdný řetězec znaků.
Poznámka
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 určit prozkoumáním sloupce is_concat_null_yields_null_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsNullConcat
vlastnosti DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | VYPNUTO }
NA
Při ztrátě přesnosti ve výrazu se vygeneruje chyba.
PRYČ
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ží.
Důležitý
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 můžete také určit prozkoumáním IsNumericRoundAbortEnabled
vlastnosti DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | VYPNUTO }
NA
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 (""
).PRYČ
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 určit prozkoumáním sloupce is_quoted_identifier_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsQuotedIdentifiersEnabled
vlastnosti DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | VYPNUTO }
NA
Je povoleno rekurzivní aktivaci triggerů AFTER.
PRYČ
Stav této možnosti můžete určit prozkoumáním sloupce
is_recursive_triggers_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumánímIsRecursiveTriggersEnabled
vlastnosti DATABASEPROPERTYEX.
Poznámka
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 určit prozkoumáním sloupce is_recursive_triggers_on
v zobrazení katalogu sys.databases nebo vlastností IsRecursiveTriggersEnabled
funkce DATABASEPROPERTY EX.
<target_recovery_time_option> ::=
Určuje frekvenci nepřímých kontrolních bodů pro jednotlivé databáze. Počínaje SQL Serverem 2016 (13.x) je výchozí hodnota pro nové databáze 1 minutu, 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 { SECONDS | MINUTES }
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.
SEKUNDY
Označuje, že target_recovery_time se vyjadřuje jako počet sekund.
MINUTY
Označuje, že target_recovery_time se vyjadřuje jako počet minut.
Další informace o nepřímých kontrolních bodech naleznete v tématu 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.
Poznámka
Ne všechny možnosti databáze používají klauzuli> ukončení <WITH. Další informace najdete v tabulce v části Nastavení části Poznámky v tomto článku.
VRÁCENÍ ZPĚT PO celé číslo [SEKUNDY] | OKAMŽITÉ VRÁCENÍ ZPĚT
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í.
NA
Výchozí. 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í.
PRYČ
Neprovádějte dočasné historické zásady uchovávání informací.
Nastavení možností
Chcete-li načíst aktuální nastavení pro možnosti databáze, použijte zobrazení katalogu
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 Možnosti | Lze zadat s dalšími možnostmi. | Může použít klauzuli> ukončení <WITH. |
---|---|---|
<auto_option> | Ano | Ne |
<change_tracking_option> | Ano | Ano |
<cursor_option> | Ano | Ne |
<db_encryption_option> | Ano | Ne |
<db_update_option> | Ano | Ano |
<db_user_access_option> | Ano | Ano |
<delayed_durability_option> | Ano | Ano |
<parameterization_option> | Ano | Ano |
ALLOW_SNAPSHOT_ISOLATION | Ne | Ne |
READ_COMMITTED_SNAPSHOT | Ne | Ano |
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT | Ano | Ano |
DATE_CORRELATION_OPTIMIZATION | Ano | Ano |
<sql_option> | Ano | Ne |
<target_recovery_time_option> | Ne | Ano |
Příklady
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 AdventureWorks2022
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
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 AdventureWorks2022
.
--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ů.
Jméno | snapshot_isolation_state | popis |
---|---|---|
[database_name] | 1 | NA |
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 AdventureWorks2022
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 AdventureWorks2022
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
- statistiky
-
DATABASEPROPERTYEX (Transact-SQL) - sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- úroveň kompatibility ALTER DATABASE
- ALTER DATABASE Database Mirroring
- CREATE DATABASE
- 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 Managed Instance *
Azure Synapse
analýzy
Spravovaná instance Azure SQL
Úrovně kompatibility jsou SET
možnosti, ale jsou popsány v úrovni kompatibility ALTER DATABASE.
Poznámka
Mnoho možností sady databází lze pro aktuální relaci nakonfigurovat pomocí příkazy SET a aplikace je často konfigurují 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 = { 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 }
Argumenty
database_name
Název databáze, která se má upravit.
SOUČASNÝ
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 }
NA
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í.
PRYČ
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 určit prozkoumáním sloupce
is_auto_create_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumánímIsAutoCreateStatistics
vlastnosti DATABASEPROPERTYEX.Další informace naleznete v části Možnosti statistiky v 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 CREATE STATISTICS.
AUTO_SHRINK { ON | VYPNUTO }
NA
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.
PRYČ
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 určit prozkoumáním sloupce is_auto_shrink_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoShrink
vlastnosti DATABASEPROPERTYEX.
Poznámka
Možnost AUTO_SHRINK není dostupná v databázi s omezením.
AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
NA
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ě.
PRYČ
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 určit prozkoumáním sloupce is_auto_update_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoUpdateStatistics
vlastnosti DATABASEPROPERTYEX.
Další informace naleznete v části "Použití možností statistiky pro celou databázi" v Statistika.
AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
NA
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ě.
PRYČ
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 určit prozkoumáním sloupce is_auto_update_stats_async_on
v zobrazení katalogu sys.databases.
Další informace, které popisují, kdy použít synchronní nebo asynchronní statistiky aktualizace, naleznete v části Použití možností statistiky pro celou databázi v Statistika.
<automatic_tuning_option> ::=
Řídí automatické možnosti pro automatické ladění.
FORCE_LAST_GOOD_PLAN = { DEFAULT | ZAPNUTO | VYPNUTO }
Povolí nebo zakáže FORCE_LAST_GOOD_PLAN
možnost automatického ladění.
VÝCHOZÍ
Výchozí hodnota služby Azure SQL Managed Instance je zapnutá.
NA
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 úložiště dotazů není povolené nebo není v režimu pro čtení i zápis. Toto je výchozí hodnota.
PRYČ
Databázový stroj hlásí potenciální regrese výkonu dotazů způsobené změnami plánu dotazů v zobrazení sys.dm_db_tuning_recommendations. 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 části Příklady dále v tomto článku.
NA
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 }
NA
Informace o sledování změn se po zadané době uchovávání automaticky odeberou.
PRYČ
Data sledování změn se z databáze neodeberou.
CHANGE_RETENTION = retention_period { DAYS | HODINY | MINUTES }
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 součást doby uchovávání.
Výchozí doba uchovávání je 2 dny. Minimální doba uchovávání je 1 minuta. Výchozí typ uchovávání je DAYS.
PRYČ
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 }
NA
Všechny kurzory otevřené při potvrzení nebo vrácení transakce se zavře.
PRYČ
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. Další informace naleznete v tématu SET CURSOR_CLOSE_ON_COMMIT.
Stav této možnosti můžete určit 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í. Další informace naleznete v tématu 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 zobrazit pomocí zobrazení sys.dm_database_encryption_keys dynamické správy.
<delayed_durability_option> ::=
Určuje, zda transakce potvrdí plně trvalé nebo zpožděné trvalé.
INVALIDNÍ
Všechny transakce následující
SET DISABLED
jsou plně odolné. Všechny možnosti odolnosti nastavené v atomovém bloku nebo příkazu commit jsou ignorovány.POVOLENÝ
Všechny transakce následující
SET ALLOWED
jsou buď plně odolné nebo zpožděné, v závislosti na možnosti stálosti nastavené v atomovém bloku nebo příkazu commit.VYNUCENÝ
Všechny transakce následující
SET FORCED
jsou 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 }
JEDNODUCHÝ
Dotazy jsou parametrizovány na základě výchozího chování databáze.
VYNUCENÝ
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 zobrazení 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ů.
NA
Povolí úložiště dotazů.
PRYČ
Zakáže úložiště dotazů. Toto je výchozí hodnota.
JASNÝ
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í 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.
Důležitý
- Pokud si myslíte, že zachytávání úloh vyžaduje více než 10 GB místa na disku, měli byste pravděpodobně znovu zvážit a optimalizovat úlohy tak, aby opakovaně používaly plány dotazů (například pomocí vynucené parametrizacenebo upravte konfigurace úložiště dotazů.
- 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ů. -
MAX_STORAGE_SIZE_MB
limit 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.
PRYČ
Čištění na základě velikosti se neaktivuje automaticky.
AUTO
Čištění na základě velikosti se automaticky aktivuje, když velikost na disku dosáhne 90% max_storage_size_mb. Čištění na základě velikosti nejprve odebere nejméně nákladné a nejstarší dotazy. Zastaví se 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ů.
VŠICHNI
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.
ŽÁDNÝ
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.
NA
Zachytí se informace o statistikách čekání na dotaz. Tato hodnota je výchozí konfigurační hodnotou.
PRYČ
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 { DAYS | 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 = celočíselná
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 = celočíselná
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 = celočíselná
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 }
NA
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á.
PRYČ
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 příkaz ALTER DATABASE nevrací rychle, použijte sys.dm_tran_active_snapshot_database_transactions k určení, zda existují dlouhotrvající 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 označuje stav transakcí izolace 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 zkusí operaci zopakovat.
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
, msdb
a 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 zobrazení katalogu sys.databases.
READ_COMMITTED_SNAPSHOT { ON | VYPNUTO }
NA
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.
PRYČ
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
, tempdb
nebo 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 zobrazení katalogu sys.databases.
Varování
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 }
NA
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.
PRYČ
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 zobrazení 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.
NA
Výchozí hodnota je NULL.
PRYČ
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. Další informace naleznete v tématu 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 určit prozkoumáním sloupce is_ansi_null_default_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiNullDefault
vlastnosti DATABASEPROPERTYEX.
ANSI_NULLS { ON | VYPNUTO }
NA
Všechna porovnání s hodnotou null se vyhodnotí jako UNKNOWN.
PRYČ
Porovnání hodnot, které nejsou unicode, na hodnotu null se vyhodnotí jako PRAVDA, pokud obě hodnoty mají hodnotu NULL.
Důležitý
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. Další informace naleznete v tématu SET ANSI_NULLS.
Důležitý
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 určit prozkoumáním sloupce is_ansi_nulls_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiNullsEnabled
vlastnosti DATABASEPROPERTYEX.
ANSI_PADDING { ON | VYPNUTO }
NA
Řetězce jsou před převodem vycpané na stejnou délku. Před vložením do varchar nebo nvarchar datového typu se také vložil na stejnou délku.
PRYČ
Vloží koncové mezery v hodnotách znaků do varchar nebo nvarchar sloupců. Také ponechá koncové nuly v binárních hodnotách, které se vloží do varbinárních sloupců. Hodnoty nejsou vycpané na délku sloupce.
Pokud je toto nastavení vypnuté, ovlivní pouze definici nových sloupců.
Důležitý
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.
znak(n) a binární (n) sloupce, které umožňují vložit hodnoty null na délku sloupce, pokud je ANSI_PADDING nastavena na zapnuto. Koncové prázdné hodnoty a nuly se oříznou, když je ANSI_PADDING vypnutý. char(n) a binary(n) sloupce, které neumožňují, jsou vždy vycpané 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 určit prozkoumáním sloupce is_ansi_padding_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiPaddingEnabled
vlastnosti DATABASEPROPERTYEX.
ANSI_WARNINGS { ON | VYPNUTO }
NA
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.
PRYČ
Při výskytu podmínek, jako je například dělení nulou, se nevrací žádná upozornění a hodnoty null se vrátí.
Důležitý
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. Další informace naleznete v tématu SET ANSI_WARNINGS.
Stav této možnosti můžete určit prozkoumáním sloupce is_ansi_warnings_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAnsiWarningsEnabled
vlastnosti DATABASEPROPERTYEX.
ARITHABORT { ON | VYPNUTO }
NA
Dotaz se ukončí, když během provádění dotazu dojde k chybě přetečení nebo dělení nulou.
PRYČ
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í.
Důležitý
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 určit prozkoumáním sloupce is_arithabort_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsArithmeticAbortEnabled
vlastnosti DATABASEPROPERTYEX.
COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
CONCAT_NULL_YIELDS_NULL { ON | VYPNUTO }
NA
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".
PRYČ
Hodnota null je považována za prázdný řetězec znaků.
Důležitý
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 určit prozkoumáním sloupce is_concat_null_yields_null_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsNullConcat
vlastnosti DATABASEPROPERTYEX.
NUMERIC_ROUNDABORT { ON | VYPNUTO }
NA
Při ztrátě přesnosti ve výrazu se vygeneruje chyba.
PRYČ
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ží.
Důležitý
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 můžete také určit prozkoumáním IsNumericRoundAbortEnabled
vlastnosti DATABASEPROPERTYEX.
QUOTED_IDENTIFIER { ON | VYPNUTO }
NA
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 (""
).PRYČ
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 určit prozkoumáním sloupce is_quoted_identifier_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsQuotedIdentifiersEnabled
vlastnosti DATABASEPROPERTYEX.
RECURSIVE_TRIGGERS { ON | VYPNUTO }
NA
Je povoleno rekurzivní aktivaci triggerů AFTER.
PRYČ
Stav této možnosti můžete určit prozkoumáním sloupce
is_recursive_triggers_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumánímIsRecursiveTriggersEnabled
vlastnosti DATABASEPROPERTYEX.Poznámka
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 určit prozkoumáním sloupce is_recursive_triggers_on
v zobrazení katalogu sys.databases nebo vlastností IsRecursiveTriggersEnabled
funkce DATABASEPROPERTY EX.
<target_recovery_time_option> ::=
target_recovery_time_option se ve službě Azure SQL Managed Instance nepodporuje.
Určuje frekvenci nepřímých kontrolních bodů pro jednotlivé databáze. Počínaje SQL Serverem 2016 (13.x) je výchozí hodnota pro nové databáze 1 minutu, 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.
Poznámka
Ne všechny možnosti databáze používají klauzuli> ukončení <WITH. Další informace najdete v tabulce v části Nastavení části Poznámky v tomto článku.
VRÁCENÍ ZPĚT PO celé číslo [SEKUNDY] | OKAMŽITÉ VRÁCENÍ ZPĚT
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í.
NA
Výchozí. 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í.
PRYČ
Neprovádějte dočasné historické zásady uchovávání informací.
Nastavení možností
Chcete-li načíst aktuální nastavení pro možnosti databáze, použijte zobrazení katalogu
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.
Příklady
A. Povolení izolace snímků v databázi
Následující příklad umožňuje architekturu izolace snímků pro databázi AdventureWorks2022
.
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ů.
Jméno | snapshot_isolation_state | popis |
---|---|---|
[database_name] | 1 | NA |
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 AdventureWorks2022
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 AdventureWorks2022
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
- statistiky
-
DATABASEPROPERTYEX (Transact-SQL) - sys.databases
- sys.data_spaces
- sys.database_automatic_tuning_options
- sys.database_automatic_tuning_mode
- úroveň kompatibility ALTER DATABASE
- ALTER DATABASE Database Mirroring
- CREATE DATABASE
- 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 }
}
Argumenty
database_name
Název databáze, která se má upravit.
<auto_option> ::=
Řídí automatické možnosti.
AUTO_CREATE_STATISTICS { ON | VYPNUTO }
NA
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í.
PRYČ
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 určit prozkoumáním sloupce is_auto_create_stats_on
v zobrazení katalogu sys.databases. Stav můžete také určit prozkoumáním IsAutoCreateStatistics
vlastnosti DATABASEPROPERTYEX.
Další informace naleznete v části "Použití možností statistiky pro celou databázi" v Statistika.
<db_encryption_option> ::=
Řídí stav šifrování databáze.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO }
NA
Nastaví databázi, která se má šifrovat.
PRYČ
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 }
NA
Povolí úložiště dotazů.
PRYČ
Zakáže úložiště dotazů. Vypnuto je výchozí hodnota.
Poznámka
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.
Poznámka
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 }
NA
Určuje, že sady výsledků dotazu vrácené z této databáze jsou uloženy v mezipaměti v databázi.
PRYČ
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 najdete v sys.dm_pdw_exec_requests.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Poznámka
Ukládání sady výsledků do mezipaměti by nemělo být použito ve spojení s DECRYPTBYKEY. Pokud je potřeba tuto kryptografickou funkci použít, ujistěte se, že je v době provádění zakázané ukládání do mezipaměti (buď na na úrovni relace, nebo databáze).
Důležitý
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.
Dovolení
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 }
NA
Povolí možnost READ_COMMITTED_SNAPSHOT na úrovni databáze.
PRYČ
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.
Dovolení
Aby uživatel nastavil možnost READ_COMMITTED_SNAPSHOT, potřebuje pro databázi oprávnění ALTER.
Příklady
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
-
DATABASEPROPERTYEX (Transact-SQL) - sys.databases
- elementy jazyka Azure Synapse Analytics
-
DROP DATABASE (Transact-SQL) - osvědčené postupy pro službu Azure Synapse Analytics
- Navrhování tabulek ve službě Azure Synapse Analytics
Azure Synapse
analýzy
Microsoft Fabric
Microsoft Fabric
Ke správě služby Microsoft Fabric Warehouse použijte ALTER DATABASE ... SET
.
Syntax
-- Microsoft Fabric
ALTER DATABASE { warehouse_name | CURRENT }
SET
{
<option_spec> [ ,...n ]
}
<option_spec> ::=
{
<data_lake_log_publishing>
| <vorder>
}
;
<data_lake_log_publishing> ::=
{
DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}
<vorder> ::=
{
VORDER = OFF
}
Poznámky
V současné době pozastavení publikování protokolů Delta Lake a zakázání chování objednávky V-Order ve skladu se používají pouze pro ALTER DATABASE ... SET
v Microsoft Fabric.
Dovolení
Uživatel musí být členem role Správce, Člen nebo Přispěvatel v pracovním prostoru Prostředky infrastruktury.
Příklady
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;
Pokud chcete zkontrolovat aktuální stav publikování protokolu Delta Lake ve všech skladech ve vašem pracovním prostoru, použijte následující kód T-SQL k dotazování sys.databases v novém okně dotazu:
SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] 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