sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man minskar storleken på en datafil i SQL Server (T-SQL)

I SQL Server, när du använder Transact-SQL, kräver en minskning av storleken på en datafil en annan syntax än att öka den. För att minska en filstorlek med T-SQL, använd DBCC SHRINKFILE kommandot och ange namnet på datafilen tillsammans med storleken du vill minska den till.

Nedan finns exempel på hur du kan minska filstorleken för en datafil i SQL Server med T-SQL.

Grundläggande exempel

Här är ett grundläggande exempel på hur du kan minska storleken på en datafil med T-SQL:

USE Solutions;
GO

DBCC SHRINKFILE (Solutions_dat_2, 5);
GO

Detta är nog ganska självförklarande. Först byter vi över till databasen vars datafil vi vill ändra. Vi använder sedan DBCC SHRINKFILE för att ange vilken datafil och vilken filstorlek den ska minskas till. Detta är i MB, så vårt exempel kommer att minska det till 5 MB.

Minska den till standardfilstorleken

Om du inte anger en filstorlek kommer filen att reduceras till standardstorleken. Standardstorleken är den storlek som angavs när filen skapades.

Exempel:

USE Solutions;
GO

DBCC SHRINKFILE (Solutions_dat_2);
GO

Trunkera datafilen

Du kan trunkera datafilen genom att använda TRUNCATEONLY argument.

Här är ett exempel:

USE Solutions;  
GO  
DBCC SHRINKFILE ('Solutions', TRUNCATEONLY);
GO

Töm en datafil

Du kan också tömma en datafil genom att använda EMPTYFILE argument.

Exempel:

DBCC SHRINKFILE (Solutions2, EMPTYFILE);  
GO 

Detta migrerar all data från den angivna filen till andra filer i samma filgrupp. Därför måste du se till att detta inte är den enda filen i filgruppen (annars får du ett felmeddelande). EmptyFile försäkrar dig också att ingen ny data kommer att läggas till filen.

När du har tömt filen kan du ta bort den om det är vad du vill göra. Här är ett exempel på hur du tar bort den tömda filen:

ALTER DATABASE Solutions  
REMOVE FILE Solutions2;  
GO 

Och vi kan kontrollera att den har tagits bort genom att köra följande:

USE Solutions;  
GO  
SELECT file_id, name, type_desc, physical_name, size, max_size  
FROM sys.database_files ;  
GO


  1. Lösningar för hur man läser SQL Server-transaktionsloggfil utan att misslyckas

  2. kan inte få enkel PostgreSQL-insättning att fungera

  3. IN vs ALLA operatör i PostgreSQL

  4. Hur man ansluter en Oracle-databas från PHP