Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server-
Hiermee genereert u een alleen-lezen kopie van een database met behulp van DBCC CLONEDATABASE
om prestatieproblemen met betrekking tot de queryoptimalisatie te onderzoeken.
Transact-SQL syntaxisconventies
Syntaxis
DBCC CLONEDATABASE
(
source_database_name
, target_database_name
)
[ WITH { [ NO_STATISTICS ] [ , NO_QUERYSTORE ] [ , VERIFY_CLONEDB | SERVICEBROKER ] [ , BACKUP_CLONEDB ] } ]
Argumenten
source_database_name
De naam van de te kopiëren database.
target_database_name
De naam van de database naar de brondatabase wordt gekopieerd. Deze database wordt gemaakt door DBCC CLONEDATABASE
en mag nog niet bestaan.
NO_STATISTICS
Van toepassing op: SQL Server 2014 (12.x) Service Pack 2 CU 3, SQL Server 2016 (13.x) Service Pack 1 en latere versies.
Hiermee geeft u op of tabel-/indexstatistieken moeten worden uitgesloten van de kloon. Als deze optie niet is opgegeven, worden tabel-/indexstatistieken automatisch opgenomen.
NO_QUERYSTORE
Van toepassing op: SQL Server 2016 (13.x) Service Pack 1 en latere versies.
Hiermee geeft u op of Query Store-gegevens moeten worden uitgesloten van de kloon. Als deze optie niet is opgegeven, worden Query Store-gegevens gekopieerd naar de kloon als Query Store is ingeschakeld in de brondatabase.
VERIFY_CLONEDB
Van toepassing op: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 en latere versies.
Controleert de consistentie van de nieuwe database. Als u VERIFY_CLONEDB
inschakelt, worden ook statistieken en Query Store-verzameling uitgeschakeld, zodat deze gelijk is aan het uitvoeren van WITH VERIFY_CLONEDB, NO_STATISTICS, NO_QUERYSTORE
.
De volgende opdracht kan worden gebruikt om te bepalen of de gekloonde database is geverifieerd:
SELECT DATABASEPROPERTYEX('clone_database_name', 'IsVerifiedClone');
SERVICEBROKER
Van toepassing op: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 en latere versies.
Hiermee geeft u op of systeemcatalogussen met betrekking tot servicebroker moeten worden opgenomen in de kloon. De optie SERVICEBROKER
kan niet worden gebruikt in combinatie met VERIFY_CLONEDB
.
BACKUP_CLONEDB
Van toepassing op: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 en latere versies.
Hiermee maakt en verifieert u een back-up van de kloondatabase. Als deze wordt gebruikt in combinatie met VERIFY_CLONEDB
, wordt de kloondatabase gecontroleerd voordat de back-up wordt gemaakt.
Opmerkingen
Een kloon van een database die is gegenereerd met DBCC CLONEDATABASE
is alleen bedoeld voor probleemoplossing en diagnostische doeleinden. De kloon is een alleen-lezen, schema-only kopie van de oorspronkelijke database en heeft beperkingen voor welke objecten worden gekopieerd. Zie de sectie Ondersteunde objecten voor meer informatie. Elk ander gebruik van een kloondatabase wordt niet ondersteund.
De volgende validaties worden uitgevoerd door DBCC CLONEDATABASE
. De opdracht mislukt als een van de validaties mislukt.
- De brondatabase moet een gebruikersdatabase zijn. Het klonen van systeemdatabases (
master
,model
,msdb
,tempdb
,distribution
database enzovoort) is niet toegestaan. - De brondatabase moet online of leesbaar zijn.
- Een database die dezelfde naam gebruikt als de kloondatabase, mag nog niet bestaan.
- De opdracht bevindt zich niet in een gebruikerstransactie.
Als alle validaties zijn geslaagd, wordt het klonen van de brondatabase uitgevoerd door de volgende bewerkingen:
- Hiermee maakt u een nieuwe doeldatabase die gebruikmaakt van dezelfde bestandsindeling als de bron, maar met standaardbestandsgrootten van de
model
-database. - Hiermee maakt u een interne momentopname van de brondatabase.
- Kopieert de systeemmetagegevens van de bron naar de doeldatabase.
- Hiermee kopieert u alle schema's voor alle objecten van de bron naar de doeldatabase.
- Kopieert statistieken voor alle indexen van de bron naar de doeldatabase.
Alle bestanden in de doeldatabase nemen de grootte en groei-instellingen over van de model
-database. De bestandsnamen voor de doeldatabase volgen de <source_file_name_underscore_random number>
conventie. Als de gegenereerde bestandsnaam al bestaat in de doelmap, mislukt DBCC CLONEDATABASE
.
DBCC CLONEDATABASE
biedt geen ondersteuning voor het maken van een kloon als er gebruikersobjecten (tabellen, indexen, schema's, rollen enzovoort) zijn die zijn gemaakt in de model
-database. Als gebruikersobjecten aanwezig zijn in de model
-database, mislukt de databaseklonen met het volgende foutbericht:
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>
Belangrijk
Als u columnstore-indexen hebt, raadpleegt u Overwegingen bij het afstemmen van de query's met Columnstore-indexen op kloondatabases om de columnstore-indexstatistieken bij te werken voordat u de opdracht DBCC CLONEDATABASE
uitvoert. Vanaf SQL Server 2019 (15.x) zijn de handmatige stappen die in het bovenstaande artikel worden beschreven, niet meer vereist omdat de DBCC CLONEDATABASE
opdracht deze informatie automatisch verzamelt.
Statistiekenblob voor columnstore-indexen
Vanaf SQL Server 2019 (15.x) legt DBCC CLONEDATABASE
automatisch de statistieken-blobs voor columnstore-indexen vast, dus er zijn geen handmatige stappen vereist.
DBCC CLONEDATABASE
maakt een alleen schemakopie van een database die alle elementen bevat die nodig zijn om queryprestaties op te lossen zonder de gegevens te kopiëren. In eerdere versies van SQL Server kopieerde de opdracht niet de statistieken die nodig zijn om problemen met columnstore-indexquery's en handmatige stappen op te lossen om deze informatie vast te leggen.
Zie Informatie over gegevensbeveiliging in gekloonde databasesvoor informatie over gegevensbeveiliging in gekloonde databases.
Momentopname van interne database
DBCC CLONEDATABASE
maakt gebruik van een momentopname van een interne database van de brondatabase voor de transactionele consistentie die nodig is om de kopie uit te voeren. Als u deze momentopname gebruikt, voorkomt u dat problemen met blokkeren en gelijktijdigheid optreden wanneer deze opdrachten worden uitgevoerd. Als er geen momentopname kan worden gemaakt, mislukt DBCC CLONEDATABASE
.
Vergrendelingen op databaseniveau worden bewaard tijdens de volgende stappen van het kopieerproces:
- De brondatabase valideren
- Gedeelde vergrendeling (S) ophalen voor de brondatabase
- Momentopname van de brondatabase maken
- Een kloondatabase maken (een lege database overgenomen van de
model
-database) - Exclusief (X) vergrendelen voor de kloondatabase
- De metagegevens kopiëren naar de kloondatabase
- Alle databasevergrendelingen vrijgeven
Zodra de opdracht is uitgevoerd, wordt de interne momentopname verwijderd.
TRUSTWORTHY
en DB_CHAINING
opties zijn uitgeschakeld voor een gekloonde database.
Ondersteunde objecten
Alleen de volgende objecten kunnen worden gekloond in de doeldatabase. Versleutelde objecten worden gekloond, maar kunnen niet worden gebruikt in de kloondatabase. Objecten die niet in de volgende sectie worden vermeld, worden niet ondersteund in de kloon:
- TOEPASSINGSROL
- BESCHIKBAARHEIDSGROEP
- COLUMNSTORE-INDEX
- CDB
- CDC
- Wijzigingen bijhouden 6, 7, 8
- CLR 1, 2
- DATABASE-EIGENSCHAPPEN
- VERSTEK
- BESTANDEN EN BESTANDSGROEPEN
- Volledige tekst 3
- FUNCTIE
- INDEX
- INLOGGEN
- PARTITIEFUNCTIE
- PARTITIESCHEMA
- PROCEDURE 4
- QUERY STORE 2, 5
- ROL
- REGEL
- SCHEMA
- VOLGORDE
- RUIMTELIJKE INDEX
- STATISTIEK
- SYNONIEM
- TABLE 9
- VOOR GEHEUGEN GEOPTIMALISEERDE TABELLEN 2
- FILESTREAM- EN FILETABLE-OBJECTEN 1, 2
- TREKKER
- TYPE
- BIJGEWERKTE DATABASE
- GEBRUIKER
- BEKIJKEN
- XML-INDEX
- XML-SCHEMAVERZAMELING
1 vanaf SQL Server 2014 (12.x) Service Pack 2 CU 3.
2 vanaf SQL Server 2016 (13.x) Service Pack 1.
3 vanaf SQL Server 2016 (13.x) Service Pack 1 CU 2.
4 Transact-SQL procedures worden ondersteund in alle releases vanaf SQL Server 2014 (12.x) Service Pack 2. CLR-procedures worden ondersteund vanaf SQL Server 2014 (12.x) Service Pack 2 CU 3. Systeemeigen gecompileerde procedures worden ondersteund vanaf SQL Server 2016 (13.x) Service Pack 1.
5 Query Store-gegevens worden alleen gekopieerd als deze zijn ingeschakeld in de brondatabase. Als u de meest recente runtimestatistieken wilt kopiëren als onderdeel van de Query Store, voert u sp_query_store_flush_db
uit om de runtimestatistieken leeg te maken in de Query Store voordat u DBCC CLONEDATABASE
uitvoert.
6 vanaf SQL Server 2016 (13.x) Service Pack 2 CU 10.
7 vanaf SQL Server 2017 (14.x) Service Pack 2 CU 17.
8 vanaf SQL Server 2019 (15.x) CU 1 en latere versies.
9 De meeste systeemtabellen die zijn gemarkeerd als is_ms_shipped
niet worden gekloond.
Machtigingen
Vereist lidmaatschap van de sysadmin vaste serverfunctie.
Foutberichten over logboeken
De volgende berichten zijn een voorbeeld van de berichten die zijn vastgelegd in het foutenlogboek tijdens het kloonproces:
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'.
Over servicepacks voor SQL Server
Servicepacks zijn cumulatief. Elk nieuw servicepack bevat alle oplossingen die zich in de vorige servicepacks bevinden, samen met eventuele nieuwe oplossingen. We raden u aan het meest recente servicepack en de meest recente cumulatieve update voor dat servicepack toe te passen. U hoeft geen eerder servicepack te installeren voordat u het nieuwste servicepack installeert. Zie Tabel 1 in Meest recente updates en versiegeschiedenis voor SQL Server- voor meer informatie over het nieuwste servicepack en de meest recente cumulatieve update.
Notitie
De zojuist gegenereerde database die is gegenereerd op basis van DBCC CLONEDATABASE, wordt niet ondersteund voor gebruik als productiedatabase en is voornamelijk bedoeld voor probleemoplossing en diagnostische doeleinden. Het is raadzaam de gekloonde database los te maken nadat de database is gemaakt.
Database-eigenschappen
DATABASEPROPERTYEX('dbname', 'IsClone')
retourneert 1 als de database is gegenereerd met behulp van DBCC CLONEDATABASE
.
DATABASEPROPERTYEX('dbname', 'IsVerifiedClone')
retourneert 1 als de database is geverifieerd met behulp van WITH VERIFY_CLONEDB
.
Voorbeelden
Een. Een kloon maken van een database die schema, statistieken en Query Store bevat
In het volgende voorbeeld wordt een kloon gemaakt van de AdventureWorks2022
-database met schema-, statistieken- en Query Store-gegevens (SQL Server 2016 (13.x) Service Pack 1 en latere versies):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone);
GO
B. Een alleen-schema-kloon van een database maken zonder statistieken
In het volgende voorbeeld wordt een kloon gemaakt van de AdventureWorks2022
-database die geen statistieken bevat (SQL Server 2014 (12.x) Service Pack 2 CU 3 en latere versies):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS;
GO
C. Een alleen-schema-kloon van een database maken zonder statistieken en Query Store
In het volgende voorbeeld wordt een kloon gemaakt van de AdventureWorks2022
-database die geen statistieken en Query Store-gegevens bevat (SQL Server 2016 (13.x) Service Pack 1 en latere versies):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS, NO_QUERYSTORE;
GO
D. Een kloon maken van een database die is geverifieerd
In het volgende voorbeeld wordt een alleen-schema-kloon gemaakt van de AdventureWorks2022
-database zonder statistieken en Query Store-gegevens die zijn geverifieerd (SQL Server 2016 (13.x) Service Pack 2 en latere versies):
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB;
GO
E. Een kloon maken van een database die is geverifieerd voor gebruik met een back-up van de gekloonde database
In het volgende voorbeeld wordt een alleen-schema-kloon gemaakt van de AdventureWorks2022
-database zonder statistieken en Query Store-gegevens die zijn geverifieerd voor gebruik. Er wordt ook een geverifieerde back-up van de gekloonde database gemaakt (SQL Server 2016 (13.x) Service Pack 2 en latere versies).
DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB, BACKUP_CLONEDB;
GO