Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Generuje kopii databáze jen pro čtení jen pro čtení pomocí DBCC CLONEDATABASE za účelem zkoumání problémů s výkonem souvisejících s optimalizátorem dotazů.
Syntaxe
DBCC CLONEDATABASE
(
source_database_name
, target_database_name
)
[ WITH { [ NO_STATISTICS ] [ , NO_QUERYSTORE ] [ , VERIFY_CLONEDB | SERVICEBROKER ] [ , BACKUP_CLONEDB ] } ]
Argumenty
source_database_name
Název databáze, která se má zkopírovat.
target_database_name
Název databáze, do které bude zdrojová databáze zkopírována. Tuto databázi vytvoří DBCC CLONEDATABASE a už by neměla existovat.
NO_STATISTICS
platí pro: SQL Server 2014 (12.x) Service Pack 2 CU 3, SQL Server 2016 (13.x) Service Pack 1 a novější verze.
Určuje, jestli je potřeba z klonu vyloučit statistiky tabulky nebo indexu. Pokud tuto možnost nezadáte, automaticky se zahrnou statistiky tabulky nebo indexu.
NO_QUERYSTORE
platí pro: SQL Server 2016 (13.x) Service Pack 1 a novější verze.
Určuje, jestli se data úložiště dotazů musí z klonu vyloučit. Pokud tato možnost není zadaná, data úložiště dotazů se zkopírují do klonu, pokud je ve zdrojové databázi povolené úložiště dotazů.
VERIFY_CLONEDB
platí pro: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 a novější verze.
Ověřuje konzistenci nové databáze. Povolením VERIFY_CLONEDB také zakážete statistiky a kolekci úložiště dotazů, takže je ekvivalentní spuštění WITH VERIFY_CLONEDB, NO_STATISTICS, NO_QUERYSTORE.
K určení, jestli byla naklonovaná databáze ověřená, můžete použít následující příkaz:
SELECT DATABASEPROPERTYEX('clone_database_name', 'IsVerifiedClone');
SERVISNÍ MAKLÉŘ
platí pro: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 a novější verze.
Určuje, jestli by se do klonu měly zahrnout katalogy systému související se zprostředkovatelem služeb. Možnost SERVICEBROKER nelze použít v kombinaci s VERIFY_CLONEDB.
BACKUP_CLONEDB
platí pro: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 a novější verze.
Vytvoří a ověří zálohu klonovací databáze. Pokud se používá v kombinaci s VERIFY_CLONEDB, klonovaná databáze se ověří před provedením zálohování.
Poznámky
Klon databáze vygenerované pomocí DBCC CLONEDATABASE je určený pouze pro účely řešení potíží a diagnostiky. Klon je kopie původní databáze určená jen pro čtení a má omezení pro objekty, které se kopírují. Další podrobnosti najdete v části Podporované objekty. Jakékoli jiné použití klonovací databáze není podporováno.
Následující ověření provádí DBCC CLONEDATABASE. Příkaz selže, pokud některé z ověření selže.
- Zdrojová databáze musí být uživatelská databáze. Klonování systémových databází (
master,model,msdb,tempdb, databázedistributionatd.) není povolené. - Zdrojová databáze musí být online nebo čitelná.
- Databáze, která používá stejný název jako klonovací databáze, již nesmí existovat.
- Příkaz není v transakci uživatele.
Pokud jsou všechna ověření úspěšná, klonování zdrojové databáze se provádí následujícími operacemi:
- Vytvoří novou cílovou databázi, která používá stejné rozložení souboru jako zdroj, ale s výchozími velikostmi souborů z
modeldatabáze. - Vytvoří interní snímek zdrojové databáze.
- Zkopíruje systémová metadata ze zdroje do cílové databáze.
- Zkopíruje všechna schémata pro všechny objekty ze zdroje do cílové databáze.
- Zkopíruje statistiku pro všechny indexy ze zdroje do cílové databáze.
Všechny soubory v cílové databázi zdědí nastavení velikosti a růstu z model databáze. Názvy souborů cílové databáze se řídí <source_file_name_underscore_random number> konvencí. Pokud už v cílové složce existuje vygenerovaný název souboru, DBCC CLONEDATABASE selže.
DBCC CLONEDATABASE nepodporuje vytvoření klonu, pokud existují nějaké uživatelské objekty (tabulky, indexy, schémata, role atd.), které byly vytvořeny v databázi model. Pokud se objekty uživatelů nacházejí v databázi model, klon databáze selže s následující chybovou zprávou:
Msg 2601, Level 14, State 1, Line 1
Cannot insert duplicate key row in object <system table> with unique index 'index name'. The duplicate key value is <key value>
Důležitý
Pokud máte indexy columnstore, přečtěte si Důležité informace o ladění dotazů pomocí indexů Columnstore na klonované databáze aktualizovat statistiky indexu columnstore před spuštěním příkazu DBCC CLONEDATABASE. Počínaje SQL Serverem 2019 (15.x) už nebudou vyžadovány ruční kroky popsané v článku výše, protože příkaz DBCC CLONEDATABASE tyto informace shromažďuje automaticky.
Objekt blob statistiky pro indexy columnstore
Počínaje SQL Serverem 2019 (15.x) DBCC CLONEDATABASE automaticky zachytává objekty blob statistik pro indexy columnstore, takže nejsou potřeba žádné ruční kroky.
DBCC CLONEDATABASE vytvoří kopii databáze, která obsahuje všechny prvky potřebné k řešení problémů s výkonem dotazů bez kopírování dat. V předchozích verzích SQL Serveru příkaz nezkopíroval statistiky potřebné k přesnému řešení potíží s dotazy indexu columnstore a ruční kroky potřebné k zachycení těchto informací.
Informace týkající se zabezpečení dat u klonovaných databází najdete v tématu Principy zabezpečení dat v klonovaných databázích.
Snímek interní databáze
DBCC CLONEDATABASE používá interní snímek databáze zdrojové databáze pro transakční konzistenci, která je potřebná k provedení kopie. Použití tohoto snímku brání problémům s blokováním a souběžností při spuštění těchto příkazů. Pokud nejde vytvořit snímek, DBCC CLONEDATABASE selže.
Zámky na úrovni databáze se uchovávají během následujících kroků procesu kopírování:
- Ověření zdrojové databáze
- Získání sdíleného zámku (S) pro zdrojovou databázi
- Vytvoření snímku zdrojové databáze
- Vytvoření klonované databáze (prázdná databáze zděděná z databáze
model) - Získání výhradního zámku (X) pro klonovací databázi
- Zkopírujte metadata do klonovací databáze.
- Uvolnění všech zámků databáze
Jakmile se příkaz dokončí, interní snímek se zahodí.
TRUSTWORTHY a možnosti DB_CHAINING jsou v klonované databázi vypnuté.
Podporované objekty
V cílové databázi lze naklonovat pouze následující objekty. Šifrované objekty se naklonují, ale v klonované databázi se nedají použít. Klon nepodporuje všechny objekty, které nejsou uvedené v následující části:
- APLIKAČNÍ ROLE
- SKUPINA DOSTUPNOSTI
- sloupcový index
- CDB
- CDC
- Sledování změn 6, 7, 8
- CLR 1, 2
- VLASTNOSTI DATABÁZE
- VÝCHOZÍ
- SOUBORY A SKUPINY SOUBORŮ
- Fulltextový 3
- FUNKCE
- Rejstřík
- PŘIHLÁŠENÍ DO SYSTÉMU
- FUNKCE ODDÍLU
- SCHÉMA ODDÍLŮ
- 4
- ÚLOŽIŠTĚ DOTAZŮ 2, 5
- Role
- PRAVIDLO
- SCHÉMA
- POSLOUPNOST
- PROSTOROVÝ INDEX
- STATISTIKA
- SYNONYMUM
- TABULKA 9
- TABULKY OPTIMALIZOVANÉ PRO PAMĚŤ 2
- FILESTREAM A FILETABLE OBJECTS 1, 2
- SPOUŠŤ
- TYP
- UPGRADOVANÁ DATABÁZE
- UŽIVATEL
- POHLED
- XML INDEX
- KOLEKCE SCHÉMAT XML
1 Počínaje SQL Serverem 2014 (12.x) Service Pack 2 CU 3.
2 Počínaje sql Serverem 2016 (13.x) Service Pack 1.
3 Počínaje SQL Serverem 2016 (13.x) Service Pack 1 CU 2.
4 Transact-SQL postupy jsou podporovány ve všech verzích počínaje aktualizací SQL Server 2014 (12.x) Service Pack 2. Postupy CLR se podporují od SQL Serveru 2014 (12.x) Service Pack 2 CU 3. Nativně kompilované procedury jsou podporovány od SQL Serveru 2016 (13.x) Service Pack 1.
5 data úložiště dotazů se zkopírují jenom v případě, že je ve zdrojové databázi povolená. Pokud chcete zkopírovat nejnovější statistiky modulu runtime jako součást úložiště dotazů, spusťte sp_query_store_flush_db vyprázdněte statistiky modulu runtime do úložiště dotazů před spuštěním DBCC CLONEDATABASE.
6 Počínaje sql Serverem 2016 (13.x) Service Pack 2 CU 10.
7 Počínaje SQL Serverem 2017 (14.x) Service Pack 2 CU 17.
8 Počínaje SQL Serverem 2019 (15.x) CU 1 a novějšími verzemi.
9 Většina systémových tabulek označených příznakem is_ms_shipped se nenaklonuje.
Dovolení
Vyžaduje členství v pevné roli serveru správce systému.
Zprávy protokolu chyb
Následující zprávy jsou příkladem zpráv přihlášených v protokolu chyb během procesu klonování:
2018-03-26 15:33:56.05 spid53 Database cloning for 'sourcedb' has started with target as 'sourcedb_clone'.
2018-03-26 15:33:56.46 spid53 Starting up database 'sourcedb_clone'.
2018-03-26 15:33:57.80 spid53 Setting database option TRUSTWORTHY to OFF for database 'sourcedb_clone'.
2018-03-26 15:33:57.80 spid53 Setting database option DB_CHAINING to OFF for database 'sourcedb_clone'.
2018-03-26 15:33:57.88 spid53 Starting up database 'sourcedb_clone'.
2018-03-26 15:33:57.91 spid53 Database 'sourcedb_clone' is a cloned database. A cloned database should be used for diagnostic purposes only and is not supported for use in a production environment.
2018-03-26 15:33:57.92 spid53 Database cloning for 'sourcedb' has finished. Cloned database is 'sourcedb_clone'.
Informace o aktualizacích Service Pack pro SQL Server
Aktualizace Service Pack jsou kumulativní. Každá nová aktualizace Service Pack obsahuje všechny opravy, které jsou v předchozích aktualizacích Service Pack, spolu s novými opravami. Naším doporučením je použít nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci pro tuto aktualizaci Service Pack. Před instalací nejnovější aktualizace Service Pack nemusíte instalovat předchozí aktualizaci Service Pack. Další informace o nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci najdete v tématu Tabulka 1 v Nejnovější aktualizace a historie verzí sql Serveru.
Poznámka
Nově vygenerovaná databáze generovaná z DBCC CLONEDATABASE se nepodporuje jako produkční databáze a je primárně určená pro účely řešení potíží a diagnostiky. Po vytvoření databáze doporučujeme odpojit klonovanou databázi.
Vlastnosti databáze
DATABASEPROPERTYEX('dbname', 'IsClone') vrátí hodnotu 1, pokud byla databáze vygenerována pomocí DBCC CLONEDATABASE.
DATABASEPROPERTYEX('dbname', 'IsVerifiedClone') vrátí hodnotu 1, pokud byla databáze úspěšně ověřena pomocí WITH VERIFY_CLONEDB.
Příklady
A. Vytvoření klonu databáze, která obsahuje schéma, statistiky a úložiště dotazů
Následující příklad vytvoří klon databáze AdventureWorks2025, která obsahuje data schématu, statistiky a úložiště dotazů (SQL Server 2016 (13.x) Service Pack 1 a novější verze):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone);
GO
B. Vytvoření klonování databáze pouze schématem bez statistik
Následující příklad vytvoří klon databáze AdventureWorks2025, která nezahrnuje statistiky (SQL Server 2014 (12.x) Service Pack 2 CU 3 a novější verze):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS;
GO
C. Vytvoření klonování databáze pouze schématem bez statistik a úložiště dotazů
Následující příklad vytvoří klon databáze AdventureWorks2025, která nezahrnuje statistiky a data úložiště dotazů (SQL Server 2016 (13.x) Service Pack 1 a novější verze):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS, NO_QUERYSTORE;
GO
D. Vytvoření klonu databáze, která je ověřená
Následující příklad vytvoří klon databáze jen pro schéma AdventureWorks2025 bez statistik a dat úložiště dotazů, která jsou ověřena (SQL Server 2016 (13.x) Service Pack 2 a novější verze):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB;
GO
E. Vytvoření klonu databáze, která je ověřená pro použití, která zahrnuje zálohu klonované databáze
Následující příklad vytvoří klon databáze jen pro schéma AdventureWorks2025 bez statistik a dat úložiště dotazů, která jsou ověřena pro použití. Vytvoří se také ověřená záloha klonované databáze (SQL Server 2016 (13.x) Service Pack 2 a novější verze).
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB, BACKUP_CLONEDB;
GO