En SQL Server, al usar Transact-SQL, reducir el tamaño de un archivo de datos requiere una sintaxis diferente a la de aumentarlo. Para reducir el tamaño de un archivo usando T-SQL, use DBCC SHRINKFILE
y proporcione el nombre del archivo de datos junto con el tamaño al que le gustaría reducirlo.
A continuación se muestran ejemplos de cómo reducir el tamaño de archivo de un archivo de datos en SQL Server usando T-SQL.
Ejemplo básico
Aquí hay un ejemplo básico de cómo reducir el tamaño de un archivo de datos usando T-SQL:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2, 5); GO
Esto probablemente se explica por sí mismo. Primero, cambiamos a la base de datos cuyo archivo de datos queremos cambiar. Luego usamos DBCC SHRINKFILE
para especificar a qué archivo de datos y a qué tamaño de archivo se debe reducir. Esto está en MB, por lo que nuestro ejemplo lo reducirá a 5 MB.
Reducirlo al tamaño de archivo predeterminado
Si no especifica un tamaño de archivo, el archivo se reducirá a su tamaño predeterminado. El tamaño predeterminado es el tamaño especificado cuando se creó el archivo.
Ejemplo:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2); GO
Truncar el archivo de datos
Puede truncar el archivo de datos usando el TRUNCATEONLY
argumento.
He aquí un ejemplo:
USE Solutions; GO DBCC SHRINKFILE ('Solutions', TRUNCATEONLY); GO
Vaciar un archivo de datos
También puede vaciar un archivo de datos usando el EMPTYFILE
argumento.
Ejemplo:
DBCC SHRINKFILE (Solutions2, EMPTYFILE); GO
Esto migra todos los datos del archivo especificado a otros archivos en el mismo grupo de archivos. Por lo tanto, deberá asegurarse de que este no sea el único archivo en el grupo de archivos (de lo contrario, obtendrá un error). EmptyFile también le asegura que no se agregarán nuevos datos al archivo.
Una vez que haya vaciado el archivo, puede eliminarlo si eso es lo que desea hacer. Aquí hay un ejemplo de cómo eliminar el archivo vacío:
ALTER DATABASE Solutions REMOVE FILE Solutions2; GO
Y podemos comprobar que se ha eliminado ejecutando lo siguiente:
USE Solutions; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO