Megosztás a következőn keresztül:


DBCC KLÓNADATBÁZIS (Transact-SQL)

A következőkre vonatkozik:SQL Server

A lekérdezésoptimalizálóval kapcsolatos teljesítményproblémák kivizsgálása érdekében létrehoz egy csak sémaalapú, írásvédett másolatot az adatbázisról DBCC CLONEDATABASE használatával.

Transact-SQL szintaxis konvenciói

Szintaxis

DBCC CLONEDATABASE
(
    source_database_name
    ,  target_database_name
)
    [ WITH { [ NO_STATISTICS ] [ , NO_QUERYSTORE ] [ , VERIFY_CLONEDB | SERVICEBROKER ] [ , BACKUP_CLONEDB ] } ]

Érvek

source_database_name

A másolandó adatbázis neve.

target_database_name

Annak az adatbázisnak a neve, amelybe a forrásadatbázis át lesz másolva. Ezt az adatbázist a DBCC CLONEDATABASE hozza létre, és nem szabad még léteznie.

NO_STATISTICS

A következőkre vonatkozik: SQL Server 2014 (12.x) Service Pack 2 CU 3, SQL Server 2016 (13.x) Service Pack 1 és újabb verziók.

Megadja, hogy a tábla-/indexstatisztikákat ki kell-e zárni a klónból. Ha ez a beállítás nincs megadva, a rendszer automatikusan belefoglalja a táblázat-/indexstatisztikákat.

NO_QUERYSTORE

A következőkre vonatkozik: SQL Server 2016 (13.x) Service Pack 1 és újabb verziókra.

Megadja, hogy a lekérdezéstár adatait ki kell-e zárni a klónból. Ha ez a beállítás nincs megadva, a lekérdezéstár adatai a klónba lesznek másolva, ha a lekérdezéstár engedélyezve van a forrásadatbázisban.

VERIFY_CLONEDB

A következőkre vonatkozik: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 és újabb verziók.

Ellenőrzi az új adatbázis konzisztenciáját. Az VERIFY_CLONEDB engedélyezése letiltja a statisztikákat és a lekérdezéstár gyűjteményét is, így egyenértékű a WITH VERIFY_CLONEDB, NO_STATISTICS, NO_QUERYSTOREfuttatásával.

A következő paranccsal állapítható meg, hogy a klónozott adatbázis ellenőrzése megtörtént-e:

SELECT DATABASEPROPERTYEX('clone_database_name', 'IsVerifiedClone');

SZOLGÁLTATÁSKÖZVETÍTŐ

A következőkre vonatkozik: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 és újabb verziók.

Megadja, hogy a szolgáltatásközvetítővel kapcsolatos rendszerkatalógusok szerepeljenek-e a klónban. A SERVICEBROKER beállítás nem használható VERIFY_CLONEDBkombinálva.

BACKUP_CLONEDB

A következőkre vonatkozik: SQL Server 2014 (12.x) Service Pack 3, SQL Server 2016 (13.x) Service Pack 2, SQL Server 2017 (14.x) CU 8 és újabb verziók.

Létrehozza és ellenőrzi a klónadatbázis biztonsági másolatát. Ha a VERIFY_CLONEDBkombinálva használják, a rendszer a biztonsági mentés előtt ellenőrzi a klónadatbázist.

Megjegyzések

A DBCC CLONEDATABASE létrehozott adatbázis klónja csak hibaelhárítási és diagnosztikai célokra szolgál. A klón az eredeti adatbázis írásvédett, sémaalapú másolata, és korlátozásokkal rendelkezik arra, hogy mely objektumok legyenek átmásolva. További részletekért tekintse meg a támogatott objektumok szakaszt. A klónadatbázis egyéb használata nem támogatott.

Az alábbi ellenőrzéseket a DBCC CLONEDATABASEhajtja végre. A parancs meghiúsul, ha valamelyik ellenőrzés sikertelen.

  • A forrásadatbázisnak felhasználói adatbázisnak kell lennie. A rendszeradatbázisok (master, model, msdb, tempdb, distribution adatbázis stb.) klónozása nem engedélyezett.
  • A forrásadatbázisnak online vagy olvashatónak kell lennie.
  • A klónadatbázis nevével megegyező nevű adatbázis nem létezhet.
  • A parancs nincs felhasználói tranzakcióban.

Ha az összes ellenőrzés sikeres, a forrásadatbázis klónozását a következő műveletek hajtják végre:

  • Létrehoz egy új céladatbázist, amely ugyanazt a fájlelrendezést használja, mint a forrás, de az alapértelmezett fájlméretet a model adatbázisból.
  • Belső pillanatképet hoz létre a forrásadatbázisról.
  • Másolja a rendszer metaadatait a forrásból a céladatbázisba.
  • Másolja az összes objektum sémáját a forrásból a céladatbázisba.
  • A forrásból a céladatbázisba másol minden index statisztikáit.

A céladatbázis összes fájlja örökli a méret- és növekedési beállításokat a model adatbázistól. A céladatbázis fájlnevei a <source_file_name_underscore_random number> konvenciót követik. Ha a létrehozott fájlnév már létezik a célmappában, DBCC CLONEDATABASE sikertelen lesz.

DBCC CLONEDATABASE nem támogatja a klónok létrehozását, ha vannak olyan felhasználói objektumok (táblák, indexek, sémák, szerepkörök stb.), amelyek a model adatbázisban lettek létrehozva. Ha felhasználói objektumok találhatók az model adatbázisban, az adatbázis klónozása a következő hibaüzenettel meghiúsul:

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>

Fontos

Ha oszlopcentrikus indexekkel rendelkezik, a parancs futtatása előtt tekintse meg DBCC CLONEDATABASE frissíteni az oszlopcentrikus indexstatisztikákat. Az SQL Server 2019-től kezdve (15.x) a fenti cikkben ismertetett manuális lépésekre már nincs szükség, mivel a DBCC CLONEDATABASE parancs automatikusan összegyűjti ezeket az információkat.

Oszlopcentrikus indexek statisztikai blobja

Az SQL Server 2019-től kezdve (15.x) DBCC CLONEDATABASE automatikusan rögzíti az oszlopcentrikus indexekhez tartozó statisztikai blobokat, így nincs szükség manuális lépésekre. DBCC CLONEDATABASE létrehoz egy csak sémapéldányt tartalmazó adatbázist, amely tartalmazza a lekérdezési teljesítményproblémák elhárításához szükséges összes elemet az adatok másolása nélkül. Az SQL Server korábbi verzióiban a parancs nem másolja ki az oszlopcentrikus index-lekérdezések pontos hibaelhárításához szükséges statisztikákat, és manuális lépésekre volt szükség az információk rögzítéséhez.

A klónozott adatbázisok adatbiztonságával kapcsolatos információkért lásd: A klónozott adatbázisok adatbiztonságának ismertetése.

Belső adatbázis-pillanatkép

DBCC CLONEDATABASE a forrásadatbázis belső adatbázis-pillanatképét használja a másolat végrehajtásához szükséges tranzakciós konzisztencia érdekében. A pillanatkép használatával megelőzheti a parancsok végrehajtásakor fellépő blokkolási és egyidejűségi problémákat. Ha nem hozható létre pillanatkép, DBCC CLONEDATABASE sikertelen lesz.

Az adatbázisszintű zárolások a másolási folyamat következő lépései során vannak tárolva:

  • A forrásadatbázis ellenőrzése
  • Megosztott (S) zárolás lekérése a forrásadatbázishoz
  • Pillanatkép létrehozása a forrásadatbázisról
  • Klónadatbázis létrehozása (a model adatbázistól örökölt üres adatbázis)
  • Exkluzív (X) zárolás lekérése a klónadatbázishoz
  • Metaadatok másolása a klónozott adatbázisba
  • Az összes adatbázis-zárolás feloldása

Amint a parancs fut, a rendszer elveti a belső pillanatképet. TRUSTWORTHY és DB_CHAINING beállítások klónozott adatbázison vannak kikapcsolva.

Támogatott objektumok

A céladatbázisban csak a következő objektumok klónozása végezhető el. A titkosított objektumok klónozhatók, de nem használhatóak a klónozott adatbázisban. Az alábbi szakaszban nem szereplő objektumok nem támogatottak a klónban:

  • ALKALMAZÁSSZEREPKÖR
  • RENDELKEZÉSRE ÁLLÁSI CSOPORT
  • OSZLOPCENTRIKUS INDEX
  • CDB
  • CDC
  • Változáskövetési 6, 7, 8
  • CLR 1, 2
  • ADATBÁZIS TULAJDONSÁGAI
  • ALAPÉRTELMEZETT
  • FÁJLOK ÉS FÁJLCSOPORTOK
  • Teljes szöveges 3
  • FUNKCIÓ
  • Tartalomjegyzék
  • BEJELENTKEZÉS
  • PARTÍCIÓ FÜGGVÉNY
  • PARTÍCIÓS SÉMA
  • ELJÁRÁS 4
  • LEKÉRDEZÉSI TÁROLÓ 2, 5
  • SZEREP
  • SZABÁLY
  • SÉMA
  • KÖVETKEZÉS
  • TÉRBELI INDEX
  • STATISZTIKA
  • SZINONIMA
  • 9. TÁBLÁZAT
  • MEMÓRIAOPTIMALIZÁLT TÁBLÁK 2
  • FILESTREAM ÉS FILETABLE OBJECTS 1, 2
  • KIVÁLT
  • TÍPUS
  • FRISSÍTETT ADATBÁZIS
  • FELHASZNÁLÓ
  • NÉZET
  • XML-INDEX
  • XML-SÉMAGYŰJTEMÉNY

1 az SQL Server 2014 (12.x) Service Pack 2 CU 3-ban kezdődik.

2 az SQL Server 2016 (13.x) Service Pack 1 verziójában.

3 az SQL Server 2016 (13.x) Service Pack 1 CU 2-től kezdve.

4 Transact-SQL eljárás minden kiadásban támogatott, kezdve az SQL Server 2014 (12.x) Service Pack 2-vel. A CLR-eljárások az SQL Server 2014 (12.x) Service Pack 2 CU 3-tól kezdve támogatottak. A natívan lefordított eljárások az SQL Server 2016 (13.x) Service Pack 1-től kezdve támogatottak.

5 lekérdezéstár adatai csak akkor lesznek másolva, ha engedélyezve van a forrásadatbázisban. A legújabb futtatókörnyezeti statisztikák lekérdezéstár részeként történő másolásához hajtsa végre a sp_query_store_flush_db a futtatókörnyezet statisztikáinak a Lekérdezéstárba való kiürítéséhez, mielőtt végrehajtja DBCC CLONEDATABASE.

6 az SQL Server 2016 (13.x) Service Pack 2 CU 10-ben kezdődik.

7 az SQL Server 2017 (14.x) Service Pack 2 CU 17-től kezdve.

8 az SQL Server 2019 (15.x) CU 1 és újabb verzióiban.

9 A legtöbb is_ms_shipped megjelölt rendszertábla nincs klónozva.

Engedélyek

A sysadmin rögzített kiszolgálói szerepkör tagságát igényli.

Hibaüzenetek

Az alábbi üzenetek a hibanaplóban a klónozási folyamat során naplózott üzenetekre mutatnak példát:

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'.

Tudnivalók az SQL Server szervizcsomagjairól

A szervizcsomagok kumulatívak. Minden új szervizcsomag tartalmazza a korábbi szervizcsomagokban található összes javítást, valamint az új javításokat. Javasoljuk, hogy alkalmazza a legújabb szervizcsomagot és a szervizcsomag legújabb kumulatív frissítését. A legújabb szervizcsomag telepítése előtt nem kell telepítenie egy korábbi szervizcsomagot. Az SQL Server legújabb frissítéseinek és verzióelőzményeinek 1. táblázatában talál további információt a legújabb szervizcsomagról és a legújabb kumulatív frissítésről.

Jegyzet

A DBCC CLONEDATABASE-ből létrehozott újonnan létrehozott adatbázis nem használható éles adatbázisként, és elsősorban hibaelhárítási és diagnosztikai célokra szolgál. Javasoljuk, hogy az adatbázis létrehozása után válassza le a klónozott adatbázist.

Adatbázis tulajdonságai

DATABASEPROPERTYEX('dbname', 'IsClone') 1 értéket ad vissza, ha az adatbázis DBCC CLONEDATABASEhasználatával jött létre.

DATABASEPROPERTYEX('dbname', 'IsVerifiedClone') 1 értéket ad vissza, ha az adatbázist sikeresen ellenőrizték a következővel WITH VERIFY_CLONEDB: .

Példák

Egy. Séma, statisztika és lekérdezéstárat tartalmazó adatbázis klónjának létrehozása

Az alábbi példa létrehoz egy klónt a AdventureWorks2025 adatbázisból, amely sémákat, statisztikákat és lekérdezéstár-adatokat (SQL Server 2016 (13.x) Service Pack 1 és újabb verziót tartalmaz):

DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone);
GO

B. Adatbázis csak sémaalapú klónjának létrehozása statisztikák nélkül

Az alábbi példa létrehozza a AdventureWorks2025 adatbázis klónját, amely nem tartalmaz statisztikákat (SQL Server 2014 (12.x) Service Pack 2 CU 3 és újabb verziók):

DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS;
GO

C. Adatbázis csak sémaalapú klónjának létrehozása statisztikák és lekérdezéstár nélkül

Az alábbi példa létrehozza a AdventureWorks2025 adatbázis klónját, amely nem tartalmaz statisztikákat és lekérdezéstár-adatokat (SQL Server 2016 (13.x) Service Pack 1 és újabb verziók):

DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH NO_STATISTICS, NO_QUERYSTORE;
GO

D. Ellenőrzött adatbázis klónjának létrehozása

Az alábbi példa létrehoz egy sémaalapú klónt a AdventureWorks2025 adatbázisból, amely nem tartalmaz statisztikai adatokat és a lekérdezéstárban ellenőrzött adatokat (SQL Server 2016 (13.x) Service Pack 2 és újabb verziók):

DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB;
GO

E. Olyan adatbázis klónjának létrehozása, amely igazoltan használható, és amely tartalmazza a klónozott adatbázis biztonsági másolatát

Az alábbi példa létrehoz egy sémaalapú klónt a AdventureWorks2025 adatbázisról statisztikák és a lekérdezéstár adatai nélkül, amelyeket a rendszer ellenőriz. Létrejön a klónozott adatbázis hitelesített biztonsági másolata is (SQL Server 2016 (13.x) Service Pack 2 és újabb verziók).

DBCC CLONEDATABASE (AdventureWorks2022, AdventureWorks_Clone) WITH VERIFY_CLONEDB, BACKUP_CLONEDB;
GO

Lásd még: