Sdílet prostřednictvím


Zmenšení databáze

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Tento článek popisuje, jak zmenšit databázi na SQL Serveru pomocí Průzkumníka objektů v aplikaci SQL Server Management Studio nebo Transact-SQL.

Zmenšení datových souborů obnoví místo přesunutím stránek dat z konce souboru do neobsazeného prostoru blíže k přední části souboru. Když se na konci souboru vytvoří dostatek volného místa, datové stránky na konci souboru se dají uvolnit a vrátit do systému souborů.

Omezení a restrikce

  • Databázi nelze zmenšit, než je minimální velikost databáze. Minimální velikost je velikost zadaná při původním vytvoření databáze nebo poslední explicitní nastavení pomocí operace změny velikosti souboru, například DBCC SHRINKFILE. Pokud byla například databáze původně vytvořená s velikostí 10 MB a vzrostla na 100 MB, nejmenší velikost databáze by mohla být zmenšena na 10 MB, i když byla odstraněna všechna data v databázi.

  • Databázi nemůžete zmenšit, když se databáze zálohuje. Naopak nemůžete zálohovat databázi, zatímco probíhá operace zmenšení databáze.

Doporučení

  • Pokud chcete zobrazit aktuální množství volného (nepřiděleného) místa v databázi. Další informace najdete v tématu Zobrazení dat a místa protokolu pro databázi

  • Při plánování zmenšení databáze zvažte následující informace:

    • Operace zmenšení je nejúčinnější po operaci, která vytvoří velké množství nevyužitého prostoru úložiště, jako je například velký příkaz DELETE, zkrácení tabulky nebo operace odstranění tabulky.

    • Většina databází vyžaduje, aby bylo k dispozici nějaké volné místo pro běžné každodenní operace. Pokud databázi zmenšíte opakovaně a všimněte si, že se velikost databáze znovu zvětší, znamená to, že pro běžné operace se vyžaduje volné místo. V těchto případech je opakované zmenšení databáze zbytečnou operací. Události automatického zvětšování potřebné k růstu databázových souborů brání výkonu.

    • Operace zmenšení nezachovává stav fragmentace indexů v databázi a obecně zvyšuje fragmentaci do určité míry. To je další důvod, proč databázi opakovaně nezmenšovat.

    • Pokud nemáte konkrétní požadavek, nenastavujte možnost AUTO_SHRINK databáze na hodnotu ZAPNUTO.

oprávnění

Vyžaduje členství v pevné systémové roli sysadmin nebo v pevné databázové roli db_owner.

Poznámky

Probíhající operace zmenšení můžou blokovat další dotazy v databázi a mohou být blokovány probíhajícími dotazy. Představeno v SQL Server 2022 (16.x), operace zmenšení databáze mají možnost WAIT_AT_LOW_PRIORITY. Tato funkce je novou další možností pro DBCC SHRINKDATABASE a DBCC SHRINKFILE. Pokud nová operace zmenšení v režimu WAIT_AT_LOW_PRIORITY nemůže získat potřebné zámky kvůli dlouhotrvajícímu dotazu, který už probíhá, operace zmenšení nakonec vyprší po jedné minutě a tiše ukončí, což brání zablokování jiných dotazů. Další informace naleznete v tématu DBCC SHRINKDATABASE.

Informace o operacích správy a zmenšení souborů specifických pro Azure SQL Database najdete v tématu Správa prostoru souborů pro databáze ve službě Azure SQL Database.

Použití aplikace SQL Server Management Studio

platí pro: SQL Server, azure SQL Managed Instance

Zmenšení databáze

  1. V Průzkumníku objektůse připojte k instanci databázového stroje SQL Serveru a poté ji rozbalte.

  2. Rozbalte Databáze, poté klikněte pravým tlačítkem myši na databázi, kterou chcete zmenšit.

  3. Přejděte na Úkoly, přejděte na Zmenšita vyberte Databáze .

    • Databáze

      Zobrazí název vybrané databáze.

    • Aktuální přidělený prostor

      Zobrazí celkový využitý a nevyužitý prostor pro vybranou databázi.

    • Volné místo

      Zobrazí součet volného místa v protokolu a datových souborech vybrané databáze.

    • Přeskládat soubory před uvolněním nevyužitého místa

      Výběr této možnosti je ekvivalentem spuštění DBCC SHRINKDATABASE určující cílovou procentuální možnost. Zrušení zaškrtnutí této možnosti odpovídá spuštění DBCC SHRINKDATABASE s možností TRUNCATEONLY. Ve výchozím nastavení není tato možnost při otevření dialogového okna vybraná. Pokud je tato možnost vybrána, musí uživatel zadat cílovou procentuální možnost.

    • Maximální volné místo v souborech po zmenšení

      Zadejte maximální procento volného místa, které se má nechat v souborech databáze po zmenšení databáze. Přípustné hodnoty jsou v rozmezí od 0 do 99.

  4. Vyberte OK.

Použijte Transact-SQL

Zmenšení databáze

  1. Připojte se k databázovému stroji.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit. Tento příklad používá DBCC SHRINKDATABASE ke zmenšení velikosti datových a protokolových souborů v databázi UserDB a k zajištění 10 procent volného místa v této databázi.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Po zmenšení databáze

Data, která jsou přesunuta za účelem zmenšení souboru, mohou být rozptýlena na jakékoliv dostupné místo v souboru. To způsobuje fragmentaci indexu a může zpomalit výkon dotazů, které prohledávají rozsah indexu. Pokud chcete fragmentaci odstranit, zvažte opětovné sestavení indexů v souboru po zmenšení. Další informace naleznete v tématu Opětovné sestavení indexu.