Biztonsági másolatokat készítettem az SQL Server 2014 Express adatbázisokról más szerverekre történő importálás céljából, és észrevettem a fájlméretbeli különbséget a és .bak
.
Miért olyan kicsi egy .bacpac
fájl a .bak
fájl ugyanazon adatbázisból?
Köszönjük a betekintést!
Válasz
A
-
.bacpac
file = Séma + Adatok. Ne feledje, hogy az adatok BCP-t” Natív formátumban (nem olvasható az ember által).-
Átnevezheti a
.bacpac
fájlt.zip
-re a tényleges tartalma. -
Használhatja a
...DAC\bin\sqlpackage.exe
parancssort a.bacpac
tartalma programozottan. -
Ez egy pillanatkép amely tartalmazza a felhasználói adatokat + az SQL Server vagy az Azure SQL Database sémáját.
-
–
- Biztonsági másolat (általában
.bak
kiterjesztéssel rendelkezik) = A TELJES adatbázis biztonsági másolat az adatbázis teljes másolatát tartalmazza, és egyetlen pontot biztosít, amelyre az adatbázis visszaállítható. A teljes biztonsági másolat tartalmaz néhány tranzakciónapló-rekordot, így a visszaállított összetevő (adatbázis, fájl vagy fájlcsoport) tranzakciókonzisztenssé tehető.
A BACPAC
nem helyettesítheti a TELJES biztonsági másolatot. Ez csak egy pillanatkép, amellyel az adatbázis áthelyezhető egy szerverről egy másik (vagy felhőalapú) és meglévő adatbázis archiválása nyílt formátumban .
Tesztem alapján az alábbiakban láthatók az eredmények
Megjegyzések
- A naplófájl valószínűleg a legnagyobb oka a méretkülönbségnek.
- I ' d feltételezem, hogy ' nincs indexadata a .bacpac-ban sem, ami valószínűleg NAGYAN hozzájárul a fájlmérethez.
Válasz
A parancs (.bak
) az adatbázis oldalankénti másolata. Vegye figyelembe, hogy az SQL Server adatbázis nemcsak adatlapokat tartalmaz. Vannak olyan oldalak is, amelyek nagy indexűek lehetnek. További részletek itt
Az Export Data-Tier alkalmazás használatával létrehozott biztonsági másolat (.bacpac
) A művelet egyszerűen egy adatbázisból exportált sorok, XML formátumban, archívumba helyezve. Manuálisan megtekintheti a BACPAC tartalmát, csak állítsa át a fájl kiterjesztését .zip fájlra.
A fájl egyenesen arányos az adatbázisban lévő rekordok számával (figyelembe véve a tömörítési arányt).
A .bak
fájl mérete nemcsak az adatoktól, hanem az indexek méretétől is függ.
Néha ez problémát jelenthet, ellenőrizze például ezt a régi beszélgetést
Ezért a .bacpac
fájl általában kisebb méretű.
A legegyszerűbb teszteket a AdventureWorks adatbázissal futtattam, és megkaptam ezeket az eredményeket.
AdventureWorks.bacpac - 17 mb AdventureWorks.bacpac.zip - 16 mb AdventureWorks_with_compression.bak - 49 mb AdventureWorks_with_compression.bak.zip - 47 mb
A .bacpac fájlt kell használnom a biztonsági másolat méretének csökkentéséhez?
No.
Export \ Import Data Tier Az alkalmazásnak számos jelentős hátránya van, amelyek kritikusak a nagy adatbázisok számára:
- Ez nem tranzakcióilag következetes művelet. A táblákat egymás után exportáljuk. Probléma lehet a külföldi kulccsal. Ez kétszeresen rossz, mert csak akkor fedezi fel, amikor megpróbál felépülni. Ezért ennek a műveletnek a végrehajtásakor pillanatfelvételt kell készítenie az adatbázisról, és exportálnia kell a pillanatképet.
- Az exportáláshoz és az importáláshoz is sokkal tovább tart. Abban a pillanatban, amikor sürgősen futtatnia kell a visszaállítást, ezt nem tudja megtenni, mert a .bacpac fájlból történő visszaállítás több órát vesz igénybe.
- Az export jelentősen megterheli a szervert, különösen nagy táblázatok, amelyek az előző ponttal együtt kétes döntést hoznak a rendszeres biztonsági mentésekről.
A BACKUP DATABASE
paranccsal létrehozott klasszikus biztonsági mentés hiányolja ezeket a hátrányokat, hogy helyet takarítson meg. Pontos helyreállítás
Export \ Import data-tier alkalmazás úgy tekinthető, hogy csak kis adatbázisokhoz készíthet biztonsági másolatot, olyan esetekben, amikor nincs hozzáférése a a fájlrendszer. Ebben az esetben semmilyen körülmények között ne exportálja az élő adatbázist, feltétlenül készítsen pillanatképet a következetes exportáláshoz.
Válasz
Nos, a legnagyobb különbség az, hogy az adatokat tömörítik (zip használatával) a .bacpac
fájlhoz, ami nem egy normál .bak
fájl. Csak tömörítse a .bak
fájlt, és nézze meg, hogy sokkal kisebb;)