Krymp en databas
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Den här artikeln beskriver hur du krymper en databas i SQL Server med hjälp av Object Explorer i SQL Server Management Studio eller Transact-SQL.
Krympande datafiler återställer utrymme genom att flytta sidor med data från slutet av filen till obemannat utrymme närmare filens framsida. När tillräckligt med ledigt utrymme skapas i slutet av filen kan datasidor i slutet av filen frigöras och returneras till filsystemet.
Begränsningar och restriktioner
Databasen kan inte göras mindre än databasens minsta storlek. Den minsta storleken är den storlek som angavs när databasen ursprungligen skapades, eller den senaste explicita storleksuppsättningen med hjälp av en filstorleksförändrande åtgärd, till exempel
DBCC SHRINKFILE
. Om en databas till exempel ursprungligen skapades med en storlek på 10 MB och växte till 100 MB kan databasens minsta storlek minskas till 10 MB, även om alla data i databasen har tagits bort.Du kan inte krympa en databas när databasen säkerhetskopieras. Omvänt kan du inte säkerhetskopiera en databas medan en krympningsåtgärd på databasen pågår.
Rekommendationer
Om du vill visa den aktuella mängden ledigt (oallokerat) utrymme i databasen. Mer information finns i Visa data och information om loggutrymme för en databas
Tänk på följande information när du planerar att krympa en databas:
En krympningsåtgärd är mest effektiv efter en åtgärd som skapar en stor mängd oanvänt lagringsutrymme, till exempel en stor DELETE-instruktion, trunkeringstabell eller en drop table-åtgärd.
De flesta databaser kräver lite ledigt utrymme för regelbundna dagliga åtgärder. Om du krymper en databas upprepade gånger och märker att databasstorleken växer igen, anger detta att det lediga utrymmet krävs för vanliga åtgärder. I dessa fall är det en bortkastad åtgärd att krympa databasen upprepade gånger. Autogrow-händelser som krävs för att öka databasfilerna hindrar prestanda.
En krympningsåtgärd bevarar inte fragmenteringstillståndet för index i databasen och ökar vanligtvis fragmenteringen i viss utsträckning. Det här är en annan anledning till att inte krympa databasen upprepade gånger.
Om du inte har ett specifikt krav ska du inte ange alternativet AUTO_SHRINK databas till PÅ.
Behörigheter
Kräver medlemskap i sysadmin bestämd serverroll eller db_owner bestämd databasroll.
Anmärkningar
Krympningsåtgärder som pågår kan blockera andra frågor i databasen och kan blockeras av frågor som redan pågår. Krympdatabasåtgärder, som introducerades i SQL Server 2022 (16.x), har ett WAIT_AT_LOW_PRIORITY-alternativ. Den här funktionen är ett nytt alternativ för DBCC SHRINKDATABASE
och DBCC SHRINKFILE
. Om en ny krympningsåtgärd i WAIT_AT_LOW_PRIORITY-läge inte kan hämta nödvändiga lås på grund av en långvarig fråga som redan pågår, kommer krympningsåtgärden slutligen att nå tidsgränsen efter en minut, och tyst avslutas, vilket förhindrar att andra förfrågningar blockeras. Mer information finns i DBCC SHRINKDATABASE.
Information om filhantering och krympningsåtgärder som är specifika för Azure SQL Database finns i Hantera filutrymme för databaser i Azure SQL Database.
Använda SQL Server Management Studio
gäller för: SQL Server, Azure SQL Managed Instance
Krymp en databas
I Object Exploreransluter du till en instans av SQL Server Database Engine och expanderar sedan den instansen.
Expandera Databaseroch högerklicka sedan på den databas som du vill krympa.
Peka på Uppgifter, peka på Krympoch välj sedan Databas.
Database
Visar namnet på den valda databasen.
Aktuellt allokerat utrymme
Visar det totala använda och oanvända utrymmet för den valda databasen.
Tillgängligt ledigt utrymme
Visar summan av ledigt utrymme i logg- och datafilerna för den valda databasen.
Ordna om filer innan du frigör oanvänt utrymme
Att välja det här alternativet motsvarar att köra DBCC SHRINKDATABASE och ange ett målprocentalternativ. Att rensa det här alternativet motsvarar att köra DBCC SHRINKDATABASE tillsammans med TRUNCATEONLY-alternativet. Som standard är det här alternativet inte markerat när dialogrutan öppnas. Om det här alternativet är markerat måste användaren ange ett målprocentalternativ.
Maximalt ledigt utrymme i filer efter krympning av
Ange den maximala procentandelen ledigt utrymme som ska finnas kvar i databasfilerna när databasen har krympts. Tillåtna värden är mellan 0 och 99.
Välj OK.
Använd Transact-SQL
Krymp en databas
Anslut till databasmotorn.
I standardfältet väljer du Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och välj Kör. I det här exemplet används DBCC SHRINKDATABASE för att minska storleken på data och loggfiler i
UserDB
-databasen och för att tillåta10
procent ledigt utrymme i databasen.
DBCC SHRINKDATABASE (UserDB, 10);
GO
När du har krympt en databas
Data som flyttas för att krympa en fil kan spridas till valfri tillgänglig plats i filen. Detta orsakar indexfragmentering och kan sänka prestandan för frågor som söker i ett intervall av indexet. Om du vill eliminera fragmenteringen bör du överväga att återskapa indexen i filen efter krympning. Mer information finns i Återskapa ett index.
Relaterat innehåll
- Krymp tempdb-databasen
- Överväganden för inställningarna för automatisk tillväxt och automatisk skalning i SQL Server
- databasfiler och filgrupper
- sys.databases (Transact-SQL)
- sys.database_files (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- Ta bort data eller loggfiler från en databas
- Krymp en fil
- Hantera filutrymme för databaser i Azure SQL Database