Als u in SQL Server Transact-SQL gebruikt, heeft het verkleinen van een gegevensbestand een andere syntaxis nodig dan het vergroten ervan. Om een bestandsgrootte te verkleinen met T-SQL, gebruikt u de DBCC SHRINKFILE
commando, en geef de naam van het gegevensbestand op, samen met de grootte waartoe je het wilt verkleinen.
Hieronder staan voorbeelden van het verkleinen van de bestandsgrootte van een gegevensbestand in SQL Server met behulp van T-SQL.
Basisvoorbeeld
Hier is een eenvoudig voorbeeld van het verkleinen van een gegevensbestand met T-SQL:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2, 5); GO
Dit is waarschijnlijk vrij duidelijk. Eerst schakelen we over naar de database waarvan we het gegevensbestand willen wijzigen. We gebruiken dan DBCC SHRINKFILE
om op te geven tot welk gegevensbestand en tot welke bestandsgrootte het moet worden teruggebracht. Dit is in MB, dus ons voorbeeld zal het verkleinen tot 5 MB.
Verklein het tot de standaard bestandsgrootte
Als u geen bestandsgrootte opgeeft, wordt het bestand verkleind tot de standaardgrootte. De standaardgrootte is de grootte die is opgegeven toen het bestand werd gemaakt.
Voorbeeld:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2); GO
Het gegevensbestand afkappen
U kunt het gegevensbestand inkorten met de TRUNCATEONLY
argument.
Hier is een voorbeeld:
USE Solutions; GO DBCC SHRINKFILE ('Solutions', TRUNCATEONLY); GO
Een gegevensbestand leegmaken
U kunt een gegevensbestand ook leegmaken met behulp van de EMPTYFILE
argument.
Voorbeeld:
DBCC SHRINKFILE (Solutions2, EMPTYFILE); GO
Dit migreert alle gegevens van het opgegeven bestand naar andere bestanden in dezelfde bestandsgroep. Daarom moet je ervoor zorgen dat dit niet het enige bestand in de bestandsgroep is (anders krijg je een foutmelding). EmptyFile zorgt er ook voor dat er geen nieuwe gegevens aan het bestand worden toegevoegd.
Nadat u het bestand hebt geleegd, kunt u het verwijderen als u dat wilt. Hier is een voorbeeld van het verwijderen van het geleegde bestand:
ALTER DATABASE Solutions REMOVE FILE Solutions2; GO
En we kunnen controleren of het is verwijderd door het volgende uit te voeren:
USE Solutions; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO