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


Fájl zsugorítása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Kezelt Példány

Ez a cikk azt ismerteti, hogyan zsugorodhat adatok vagy naplófájlok az SQL Serverben az SQL Server Management Studio vagy a Transact-SQL használatával.

Az adatfájlok zsugorítása helyrehozhatja a helyet azáltal, hogy a fájl végéről a fájl elejéhez közelebb lévő üres helyre helyezi át az adatoldalakat. Ha a fájl végén elegendő szabad terület jön létre, a fájl végén lévő adatoldalak felszabadíthatók, és visszaadhatók a fájlrendszerbe.

Figyelmeztetés

  • A fájl zsugorításához áthelyezett adatok a fájl bármely elérhető helyére szétszórhatók. Ez indextöredezettséget okoz, és lelassíthatja az index egy tartományában kereső lekérdezések teljesítményét. A töredezettség megszüntetéséhez fontolja meg a fájl indexeinek újraépítését a zsugorítás után.
  • A zsugorítási műveletek nem tekinthetők rendszeres karbantartási műveletnek. A rendszeres, ismétlődő üzleti műveletek miatt növekvő adat- és naplófájlok nem igényelnek zsugorítási műveleteket.

Korlátozások

  • Az elsődleges adatfájl nem tehető kisebbre az model adatbázis elsődleges fájljának méreténél.

Ajánlások

  • A zsugorítási művelet akkor a leghatékonyabb, ha egy olyan művelet után következik, amely nagy mennyiségű nem használt tárhelyet hoz létre, mint például egy nagy DELETE utasítás, egy tábla csonkolási művelet vagy egy drop table művelet.

  • A legtöbb adatbázishoz szükség van némi szabad területre a napi rendszeres műveletekhez. Ha ismétlődően zsugorít egy adatbázisfájlt, és azt észleli, hogy az adatbázis mérete ismét nő, ez azt jelzi, hogy a normál műveletekhez szabad terület szükséges. Ezekben az esetekben az adatbázisfájl ismételt zsugorítása felesleges művelet. Az adatbázisfájl növekedéséhez szükséges autogrow események rontják a teljesítményt.

  • A fájl zsugorításához áthelyezett adatok a fájl bármely elérhető helyére szétszórhatók. Ez indextöredezettséget okoz, és lelassíthatja az index egy tartományában kereső lekérdezések teljesítményét. A töredezettség megszüntetéséhez fontolja meg a fájl indexeinek újraépítését a zsugorítás után.

  • Ha nincs konkrét követelménye, ne állítsa be a AUTO_SHRINK adatbázis beállítását ON értékre.

Megjegyzések

Az adatbázisban a folyamatban lévő zsugorítási műveletek blokkolhatják a többi lekérdezést, és maguk is blokkolásra kerülhetnek a már folyamatban lévő lekérdezések által. Az SQL Server 2022-ben (16.x) bevezetett fájlzömörítési műveletek opcióval rendelkeznek WAIT_AT_LOW_PRIORITY. Ez a funkció egy új további lehetőség DBCC SHRINKDATABASE és DBCC SHRINKFILEszámára. Ha egy új zsugorítási művelet WAIT_AT_LOW_PRIORITY módban nem tudja beszerezni a szükséges zárolásokat egy már folyamatban lévő, hosszú ideig futó lekérdezés miatt, a zsugorítási művelet egy perc elteltével időtúllépést eredményez, és csendesen kilép, megakadályozva a többi lekérdezés blokkolását. WAIT_AT_LOW_PRIORITY adatfájlokra (.mdf & .ndf) vonatkozik. Ez nem vonatkozik a tranzakciónapló-fájlokra. További információ: DBCC SHRINKFILE (Transact-SQL).

Engedélyek

A sysadmin rögzített kiszolgálói szerepkörben vagy a db_owner rögzített adatbázis-szerepkörben való tagság szükséges.

Adatok vagy naplófájlok zsugorítása az SQL Server Management Studio (SSMS) használatával

  1. Az Object Explorer-ben csatlakozzon az SQL Server adatbázismotor egy példányához, majd bontsa ki a példányt.

  2. Nyissa meg a Adatbázisok listát, majd kattintson a jobb gombbal a zsugorítandó adatbázisra.

  3. Mutasson Feladatok, mutasson Zsugorítás, majd válassza a Fájloklehetőséget.

    Adatbázis
    Megjeleníti a kijelölt adatbázis nevét.

    fájltípus
    Válassza ki a fájltípust. Az elérhető lehetőségek: Adatfájlok és Naplófájlok. Az alapértelmezett beállítás Adat. Egy másik fájlcsoporttípus kiválasztása ennek megfelelően módosítja a többi mező kijelöléseit.

    Fájlcsoport
    Válasszon ki egy fájlcsoportot a fenti fájltípushoz társított fájlcsoportok listájából,. Egy másik fájlcsoport kiválasztása ennek megfelelően módosítja a többi mező kijelöléseit.

    fájlnév
    Válasszon ki egy fájlt a kijelölt fájlcsoport és fájltípus elérhető fájljainak listájából.

    hely
    Megjeleníti az aktuálisan kijelölt fájl teljes elérési útját. Az elérési út nem szerkeszthető, de átmásolható a vágólapra.

    Jelenleg lefoglalt terület
    Adatfájlok esetén az aktuális lefoglalt terület jelenik meg. Naplófájlok esetén a DBCC SQLPERF(LOGSPACE)kimenetéből kiszámított aktuális lefoglalt terület jelenik meg.

    Szabad terület
    Adatfájlok esetén a DBCC SHOWFILESTATS(fileid)kimenetéből kiszámított szabad terület jelenik meg. Naplófájlok esetén a DBCC SQLPERF(LOGSPACE)kimenetéből kiszámított szabad terület jelenik meg.

    Nem használt terület felszabadítása
    A fájlokban fel nem használt terület az operációs rendszer számára való felszabadítását és a fájl utolsó lefoglalt méretre zsugorítását eredményezi, így a fájl mérete adatok áthelyezése nélkül csökken. Nem történik kísérlet a sorok áthelyezésére nem kiosztott lapokra.

    Lapok átrendezése a fel nem használt terület felszabadítása előtt
    Egyenértékű a célfájlméretet meghatározó DBCC SHRINKFILE végrehajtásával. Ha ezt a beállítást választja, a felhasználónak meg kell adnia egy célfájlméretet a Zsugorítás fájlból mezőbe.

    Fájl zsugorítása
    Megadja a zsugorítási művelet célfájlméretét. A méret nem lehet kisebb, mint az aktuális lefoglalt terület, vagy nagyobb, mint a fájlhoz lefoglalt teljes méret. Ha a minimumot vagy a maximumot meghaladó értéket ad meg, akkor a fókusz módosítása vagy az eszköztár gombjainak kijelölése után a minimális vagy a maximális értékre fog visszaállni.

    Üres fájl az adatok másik fájlba való migrálásával ugyanabban a fájlcsoportban
    Az összes adat áttelepítése a megadott fájlból. Ezzel a beállítással a fájl elvethető az ALTER DATABASE utasítással. Ez a beállítás egyenértékű a DBCC SHRINKFILEEMPTYFILE beállítással való végrehajtásával. EMPTYFILE nem támogatott az Azure SQL Database-ben vagy az Azure SQL Database Hyperscale-ben.

  4. Válassza ki a fájltípust és a fájlnevet.

  5. Ha szeretné, jelölje be a Nem használt terület felszabadítása jelölőnégyzetet.

    Ha ezt a beállítást választja, a fájlban nem használt terület az operációs rendszer számára lesz felszabadítva, és a fájlt az utolsó lefoglalt méretre zsugorítja. Ez adat áthelyezése nélkül csökkenti a fájlméretet.

  6. Ha szeretné, jelölje be a Fájlok átrendezése a fel nem használt terület felszabadítása előtt jelölőnégyzetet. Ha ez van kiválasztva, meg kell adni a fájl zsugorításának értékét. Alapértelmezés szerint a beállítás törlődik.

    Ha ezt a beállítást választja, a fájlban lévő nem használt terület ki lesz szabadítva az operációs rendszer számára, és megpróbálja áthelyezni a sorokat a nem áthelyezett lapokra.

  7. Ha szeretné, adja meg azt a maximális százalékos arányt, amennyi szabad terület maradjon az adatbázisfájlban, miután az adatbázis zsugorítva lett. A megengedett értékek 0 és 99 között vannak. Ez a beállítás csak akkor érhető el, ha fájlok átrendezése a fel nem használt hely felszabadítása előtt, engedélyezve van.

  8. Ha szeretné, jelölje be a Üres fájlt, ha az adatokat az ugyanabban a fájlcsoportban lévő többi fájlba jelölőnégyzetbe migrálja.

    Ha bejelöli ezt a beállítást, a megadott fájl összes adatát áthelyezi a fájlcsoport más fájljaiba. Az üres fájl ezután törölhető. Ez a beállítás ugyanaz, mint a DBCC SHRINKFILE végrehajtása az EMPTYFILE opcióval.

  9. Válassza OKlehetőséget.

Adatok vagy naplófájlok zsugorítása a Transact-SQL használatával

  1. Csatlakozzon az adatbázismotorhoz.

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza a Végrehajtáslehetőséget. Ez a példa a DBCC SHRINKFILE (Transact-SQL) használatával csökkenti az adatbázisban elnevezett DataFile1UserDB adatfájl méretét 7 MB-ra.

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO