Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
azure 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ů.
Výstraha
- 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í.
- Operace zmenšení by se neměly považovat za pravidelnou operaci údržby. Data a soubory protokolů, které se zvětšují z důvodu pravidelných opakovaných obchodních operací, nevyžadují operace zmenšení.
Omezení
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 informací o prostoru 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
AUTO_SHRINK
nastavení databáze naON
.
Povolení
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. Zavedené v SQL Serveru 2022 (16.x) mají operace zmenšení databáze 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 WAIT_AT_LOW_PRIORITY
režimu nemůže získat potřebné zámky kvůli dlouhotrvajícímu dotazu, který už probíhá, operace zmenšení se po jedné minutě nakonec časově omezeně ukončí, čímž zabrání zablokování další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
V Průzkumníku objektůse připojte k instanci databázového stroje SQL Serveru a poté ji rozbalte.
Rozbalte Databáze, poté klikněte pravým tlačítkem myši na databázi, kterou chcete zmenšit.
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 odpovídá provádění zadávání
DBCC SHRINKDATABASE
cílové procentuální možnosti. Zrušení zaškrtnutí této možnosti odpovídá provedeníDBCC SHRINKDATABASE
pomocí možnostiTRUNCATEONLY
. 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.
Vyberte OK.
Použijte Transact-SQL
Zmenšení databáze
Připojte se k databázovému stroji.
Na liště Standardní vyberte Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit. Tento příklad používá DBCC SHRINKDATABASE (Transact-SQL) ke zmenšení velikosti dat a souborů protokolu v
UserDB
databázi a k umožnění10
procent volného místa v 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.
Související obsah
- Zmenšení databáze tempdb
- Úvahy o nastavení automatického zvětšování a automatického zmenšování v SQL Serveru
- Databázové soubory a skupiny souborů
- sys.databases (Transact-SQL)
- sys.database_files (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- Odstranění dat nebo souborů protokolu z databáze
- Zmenšení souboru
- Správa prostoru souborů pro databáze ve službě Azure SQL Database