ALTER DATABASE (Transact-SQL)
Upraví určité možnosti konfigurace databáze.
Tento článek obsahuje syntaxi, argumenty, poznámky, oprávnění a příklady pro vámi zvolený produkt SQL.
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á, a zobrazí se jenom informace o daném produktu.
* SQL Server *
Azure Synapse
analýzy
Přehled: SQL Server
V SYSTÉMU SQL Server tento příkaz upraví databázi nebo soubory a skupiny souborů přidružené k databázi. ALTER DATABASE přidá nebo odebere soubory a skupiny souborů z databáze, změní atributy databáze nebo jejích souborů a skupin souborů, změní kolaci databáze a nastaví možnosti databáze. Snímky databáze nelze upravit. Chcete-li upravit možnosti databáze přidružené k replikaci, použijte sp_replicationdboption.
Vzhledem k jeho délce je syntaxe ALTER DATABASE
oddělená do více článků.
Článek | Popis |
---|---|
ALTER DATABASE |
Aktuální článek obsahuje syntaxi a související informace pro změnu názvu a kolace databáze. |
možnosti souborů ALTER DATABASE a skupin souborů | Poskytuje syntaxi a související informace pro přidávání a odebírání souborů a skupin souborů z databáze a pro změnu atributů souborů a skupin souborů. |
možnosti ALTER DATABASE SET | Poskytuje syntaxi a související informace pro změnu atributů databáze pomocí možností SET ALTER DATABASE. |
ALTER DATABASE Database Mirroring | Poskytuje syntaxi a související informace pro možnosti SET ALTER DATABASE, které souvisejí se zrcadlením databáze. |
ALTER DATABASE SET HADR | Poskytuje syntaxi a související informace pro možnosti skupin dostupnosti AlwaysOn příkazu ALTER DATABASE pro konfiguraci sekundární databáze na sekundární replice skupiny dostupnosti AlwaysOn. |
úroveň kompatibility ALTER DATABASE | Poskytuje syntaxi a související informace pro možnosti SET ALTER DATABASE, které souvisejí s úrovněmi kompatibility databáze. |
ALTER DATABASE SCOPED CONFIGURATION | Poskytuje syntaxi související s konfigurací s vymezeným oborem databáze, které se používají pro jednotlivá nastavení na úrovni databáze, jako je například optimalizace dotazů a chování související se spouštěním dotazů. |
Syntax
-- SQL Server Syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| COLLATE collation_name
| <file_and_filegroup_options>
| SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]
<file_and_filegroup_options>::=
<add_or_modify_files>::=
<filespec>::=
<add_or_modify_filegroups>::=
<filegroup_updatability_option>::=
<option_spec>::=
{
| <auto_option>
| <change_tracking_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_options>
| <HADR_options>
| <parameterization_option>
| <query_store_options>
| <recovery_option>
| <service_broker_option>
| <snapshot_option>
| <sql_option>
| <termination>
| <temporal_history_retention>
| <data_retention_policy>
| <compatibility_level>
{ 160 | 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}
Argumenty
database_name
Je název databáze, která se má upravit.
Poznámka
Tato možnost není dostupná v databázi s omezením.
SOUČASNÝ
platí pro: SQL Server 2012 (11.x) a novější.
Určuje, že by se měla změnit aktuální použitá databáze.
MODIFY NAME = new_database_name
Přejmenuje databázi s názvem zadaným jako new_database_name.
COLLATION_NAME COLLATE
Určuje kolaci databáze. collation_name může být buď název kolace Systému Windows, nebo název kolace SQL. Pokud není zadáno, je databázi přiřazena kolace instance SQL Serveru.
Poznámka
Kolaci nelze po vytvoření databáze ve službě Azure SQL Database změnit.
Při vytváření databází s jinou než výchozí kolací respektují data v databázi vždy zadanou kolaci. Při vytváření obsažené databáze pro SQL Server se informace z interního katalogu udržují pomocí výchozí kolace SYSTÉMU SQL Server Latin1_General_100_CI_AS_WS_KS_SC.
Další informace o názvech kolace Windows a SQL naleznete v tématu COLLATE.
<delayed_durability_option> ::=
platí pro: SQL Server 2014 (12.x) a novější.
Další informace naleznete v tématu ALTER DATABASE SET možnosti a Řízení odolnosti transakce.
<file_and_filegroup_options>::=
Další informace naleznete v tématu ALTER DATABASE File and Filegroup Options.
Poznámky
Chcete-li odebrat databázi, použijte DROP DATABASE.
Chcete-li zmenšit velikost databáze, použijte DBCC SHRINKDATABASE.
Příkaz ALTER DATABASE
musí běžet v režimu automatického potvrzení (výchozí režim správy transakcí) a není povolený v explicitní nebo implicitní transakci.
Stav databázového souboru (například online nebo offline) se udržuje nezávisle na stavu databáze. Další informace naleznete v tématu Stav souborů. Stav souborů v rámci skupiny souborů určuje dostupnost celé skupiny souborů. Aby byla skupina souborů dostupná, musí být všechny soubory v rámci skupiny souborů online. Pokud je skupina souborů offline, jakýkoli pokus o přístup ke skupině souborů příkazem SQL selže s chybou. Při vytváření plánů dotazů pro příkazy SELECT se optimalizátor dotazů vyhne neclusterovaným indexům a indexovaným zobrazením umístěným v offline skupinách souborů. To umožňuje úspěšné provedení těchto příkazů. Pokud však offline skupina souborů obsahuje haldu nebo clusterovaný index cílové tabulky, příkazy SELECT selžou. Kromě toho všechny INSERT
, UPDATE
nebo DELETE
příkazu, který upraví tabulku s libovolným indexem v offline skupině souborů, selže.
Pokud je databáze ve stavu OBNOVENÍ, většina příkazů ALTER DATABASE
selže. Výjimkou je nastavení možností zrcadlení databáze. 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.
Mezipaměť plánu pro instanci SQL Serveru se vymaže nastavením jedné z následujících možností.
- KOLACIONOVAT
- ZMĚNA VÝCHOZÍHO NASTAVENÍ FILEGROUP
- ÚPRAVA READ_ONLY FILEGROUP
- ÚPRAVA READ_WRITE FILEGROUP
- MODIFY_NAME
- OFFLINE
- ONLINE
- PAGE_VERIFY
- READ_ONLY
- READ_WRITE
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é vymazání ú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.
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.
Změna kolace databáze
Než u databáze použijete jinou kolaci, ujistěte se, že jsou splněny následující podmínky:
- Právě používáte databázi.
- Žádný objekt vázaný na schématu závisí na kolaci databáze.
Pokud v databázi existují následující objekty, které závisí na kolaci databáze, příkaz ALTER DATABASE database_name COLLATE
selže. SQL Server vrátí chybovou zprávu pro každý objekt blokující ALTER
akci:
- Uživatelem definované funkce a zobrazení vytvořené pomocí FUNKCE SCHEMABINDING
- Počítané sloupce
- Omezení CHECK
- Funkce hodnotné tabulkou, které vracejí tabulky se sloupci znaků s kolacemi zděděnými z výchozí kolace databáze
Informace o závislostech pro entity, které nejsou vázané na schéma, se při změně kolace databáze automaticky aktualizují.
Změna kolace databáze nevytváří duplicity mezi žádnými názvy systémů pro databázové objekty. Pokud výsledkem změněné kolace jsou duplicitní názvy, mohou následující obory názvů způsobit selhání změny kolace databáze:
- Názvy objektů, jako je procedura, tabulka, trigger nebo zobrazení
- Názvy schémat
- Objekty zabezpečení, jako je skupina, role nebo uživatel
- Skalární názvy typů, jako jsou systémové a uživatelem definované typy
- Názvy fulltextového katalogu
- Názvy sloupců nebo parametrů v rámci objektu
- Názvy indexů v tabulce
Duplicitní názvy vyplývající z nové kolace způsobí selhání akce změny a SQL Server vrátí chybovou zprávu určující obor názvů, ve kterém byl nalezen duplikát.
Zobrazení informací o databázi
Pomocí zobrazení katalogu, systémových funkcí a systémových uložených procedur můžete vracet informace o databázích, souborech a skupinách souborů.
Dovolení
Vyžaduje ALTER
oprávnění k databázi.
Příklady
A. Změna názvu databáze
Následující příklad změní název databáze AdventureWorks2022
na Northwind
.
USE master;
GO
ALTER DATABASE AdventureWorks2022
Modify Name = Northwind ;
GO
B. Změna kolace databáze
Následující příklad vytvoří databázi s názvem testdb
s kolací SQL_Latin1_General_CP1_CI_AS
a potom změní kolaci testdb
databáze na COLLATE French_CI_AI
.
platí pro: SQL Server 2008 (10.0.x) a novější.
USE master;
GO
CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO
ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO
Související obsah
- CREATE DATABASE
-
DATABASEPROPERTYEX - DROP DATABASE
- NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ
- EVENTDATA
- sp_configure
- sp_spaceused
- sys.databases
- sys.database_files
- sys.data_spaces
- sys.filegroups
- sys.master_files
- systémových databází
* SQL Database *
Azure Synapse
analýzy
Přehled: SQL Database
V Azure SQL Database použijte tento příkaz k úpravě databáze. Tento příkaz použijte ke změně názvu databáze, změně cíle edice a služby databáze, připojení nebo odebrání databáze do nebo z elastického fondu, nastavení možností databáze, přidání nebo odebrání databáze jako sekundární v relaci geografické replikace a nastavení úrovně kompatibility databáze.
Vzhledem k jeho délce je syntaxe ALTER DATABASE
oddělená do více článků.
ALTER DATABASE
Aktuální článek obsahuje syntaxi a související informace pro změnu názvu a dalších nastavení databáze.
možnosti ALTER DATABASE SET
Poskytuje syntaxi a související informace pro změnu atributů databáze pomocí možností SET ALTER DATABASE.
úroveň kompatibility ALTER DATABASE
Poskytuje syntaxi a související informace pro možnosti SET ALTER DATABASE, které souvisejí s úrovněmi kompatibility databáze.
Syntax
-- Azure SQL Database Syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| MODIFY ( <edition_options> [, ... n] )
| MODIFY BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' }
| SET { <option_spec> [ ,... n ] WITH <termination>}
| ADD SECONDARY ON SERVER <partner_server_name>
[WITH ( <add-secondary-option>::=[, ... n] ) ]
| REMOVE SECONDARY ON SERVER <partner_server_name>
| FAILOVER
| FORCE_FAILOVER_ALLOW_DATA_LOSS
}
[;]
<edition_options> ::=
{
MAXSIZE = { 100 MB | 250 MB | 500 MB | 1 ... 1024 ... 4096 GB }
| EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale'}
| SERVICE_OBJECTIVE =
{ <service-objective>
| { ELASTIC_POOL (name = <elastic_pool_name>) }
}
}
<add-secondary-option> ::=
{
ALLOW_CONNECTIONS = { ALL | NO }
| BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' }
| SERVICE_OBJECTIVE =
{ <service-objective>
| { ELASTIC_POOL ( name = <elastic_pool_name>) }
| DATABASE_NAME = <target_database_name>
| SECONDARY_TYPE = { GEO | NAMED }
}
}
<service-objective> ::={ 'Basic' |'S0' | 'S1' | 'S2' | 'S3'| 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
| 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
| 'BC_DC_n'
| 'BC_Gen5_n'
| 'BC_M_n'
| 'GP_DC_n'
| 'GP_Fsv2_n'
| 'GP_Gen5_n'
| 'GP_S_Gen5_n'
| 'HS_DC_n'
| 'HS_Gen5_n'
| 'HS_S_Gen5_n'
| 'HS_MOPRMS_n'
| 'HS_PRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) }
}
<option_spec> ::=
{
<auto_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>
| <compatibility_level>
{ 160 | 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}
Argumenty
database_name
Je název databáze, která se má upravit.
SOUČASNÝ
Určuje, že by se měla změnit aktuální použitá databáze.
MODIFY NAME = new_database_name
Přejmenuje databázi s názvem zadaným jako new_database_name. Následující příklad změní název databáze db1
na db2
:
ALTER DATABASE db1
MODIFY Name = db2 ;
MODIFY (EDITION = ['Basic' | 'Standard' | Premium | GeneralPurpose' | 'BusinessCritical' | "Hyperscale"])
Změní úroveň služby databáze.
Následující příklad změní edici na Premium
:
ALTER DATABASE current
MODIFY (EDITION = 'Premium');
Důležitý
Změna edice selže, pokud je vlastnost MAXSIZE pro databázi nastavena na hodnotu mimo platný rozsah podporovaný danou edicí.
MODIFY BACKUP_STORAGE_REDUNDANCY = ['LOCAL' | 'ZÓNA' | 'GEO']
Změní redundanci úložiště záloh obnovení k určitému bodu v čase a dlouhodobé zálohy uchovávání (pokud jsou nakonfigurované) databáze. Změny se použijí u všech budoucích záloh. Existující zálohy budou nadále používat předchozí nastavení.
Pokud chcete vynutit rezidenci dat při vytváření databáze pomocí T-SQL, použijte LOCAL
nebo ZONE
jako vstup do parametru BACKUP_STORAGE_REDUNDANCY.
MODIFY (MAXSIZE = [100 MB | 500 MB | 1 | 1024...4096] GB)
Určuje maximální velikost databáze. Maximální velikost musí být v souladu s platnou sadou hodnot pro vlastnost EDITION databáze. Změna maximální velikosti databáze může způsobit změnu edice databáze.
Poznámka
Argument MAXSIZE se nevztahuje na izolované databáze na úrovni služby Hyperscale. Databáze vrstvy služby Hyperscale se podle potřeby zvětšují až o 128 TB. Služba SQL Database přidává úložiště automaticky – nemusíte nastavovat maximální velikost.
model DTU
MAXSIZE | Basic | S0-S2 | |
P1-P6 | P11-P15 |
---|---|---|---|---|---|
100 MB | Ano | Ano | Ano | Ano | Ano |
250 MB | Ano | Ano | Ano | Ano | Ano |
500 MB | Ano | Ano | Ano | Ano | Ano |
1 GB | Ano | Ano | Ano | Ano | Ano |
2 GB | Ano (D) | Ano | Ano | Ano | Ano |
5 GB | Není k dispozici | Ano | Ano | Ano | Ano |
10 GB | Není k dispozici | Ano | Ano | Ano | Ano |
20 GB | Není k dispozici | Ano | Ano | Ano | Ano |
30 GB | Není k dispozici | Ano | Ano | Ano | Ano |
40 GB | Není k dispozici | Ano | Ano | Ano | Ano |
50 GB | Není k dispozici | Ano | Ano | Ano | Ano |
100 GB | Není k dispozici | Ano | Ano | Ano | Ano |
150 GB | Není k dispozici | Ano | Ano | Ano | Ano |
200 GB | Není k dispozici | Ano | Ano | Ano | Ano |
250 GB | Není k dispozici | Ano (D) | Ano (D) | Ano | Ano |
300 GB | Není k dispozici | Ano | Ano | Ano | Ano |
400 GB | Není k dispozici | Ano | Ano | Ano | Ano |
500 GB | Není k dispozici | Ano | Ano | Ano (D) | Ano |
750 GB | Není k dispozici | Ano | Ano | Ano | Ano |
1024 GB | Není k dispozici | Ano | Ano | Ano | Ano (D) |
Od 1024 GB do 4096 GB v přírůstcích po 256 GB 1 | Není k dispozici | Není k dispozici | Není k dispozici | Není k dispozici | Ano |
1 P11 a P15 umožňují MAXSIZE až 4 TB s výchozí velikostí 1024 GB. P11 a P15 mohou bez dalších poplatků využívat až 4 TB zahrnutého úložiště. Na úrovni Premium je maxSIZE větší než 1 TB aktuálně k dispozici v následujících oblastech: USA – východ 2, USA – západ, US Gov – Virginie, Západní Evropa, Německo – střed, Jihovýchodní Asie, Japonsko – východ, Austrálie – východ, Kanada – střed a Kanada – východ. Další podrobnosti o omezeních prostředků pro model DTU najdete v tématu omezení prostředků DTU.
Hodnota MAXSIZE pro model DTU , pokud je zadána, musí být platná hodnota zobrazená v předchozí tabulce pro zadanou úroveň služby.
Omezení, jako je maximální velikost dat a velikost tempdb
v nákupním modelu virtuálních jader, najdete v článcích o omezeních prostředků pro izolované databáze nebo limity prostředků pro elastické fondy.
Pokud se při použití modelu virtuálních jader nenastaví žádná MAXSIZE
hodnota, výchozí hodnota je 32 GB. Další podrobnosti o omezeních prostředků pro model virtuálních jader najdete v tématu omezení prostředků virtuálních jader.
Následující pravidla platí pro argumenty MAXSIZE a EDITION:
- Pokud je zadaná edice, ale hodnota MAXSIZE není zadaná, použije se výchozí hodnota edice. Je například edice nastavená na Standard a není zadána hodnota MAXSIZE, hodnota MAXSIZE se automaticky nastaví na 250 MB.
- Pokud není zadána hodnota MAXSIZE ani EDITION, je edice nastavena na úroveň Pro obecné účely a hodnota MAXSIZE je nastavená na 32 GB.
MODIFY (SERVICE_OBJECTIVE = <>cíle služby )
Určuje velikost výpočetních prostředků a cíl služby.
SERVICE_OBJECTIVE
Určuje velikost výpočetních prostředků (označovanou také jako cíl na úrovni služby nebo cíl úrovně služby).
- Nákupní model DTU:
S0
,S1
,S2
,S3
,S4
,S6
,S7
,S9
,S12
,P1
,P2
,P4
,P6
,P11
,P15
. Projděte si omezení prostředků pro izolované databáze DTU nebo limity prostředků pro elastické fondy DTU a vyhledejte počet DTU přiřazených ke každé velikosti výpočetních prostředků. - Pro nákupní model virtuálních jader zvolte úroveň a zadejte počet virtuálních jader z přednastaveného seznamu hodnot, kde je počet virtuálních jader
n
. Podívejte se na limity prostředků pro izolované databáze virtuálních jader nebo limity prostředků pro elastické fondy virtuálních jader.- Například:
-
GP_Gen5_8
pro obecné účely, zřízené výpočetní prostředky, řady Standard (Gen5), 8 virtuálních jader. -
GP_S_Gen5_8
pro obecné účely, bezserverové výpočetní prostředky, řady Standard (Gen5), 8 virtuálních jader. -
HS_Gen5_8
pro Hyperscale, zřízené výpočetní prostředky, řady Standard (Gen5), 8 virtuálních jader. -
HS_S_Gen5_8
pro Hyperscale, bezserverové výpočetní prostředky, řadu Standard (Gen5), 8 virtuálních jader.
Následující ukázka například změní cíl služby databáze úrovně Premium v nákupním modelu DTU na P6
:
ALTER DATABASE <database_name>
MODIFY (SERVICE_OBJECTIVE = 'P6');
Následující ukázka například změní cíl služby zřízené výpočetní databáze v nákupním modelu virtuálních jader na GP_Gen5_8
:
ALTER DATABASE <database_name>
MODIFY (SERVICE_OBJECTIVE = 'GP_Gen5_8');
DATABASE_NAME
Pouze pro Hyperscale služby Azure SQL Database. Název databáze, který se vytvoří. Pouze azure SQL Database Hyperscale pojmenované repliky používá, když SECONDARY_TYPE
= NAMED. Další informace najdete v tématu sekundární repliky hyperškálování.
SECONDARY_TYPE
Pouze pro Hyperscale služby Azure SQL Database. GEO určuje geografickou repliku, POJMENOVANÁ určuje pojmenovanou repliku. Výchozí hodnota je GEO. Další informace najdete v tématu sekundární repliky hyperškálování.
Popisy cílů služby a další informace o kombinacích velikostí, edicí a cílů služby najdete v tématu Porovnání nákupních modelů založených na virtuálních jádrech a DTU služby azure SQL Database, omezení prostředků DTU a omezení prostředků virtuálních jader. Podpora cílů služby PRS byla odebrána.
Pokud není zadán SERVICE_OBJECTIVE, sekundární databáze se vytvoří na stejné úrovni služby jako primární databáze. Po zadání SERVICE_OBJECTIVE se sekundární databáze vytvoří na zadané úrovni. Zadaný SERVICE_OBJECTIVE musí být ve stejné edici jako zdroj. Pokud je například edice Premium, nemůžete zadat S0.
MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL (název = <elastic_pool_name>)
Pokud chcete do elastického fondu přidat existující databázi, nastavte SERVICE_OBJECTIVE databáze na ELASTIC_POOL a zadejte název elastického fondu. Tuto možnost můžete použít také ke změně databáze na jiný elastický fond na stejném serveru. Další informace najdete v tématu Elastické fondy, které vám pomůžou spravovat a škálovat více databází ve službě Azure SQL Database. Pokud chcete odebrat databázi z elastického fondu, nastavte pomocí příkazu ALTER DATABASE SERVICE_OBJECTIVE na velikost výpočetních prostředků izolované databáze (cíl služby).
Poznámka
Databáze na úrovni služby Hyperscale nejde přidat do elastického fondu.
PŘIDÁNÍ SEKUNDÁRNÍHO <PARTNER_SERVER_NAME> SERVERU
Vytvoří sekundární databázi geografické replikace se stejným názvem na partnerském serveru, čímž se místní databáze převede na primární geografickou replikaci a začne asynchronně replikovat data z primárního do nového sekundárního serveru. Pokud databáze se stejným názvem už v sekundární databázi existuje, příkaz selže. Příkaz se spustí na master
databázi na serveru, který je hostitelem místní databáze, která se stane primární.
Důležitý
Ve výchozím nastavení se sekundární databáze vytvoří se stejnou redundancí úložiště zálohování jako primární nebo zdrojová databáze. Změna redundance úložiště zálohování při vytváření sekundárního úložiště není podporována prostřednictvím T-SQL.
WITH ALLOW_CONNECTIONS { ALL | NO }
Pokud není zadaný ALLOW_CONNECTIONS, je ve výchozím nastavení nastavená na ALL. Pokud je nastavená možnost ALL, jedná se o databázi určenou jen pro čtení, která umožňuje připojení všech přihlášení s odpovídajícími oprávněními.
ELASTIC_POOL (název = <elastic_pool_name>)
Pokud není zadaný ELASTIC_POOL, sekundární databáze se nevytvořila v elastickém fondu. Po zadání ELASTIC_POOL se v zadaném fondu vytvoří sekundární databáze.
Důležitý
Uživatel, který spouští příkaz ADD SECONDARY, musí být DBManager na primárním serveru, musí mít db_owner členství v místní databázi a DBManager na sekundárním serveru. IP adresa klienta musí být přidána do seznamu povolených v rámci pravidel brány firewall pro primární i sekundární servery. V případě různých IP adres klienta musí být do sekundárního serveru přidána stejná IP adresa klienta, která byla přidána na primární server. Tento krok je nutný k provedení před spuštěním příkazu ADD SECONDARY pro zahájení geografické replikace.
ODEBRÁNÍ SEKUNDÁRNÍHO <PARTNER_SERVER_NAME> SERVERU
Odebere zadanou geograficky replikovanou sekundární databázi na zadaném serveru. Příkaz se spustí v databázi master
na serveru, který je hostitelem primární databáze.
Důležitý
Uživatel, který spouští příkaz REMOVE SECONDARY
, musí být dbManager na primárním serveru.
PŘEVZETÍ SLUŽEB PŘI SELHÁNÍ
Podporuje sekundární databázi v partnerství geografické replikace, na kterém se příkaz provede, aby se stal primárním a degraduje aktuální primární server, aby se stal novým sekundárním. V rámci tohoto procesu se režim geografické replikace dočasně přepne z asynchronního režimu na synchronní režim. Během procesu převzetí služeb při selhání:
- Primární přestane přebít nové transakce.
- Všechny nevyřízených transakcí se vyprázdní na sekundární.
- Sekundární se stane primární a začne asynchronní geografickou replikaci se starým primárním / novým sekundárním serverem.
Tato posloupnost zajišťuje, že nedojde ke ztrátě dat. Období, během kterého jsou obě databáze nedostupné, je v pořadí od 0 do 25 sekund, zatímco se role přepnou. Celková operace by neměla trvat déle než přibližně jednu minutu. Pokud je primární databáze při vydání tohoto příkazu nedostupná, příkaz selže s chybovou zprávou, že primární databáze není k dispozici. Pokud se proces převzetí služeb při selhání nedokončí a zobrazí se zablokovaný, můžete použít příkaz vynuceného převzetí služeb při selhání a přijmout ztrátu dat – a pokud potřebujete obnovit ztracená data, zavolejte devops (CSS) a obnovte ztracená data.
Důležitý
Uživatel, který spouští příkaz PŘEVZETÍ SLUŽEB PŘI SELHÁNÍ, musí být dbManager na primárním i sekundárním serveru.
FORCE_FAILOVER_ALLOW_DATA_LOSS
Podporuje sekundární databázi v partnerství geografické replikace, na kterém se příkaz provede, aby se stal primárním a degraduje aktuální primární server, aby se stal novým sekundárním. Tento příkaz použijte pouze v případě, že aktuální primární server už není k dispozici. Je určen pouze pro zotavení po havárii, pokud je obnovení dostupnosti kritické a některé ztráty dat jsou přijatelné.
Během vynuceného převzetí služeb při selhání:
- Zadaná sekundární databáze se okamžitě stane primární databází a začne přijímat nové transakce.
- Když se původní primární server může znovu připojit k nové primární, provede se přírůstková záloha na původní primární databázi a původní primární server se stane novou sekundární.
- Pokud chce uživatel obnovit data z této přírůstkové zálohy na staré primární databázi, zapojí devops/CSS.
- Pokud existují další sekundární soubory, automaticky se překonfigurují tak, aby se staly sekundárními novými primárními. Tento proces je asynchronní a může do dokončení tohoto procesu dojít ke zpoždění. Dokud se rekonfigurace nedokončí, budou sekundární i nadále sekundáři starého primárního serveru.
Důležitý
Uživatel, který spouští příkaz FORCE_FAILOVER_ALLOW_DATA_LOSS
, musí patřit do role dbmanager
na primárním i sekundárním serveru.
Poznámky
Chcete-li odebrat databázi, použijte DROP DATABASE. Chcete-li zmenšit velikost databáze, použijte DBCC SHRINKDATABASE.
Příkaz ALTER DATABASE
musí běžet v režimu automatického potvrzení (výchozí režim správy transakcí) a není povolený v explicitní nebo implicitní transakci.
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é vymazání ú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.
Mezipaměť procedur je také vyprázdněna v následujícím scénáři: Spustíte několik dotazů na databázi s výchozími možnostmi. Databáze se pak zahodí.
Zobrazení informací o databázi
Pomocí zobrazení katalogu, systémových funkcí a systémových uložených procedur můžete vracet informace o databázích, souborech a skupinách souborů.
Dovolení
Pokud chcete změnit databázi, musí být přihlašovací jméno správce serveru (vytvořené při zřízení logického serveru Azure SQL Database), správce serveru Microsoft Entra, člen databázové role dbmanager v master
, člen role databáze db_owner databáze v aktuální databázi nebo dbo
databáze. Microsoft Entra ID je (dříve Azure Active Directory).
Ke škálování databází prostřednictvím T-SQL je potřeba oprávnění ALTER DATABASE. Ke škálování databází prostřednictvím webu Azure Portal, PowerShellu, Azure CLI nebo rozhraní REST API se vyžadují oprávnění Azure RBAC, konkrétně role Přispěvatel, Přispěvatel databáze SQL nebo Role Azure RBAC přispěvatele SQL Serveru. Další informace najdete v předdefinovaných rolí Azure.
Příklady
A. Zkontrolujte možnosti edice a změňte je.
Nastaví edici a maximální velikost pro db1
databáze:
SELECT Edition = DATABASEPROPERTYEX('db1', 'EDITION'),
ServiceObjective = DATABASEPROPERTYEX('db1', 'ServiceObjective'),
MaxSizeInBytes = DATABASEPROPERTYEX('db1', 'MaxSizeInBytes');
ALTER DATABASE [db1] MODIFY (EDITION = 'Premium', MAXSIZE = 1024 GB, SERVICE_OBJECTIVE = 'P15');
B. Přesun databáze do jiného elastického fondu
Přesune existující databázi do fondu s názvem pool1
:
ALTER DATABASE db1
MODIFY ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = pool1 ) ) ;
C. Přidání sekundárního Geo-Replication
Vytvoří db1
sekundární databáze čitelné na serveru secondaryserver
db1
na místním serveru.
ALTER DATABASE db1
ADD SECONDARY ON SERVER secondaryserver
WITH ( ALLOW_CONNECTIONS = ALL );
D. Odebrání sekundárního Geo-Replication
Odebere sekundární databázi db1
na serveru secondaryserver
.
ALTER DATABASE db1
REMOVE SECONDARY ON SERVER testsecondaryserver;
E. Převzetí služeb při selhání do sekundárního Geo-Replication
Podporuje sekundární databázi db1
na serveru secondaryserver
stát se novou primární databází při spuštění na serveru secondaryserver
.
ALTER DATABASE db1 FAILOVER;
Poznámka
Další informace najdete v tématu
F. Vynucení převzetí služeb při selhání na Geo-Replication Sekundární se ztrátou dat
Vynutí sekundární databázi db1
na serveru secondaryserver
stát se novou primární databází při spuštění na serveru secondaryserver
, v případě, že primární server přestane být dostupný. Tato možnost může způsobovat ztrátu dat.
ALTER DATABASE db1 FORCE_FAILOVER_ALLOW_DATA_LOSS;
G. Aktualizace izolované databáze na úroveň služby S0 (edice Standard, úroveň výkonu 0)
Aktualizuje jednoúčelovou databázi na edici Standard (úroveň služby) s velikostí výpočetních prostředků (cíl služby) S0 a maximální velikostí 250 GB.
ALTER DATABASE [db1] MODIFY (EDITION = 'Standard', MAXSIZE = 250 GB, SERVICE_OBJECTIVE = 'S0');
H. Aktualizace redundance úložiště zálohování databáze
Aktualizuje redundanci úložiště zálohování databáze na zónově redundantní. Všechny budoucí zálohy této databáze používají nové nastavení. To zahrnuje zálohy obnovení k určitému bodu v čase a dlouhodobé zálohy uchovávání (pokud jsou nakonfigurované).
ALTER DATABASE db1 MODIFY BACKUP_STORAGE_REDUNDANCY = 'ZONE';
Související obsah
- CREATE DATABASE – Azure SQL Database
-
DATABASEPROPERTYEX - DROP DATABASE
- NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ
- EVENTDATA
- sp_spaceused
- sys.databases
- sys.database_files
- sys.filegroups
- sys.master_files
- systémových databází
- pokyny k zotavení po havárii – Azure SQL Database
- kontrolní seznam pro vysokou dostupnost a zotavení po havárii služby Azure SQL Database
- omezení prostředků DTU
- omezení prostředků virtuálních jader pro jednoúčelové databáze
- omezení prostředků virtuálních jader pro elastické fondy
* SQL Managed Instance *
Azure Synapse
analýzy
Přehled: Azure SQL Managed Instance
Ve službě Azure SQL Managed Instance použijte tento příkaz k nastavení možností databáze.
Vzhledem k jeho délce je syntaxe ALTER DATABASE
oddělená do více článků.
Článek | Popis |
---|---|
ALTER DATABASE |
|
Aktuální článek obsahuje syntaxi a související informace o nastavení možností souborů a skupin souborů, nastavení možností databáze a nastavení úrovně kompatibility databáze. | |
možnosti souborů ALTER DATABASE a skupin souborů | |
Poskytuje syntaxi a související informace pro přidávání a odebírání souborů a skupin souborů z databáze a pro změnu atributů souborů a skupin souborů. | |
možnosti ALTER DATABASE SET | |
Poskytuje syntaxi a související informace pro změnu atributů databáze pomocí možností SET ALTER DATABASE. | |
úroveň kompatibility ALTER DATABASE | |
Poskytuje syntaxi a související informace pro možnosti SET ALTER DATABASE, které souvisejí s úrovněmi kompatibility databáze. |
Syntax
-- Azure SQL Managed Instance syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| COLLATE collation_name
| <file_and_filegroup_options>
| SET <option_spec> [ ,...n ]
}
[;]
<file_and_filegroup_options>::=
<add_or_modify_files>::=
<filespec>::=
<add_or_modify_filegroups>::=
<filegroup_updatability_option>::=
<option_spec> ::=
{
<auto_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>
| <temporal_history_retention>
| <compatibility_level>
{ 160 | 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}
Argumenty
database_name
Je název databáze, která se má upravit.
SOUČASNÝ
Určuje, že by se měla změnit aktuální použitá databáze.
Poznámky
Chcete-li odebrat databázi, použijte DROP DATABASE.
Chcete-li zmenšit velikost databáze, použijte DBCC SHRINKDATABASE.
Příkaz
ALTER DATABASE
musí běžet v režimu automatického potvrzení (výchozí režim správy transakcí) a není povolený v explicitní nebo implicitní transakci.Mezipaměť plánů pro spravovanou instanci Azure SQL se vymaže nastavením jedné z následujících možností.
KOLACIONOVAT
ZMĚNA VÝCHOZÍHO NASTAVENÍ FILEGROUP
ÚPRAVA READ_ONLY FILEGROUP
ÚPRAVA READ_WRITE FILEGROUP
ZMĚNIT NÁZEV
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é vymazání ú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. Mezipaměť plánu se také vyprázdní, když se na databázi s výchozími možnostmi spustí několik dotazů. Databáze se pak zahodí.
Některé příkazy
ALTER DATABASE
vyžadují, aby se spustil výhradní zámek databáze. To je důvod, proč může selhat, když jiný aktivní proces drží zámek v databázi. Chyba hlášená v takovém případě jeMsg 5061, Level 16, State 1, Line 38
se zprávouALTER DATABASE failed because a lock could not be placed on database '<database name>'. Try again later
. Obvykle se jedná o přechodné selhání a jeho vyřešení, jakmile se uvolní všechny zámky v databázi, zkuste příkazALTER DATABASE
, který selhal. Systémové zobrazenísys.dm_tran_locks
uchovává informace o aktivních zámcích. Pokud chcete zkontrolovat, jestli databáze nemá sdílené nebo exkluzivní zámky, použijte následující dotaz.SELECT resource_type, resource_database_id, request_mode, request_type, request_status, request_session_id FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID('testdb');
Zobrazení informací o databázi
Pomocí zobrazení katalogu, systémových funkcí a systémových uložených procedur můžete vracet informace o databázích, souborech a skupinách souborů.
Dovolení
Databázi můžou změnit pouze hlavní přihlášení na úrovni serveru (vytvořené procesem zřizování) nebo členové role databáze dbcreator
.
Důležitý
Vlastník databáze nemůže databázi změnit, pokud není členem dbcreator
role.
Příklady
Následující příklady ukazují, jak nastavit automatické ladění a jak přidat soubor do databáze ve službě Azure SQL Managed Instance.
ALTER DATABASE WideWorldImporters
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON);
ALTER DATABASE WideWorldImporters
ADD FILE (NAME = 'data_17');
Související obsah
- CREATE DATABASE – Azure SQL Database
-
DATABASEPROPERTYEX - DROP DATABASE
- NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ
- EVENTDATA
- sp_configure
- sp_spaceused
- sys.databases
- sys.database_files
- sys.data_spaces
- sys.filegroups
- sys.master_files
- systémových databází
* Azure Synapse
Analýza *
Přehled: Azure Synapse Analytics
V Azure Synapse ALTER DATABASE
upraví určité možnosti konfigurace vyhrazeného fondu SQL.
Vzhledem k jeho délce je syntaxe ALTER DATABASE
oddělená do více článků.
možnosti ALTER DATABASE SET poskytují syntaxi a související informace pro změnu atributů databáze pomocí možností SET ALTER DATABASE
.
Syntax
ALTER DATABASE { database_name | CURRENT }
{
MODIFY NAME = new_database_name
| MODIFY ( <edition_option> [, ... n] )
| SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]
<edition_option> ::=
MAXSIZE = {
250 | 500 | 750 | 1024 | 5120 | 10240 | 20480
| 30720 | 40960 | 51200 | 61440 | 71680 | 81920
| 92160 | 102400 | 153600 | 204800 | 245760
} GB
| SERVICE_OBJECTIVE = {
'DW100' | 'DW200' | 'DW300' | 'DW400' | 'DW500'
| 'DW600' | 'DW1000' | 'DW1200' | 'DW1500' | 'DW2000'
| 'DW3000' | 'DW6000' | 'DW500c' | 'DW1000c' | 'DW1500c'
| 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c' | 'DW6000c'
| 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
}
Argumenty
database_name
Určuje název databáze, která se má upravit.
MODIFY NAME = new_database_name
Přejmenuje databázi s názvem zadaným jako new_database_name.
Možnost MODIFY NAME má v Azure Synapse určitá omezení podpory:
- Nepodporované fondy bezserverových fondů Azure Synapse
- Nepodporované s vyhrazenými fondy SQL vytvořenými v pracovním prostoru Azure Synapse
- Podporováno u vyhrazených fondů SQL (dříve SQL DW) vytvořených prostřednictvímwebu
Azure Portal, včetně fondů s připojeným pracovním prostorem
MAXSIZE
Výchozí hodnota je 245 760 GB (240 TB).
platí pro: optimalizované pro Compute Gen1
Maximální povolená velikost databáze. Databáze nemůže růst nad rámec MAXSIZE.
platí pro: optimalizované pro Compute Gen2
Maximální povolená velikost dat úložiště řádků v databázi. Data uložená v tabulkách rowstore, rozdílovém úložišti indexu columnstore nebo neclusterovaného indexu v clusterovém indexu columnstore se nemůžou zvětšit nad rámec MAXSIZE. Data komprimovaná do formátu columnstore nemají limit velikosti a není omezena hodnotou MAXSIZE.
SERVICE_OBJECTIVE
Určuje velikost výpočetních prostředků (cíl služby). Další informace o cílech služby pro Azure Synapse najdete v tématu
Dovolení
Vyžaduje tato oprávnění:
- Přihlášení objektu zabezpečení na úrovni serveru (vytvořené procesem zřizování) nebo
- Člen role databáze
dbmanager
.
Vlastník databáze nemůže změnit databázi, pokud vlastník není členem dbmanager
role.
Poznámky
Aktuální databáze musí být jiná než databáze, kterou měníte, a proto se při připojení k databázi master
musí spustit příkaz ALTER.
COMPATIBILITY_LEVEL v SQL Analytics je ve výchozím nastavení nastavená na 130 a nedá se změnit. Další informace naleznete v tématu ÚROVEŇ kompatibility ALTER DATABASE.
Poznámka
COMPATIBILITY_LEVEL se vztahuje pouze na zřízené prostředky (fondy).
Omezení
Pokud chcete spustit ALTER DATABASE
, musí být databáze online a nemůže být v pozastaveném stavu.
Příkaz ALTER DATABASE
musí běžet v režimu automatického potvrzení, což je výchozí režim správy transakcí. Toto nastavení je nastavené v nastavení připojení.
Příkaz ALTER DATABASE
nemůže být součástí uživatelem definované transakce.
Kolaci databáze nemůžete změnit.
Příklady
Před spuštěním těchto příkladů se ujistěte, že databáze, kterou upravujete, není aktuální databází. Aktuální databáze musí být jiná než databáze, kterou měníte, a proto se při připojení k databázi master
musí spustit příkaz ALTER.
A. Změna názvu databáze
ALTER DATABASE AdventureWorks2022
MODIFY NAME = Northwind;
B. Změna maximální velikosti databáze
ALTER DATABASE dw1 MODIFY ( MAXSIZE=10240 GB );
C. Změna velikosti výpočetních prostředků (cíl služby)
ALTER DATABASE dw1 MODIFY ( SERVICE_OBJECTIVE= 'DW1200' );
D. Změna maximální velikosti a velikosti výpočetních prostředků (cíl služby)
ALTER DATABASE dw1 MODIFY ( MAXSIZE=10240 GB, SERVICE_OBJECTIVE= 'DW1200' );
Související obsah
-
CREATE DATABASE (Azure Synapse Analytics) - elementy jazyka T-SQL pro vyhrazený fond SQL ve službě Azure Synapse Analytics
Azure Synapse
analýzy
* Analytics
Systém platformy (PDW) *
Přehled: Systém analytických platforem
V systému PDW (Analytics Platform System) alter DATABASE upravuje maximální možnosti velikosti databáze pro replikované tabulky, distribuované tabulky a transakční protokol. Tento příkaz použijte ke správě přidělení místa na disku pro databázi při růstu nebo zmenšení velikosti. Tento článek také popisuje syntaxi související s nastavením možností databáze v systému PDW (Analytics Platform System).
Syntax
-- Analytics Platform System
ALTER DATABASE database_name
SET ( <set_database_options> | <db_encryption_option> )
[;]
<set_database_options> ::=
{
AUTOGROW = { ON | OFF }
| REPLICATED_SIZE = size [GB]
| DISTRIBUTED_SIZE = size [GB]
| LOG_SIZE = size [GB]
| SET AUTO_CREATE_STATISTICS { ON | OFF }
| SET AUTO_UPDATE_STATISTICS { ON | OFF }
| SET AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}
<db_encryption_option> ::=
ENCRYPTION { ON | OFF }
Argumenty
database_name
Název databáze, která se má upravit. Chcete-li zobrazit seznam databází na zařízení, použijte sys.databases.
AUTOGROW = { ON | VYPNUTO }
Aktualizuje možnost AUTOGROW. Pokud je funkce AUTOGROW zapnutá, analytický systém (PDW) automaticky zvýší přidělený prostor pro replikované tabulky, distribuované tabulky a transakční protokol podle potřeby tak, aby vyhovoval nárůstu požadavků na úložiště. Pokud je funkce AUTOGROW vypnutá, vrátí analytický systém (PDW) chybu, pokud replikované tabulky, distribuované tabulky nebo transakční protokol překročí nastavení maximální velikosti.
REPLICATED_SIZE = velikost [GB]
Určuje nové maximální gigabajty na výpočetní uzel pro ukládání všech replikovaných tabulek v databázi, které se mění. Pokud plánujete prostor úložiště zařízení, musíte vynásobit REPLICATED_SIZE počtem výpočetních uzlů v zařízení.
DISTRIBUTED_SIZE = velikost [GB]
Určuje nové maximální gigabajty na databázi pro ukládání všech distribuovaných tabulek v databázi, které se mění. Velikost se distribuuje napříč všemi výpočetními uzly v zařízení.
LOG_SIZE = velikost [GB]
Určuje nové maximální gigabajty na databázi pro ukládání všech transakčních protokolů do databáze, které se mění. Velikost se distribuuje napříč všemi výpočetními uzly v zařízení.
ŠIFROVÁNÍ { ZAPNUTO | VYPNUTO }
Nastaví databázi tak, aby byla zašifrována (ZAPNUTO) nebo není zašifrovaná (VYPNUTO). Šifrování lze nakonfigurovat pouze pro systém PDW (Analytics Platform System), pokud je sp_pdw_database_encryption nastavena na 1. Před konfigurací transparentního šifrování dat je nutné vytvořit šifrovací klíč databáze. Další informace o šifrování databáze naleznete v tématu transparentní šifrování dat (TDE).
SET AUTO_CREATE_STATISTICS { ON | VYPNUTO }
Pokud je možnost automatického vytvoření statistiky AUTO_CREATE_STATISTICS zapnutá, optimalizátor dotazů podle potřeby vytvoří statistiky o jednotlivých sloupcích v predikátu dotazu, aby se zlepšily odhady kardinality pro plán dotazu. Tyto statistiky s jedním sloupcem se vytvářejí ve sloupcích, které ještě nemají histogram v existujícím objektu statistiky.
Výchozí hodnota je zapnutá pro nové databáze vytvořené po upgradu na AU7. Výchozí hodnota je vypnutá pro databáze vytvořené před upgradem.
Další informace o statistikách najdete v tématu Statistika
SET AUTO_UPDATE_STATISTICS { ON | VYPNUTO }
Pokud je možnost automatické statistiky aktualizace AUTO_UPDATE_STATISTICS zapnutá, optimalizátor dotazů určí, kdy může být statistika zahlcená, a pak je aktualizuje, když je používá dotaz. Statistiky se po vložení, aktualizaci, odstranění nebo sloučení změní rozdělení dat v tabulce nebo indexovém zobrazení zastaralou. 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í.
Výchozí hodnota je zapnutá pro nové databáze vytvořené po upgradu na AU7. Výchozí hodnota je vypnutá pro databáze vytvořené před upgradem.
Další informace o statistikách naleznete v tématu Statistika.
SET AUTO_UPDATE_STATISTICS_ASYNC { ON | VYPNUTO }
Možnost aktualizace asynchronní statistiky AUTO_UPDATE_STATISTICS_ASYNC určuje, jestli optimalizátor dotazů používá synchronní nebo asynchronní aktualizace statistik. Možnost AUTO_UPDATE_STATISTICS_ASYNC se vztahuje na objekty statistik vytvořené pro indexy, jednotlivé sloupce v predikátech dotazu a statistiky vytvořené pomocí příkazu CREATE STATISTICS
.
Výchozí hodnota je zapnutá pro nové databáze vytvořené po upgradu na AU7. Výchozí hodnota je vypnutá pro databáze vytvořené před upgradem.
Další informace o statistikách naleznete v tématu Statistika.
Dovolení
Vyžaduje oprávnění ALTER
k databázi.
Chybové zprávy
Pokud jsou automatické statistiky zakázané a pokusíte se změnit nastavení statistiky, pdW zobrazí výstup chyby This option isn't supported in PDW
. Správce systému může povolit automatické statistiky povolením přepínače funkce Automatické statistikyEnabled.
Poznámky
Hodnoty pro REPLICATED_SIZE
, DISTRIBUTED_SIZE
a LOG_SIZE
mohou být větší, rovny nebo menší než aktuální hodnoty databáze.
Omezení
Operace zvětšení a zmenšení jsou přibližné. Výsledné skutečné velikosti se mohou lišit od parametrů velikosti.
Systém PDW (Analytics Platform System) neprovádí příkaz ALTER DATABASE
jako atomické operace. Pokud se příkaz během provádění přeruší, změny, ke kterým již došlo, zůstanou.
Nastavení statistiky funguje jenom v případě, že správce povolil automatické statistiky. Pokud jste správce, pomocí přepínače funkcí Automatické statistikyEnabled povolte nebo zakažte automatické statistiky.
Chování uzamčení
Vezme sdílený zámek objektu DATABASE. Databázi, kterou používá jiný uživatel pro čtení nebo zápis, nemůžete změnit. To zahrnuje relace, které v databázi vydaly příkaz USE.
Představení
Zmenšení databáze může trvat hodně času a systémových prostředků v závislosti na velikosti skutečných dat v databázi a množství fragmentace disku. Například zmenšení databáze může trvat několik hodin nebo déle.
Určení průběhu šifrování
Pomocí následujícího dotazu můžete určit průběh transparentního šifrování dat databáze jako procento:
WITH
database_dek AS (
SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id,
dek.encryption_state, dek.percent_complete,
dek.key_algorithm, dek.key_length, dek.encryptor_thumbprint,
type
FROM sys.dm_pdw_nodes_database_encryption_keys AS dek
INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map
ON dek.database_id = node_db_map.database_id
AND dek.pdw_node_id = node_db_map.pdw_node_id
LEFT JOIN sys.pdw_database_mappings AS db_map
ON node_db_map .physical_name = db_map.physical_name
INNER JOIN sys.dm_pdw_nodes nodes
ON nodes.pdw_node_id = dek.pdw_node_id
WHERE dek.encryptor_thumbprint <> 0x
),
dek_percent_complete AS (
SELECT database_dek.database_id, AVG(database_dek.percent_complete) AS percent_complete
FROM database_dek
WHERE type = 'COMPUTE'
GROUP BY database_dek.database_id
)
SELECT DB_NAME( database_dek.database_id ) AS name,
database_dek.database_id,
ISNULL(
(SELECT TOP 1 dek_encryption_state.encryption_state
FROM database_dek AS dek_encryption_state
WHERE dek_encryption_state.database_id = database_dek.database_id
ORDER BY (CASE encryption_state
WHEN 3 THEN -1
ELSE encryption_state
END) DESC), 0)
AS encryption_state,
dek_percent_complete.percent_complete,
database_dek.key_algorithm, database_dek.key_length, database_dek.encryptor_thumbprint
FROM database_dek
INNER JOIN dek_percent_complete
ON dek_percent_complete.database_id = database_dek.database_id
WHERE type = 'CONTROL';
Úplný příklad demonstrující všechny kroky při implementaci transparentního šifrování dat najdete v tématu transparentního šifrování dat (TDE).
Příklady: Systém analytických platforem (PDW)
A. Změna nastavení AUTOGROW
Pro CustomerSales
databáze nastavte funkci AUTOGROW na ZAPNUTO .
ALTER DATABASE CustomerSales
SET ( AUTOGROW = ON );
B. Změna maximálního úložiště pro replikované tabulky
Následující příklad nastaví omezení úložiště replikované tabulky na 1 GB pro databázi CustomerSales
. Toto je limit úložiště na výpočetní uzel.
ALTER DATABASE CustomerSales
SET ( REPLICATED_SIZE = 1 GB );
C. Změna maximálního úložiště distribuovaných tabulek
Následující příklad nastaví limit distribuovaného úložiště tabulek na 1000 GB (jeden terabajt) pro databázi CustomerSales
. Toto je kombinovaný limit úložiště napříč zařízením pro všechny výpočetní uzly, nikoli limit úložiště na výpočetní uzel.
ALTER DATABASE CustomerSales
SET ( DISTRIBUTED_SIZE = 1000 GB );
D. Změna maximálního úložiště pro transakční protokol
Následující příklad aktualizuje databázi CustomerSales
tak, aby měla maximální velikost transakčního protokolu SQL Serveru 10 GB zařízení.
ALTER DATABASE CustomerSales
SET ( LOG_SIZE = 10 GB );
E. Kontrola aktuálních hodnot statistik
Následující dotaz vrátí aktuální statistické hodnoty pro všechny databáze. Hodnota 1
znamená, že je funkce zapnutá a 0
znamená, že je funkce vypnutá.
SELECT NAME,
is_auto_create_stats_on,
is_auto_update_stats_on,
is_auto_update_stats_async_on
FROM sys.databases;
F. Povolení statistik automatického vytváření a automatické aktualizace pro databázi
Pomocí následujícího příkazu můžete povolit automatické a asynchronní vytváření statistik pro databáze CustomerSales. Podle potřeby se vytvoří a aktualizuje statistiky s jedním sloupcem, aby se vytvořily vysoce kvalitní plány dotazů.
ALTER DATABASE CustomerSales
SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE CustomerSales
SET AUTO_UPDATE_STATISTICS ON;
ALTER DATABASE
SET AUTO_UPDATE_STATISTICS_ASYNC ON;
Související obsah
Přehled: Microsoft Fabric
Azure Synapse
analýzy
Microsoft Fabric
V Microsoft Fabric Warehouse tento příkaz upraví sklad.
Vzhledem k jeho délce je syntaxe ALTER DATABASE
oddělená do více článků.
Článek | Popis |
---|---|
ALTER DATABASE |
Aktuální článek obsahuje syntaxi a související informace pro změnu názvu a kolace databáze. |
možnosti ALTER DATABASE SET | Poskytuje syntaxi a související informace pro změnu atributů databáze pomocí možností SET ALTER DATABASE. |
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. Viz možnosti ALTER DATABASE SET.