Delen via


Een database verkleinen

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

In dit artikel wordt beschreven hoe u een database in SQL Server verkleint met behulp van Object Explorer in SQL Server Management Studio of Transact-SQL.

Als u gegevensbestanden verkleint, wordt ruimte hersteld door pagina's met gegevens van het einde van het bestand te verplaatsen naar onbezette ruimte dichter bij de voorkant van het bestand. Wanneer er aan het einde van het bestand voldoende vrije ruimte wordt gemaakt, kunnen de gegevenspagina's worden vrijgegeven en teruggegeven aan het bestandssysteem.

Beperkingen en beperkingen

  • De database kan niet kleiner worden gemaakt dan de minimale grootte van de database. De minimale grootte is de grootte die is opgegeven toen de database oorspronkelijk werd gemaakt of de laatste expliciete grootte die is ingesteld met behulp van een bewerking voor het wijzigen van de bestandsgrootte, zoals DBCC SHRINKFILE. Als een database bijvoorbeeld oorspronkelijk is gemaakt met een grootte van 10 MB en groter is dan 100 MB, kan de kleinste grootte van de database worden verkleind tot 10 MB, zelfs als alle gegevens in de database zijn verwijderd.

  • U kunt een database niet verkleinen terwijl er een back-up van de database wordt gemaakt. U kunt daarentegen geen back-ups maken van een database terwijl een verkleiningsbewerking voor de database wordt uitgevoerd.

Aanbevelingen

  • Als u de huidige hoeveelheid vrije (niet-toegewezen) ruimte in de database wilt weergeven. Zie Gegevens en logboekruimtegegevens weergeven voor een database- voor meer informatie

  • Houd rekening met de volgende informatie wanneer u van plan bent om een database te verkleinen:

    • Een verkleiningsbewerking is het meest effectief na een bewerking waarmee een grote hoeveelheid ongebruikte opslagruimte wordt gemaakt, zoals een grote DELETE-instructie, afkappen van een tabel of een drop table-bewerking.

    • De meeste databases vereisen dat er vrije ruimte beschikbaar is voor normale dagelijkse bewerkingen. Als u een database herhaaldelijk verkleint en merkt dat de databasegrootte opnieuw groeit, geeft dit aan dat de vrije ruimte vereist is voor normale bewerkingen. In deze gevallen is het herhaaldelijk verkleinen van de database een verspilde bewerking. Gebeurtenissen die nodig zijn om de databasebestanden te vergroten, belemmeren de prestaties.

    • Bij een verkleiningsbewerking blijft de fragmentatiestatus van indexen in de database niet behouden en neemt de fragmentatie over het algemeen tot een bepaalde mate toe. Dit is een andere reden om de database niet herhaaldelijk te verkleinen.

    • Tenzij u een specifieke vereiste hebt, stelt u de optie AUTO_SHRINK database niet in op AAN.

machtigingen

Vereist lidmaatschap van de sysadmin vaste serverfunctie of de db_owner vaste databaserol.

Opmerkingen

Verkleiningsbewerkingen die worden uitgevoerd, kunnen andere query's in de database blokkeren en kunnen worden geblokkeerd door query's die al worden uitgevoerd. In SQL Server 2022 (16.x) zijn database-verkleiningsbewerkingen geïntroduceerd met een optie voor wachten met lage prioriteit. Deze functie is een nieuwe extra optie voor DBCC SHRINKDATABASE en DBCC SHRINKFILE. Als een nieuwe verkleiningsbewerking in WAIT_AT_LOW_PRIORITY modus de benodigde vergrendelingen niet kan verkrijgen vanwege een langlopende query die al wordt uitgevoerd, zal de verkleiningsbewerking na één minuut stilletjes worden beëindigd, zodat andere query's niet worden geblokkeerd. Zie DBCC SHRINKDATABASEvoor meer informatie.

Zie Bestandsruimte beheren voor databases in Azure SQL Databasevoor informatie over bestandsbeheer en verkleiningsbewerkingen die specifiek zijn voor Azure SQL Database.

SQL Server Management Studio gebruiken

van toepassing op: SQL Server, Azure SQL Managed Instance

Een database verkleinen

  1. Maak in Objectverkennerverbinding met een exemplaar van de SQL Server Database Engine en vouw dat exemplaar vervolgens uit.

  2. Vouw Databasesuit en klik met de rechtermuisknop op de database die u wilt verkleinen.

  3. Ga naar Taken, ga naar Verkleinen, en selecteer Database.

    • Database-

      Geeft de naam van de geselecteerde database weer.

    • huidige toegewezen ruimte

      Geeft het totale gebruikte en ongebruikte ruimte weer voor de geselecteerde database.

    • Beschikbare vrije ruimte

      Geeft de som van vrije ruimte weer in het logboek en gegevensbestanden van de geselecteerde database.

    • bestanden opnieuw orden voordat ongebruikte ruimte wordt vrijgegeven

      Als u deze optie selecteert, komt overeen met het uitvoeren van DBCC SHRINKDATABASE die een doelpercentageoptie opgeeft. Het wissen van deze optie is gelijk aan het uitvoeren van DBCC SHRINKDATABASE met de optie TRUNCATEONLY. Deze optie wordt standaard niet geselecteerd wanneer het dialoogvenster wordt geopend. Als deze optie is geselecteerd, moet de gebruiker een optie voor het doelpercentage opgeven.

    • Maximale vrije ruimte in bestanden na het verkleinen van

      Voer het maximale percentage vrije ruimte in dat in de databasebestanden moet worden achtergelaten nadat de database is verkleind. Toegestane waarden liggen tussen 0 en 99.

  4. Selecteer OK-.

Gebruik Transact-SQL

Een database verkleinen

  1. Maak verbinding met de database-engine.

  2. Selecteer in de standaardbalk Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. In dit voorbeeld wordt DBCC SHRINKDATABASE gebruikt om de grootte van de gegevens en logboekbestanden in de UserDB-database te verkleinen en om 10 procent vrije ruimte in de database mogelijk te maken.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Nadat u een database hebt verkleind

Gegevens die worden verplaatst om een bestand te verkleinen, kunnen worden verspreid naar elke beschikbare locatie in het bestand. Dit veroorzaakt indexfragmentatie en kan de prestaties van query's die een bereik van de index doorzoeken, vertragen. Als u de fragmentatie wilt elimineren, kunt u overwegen om de indexen in het bestand opnieuw op te bouwen na het verkleinen. Zie Een index opnieuw samenstellenvoor meer informatie.