Tamaño base datos
Tengo una Base de Datos SQL7 con 25 una ocupación Gb. Y quisiera reorganizarla para aprovechar mejor el espacio ¿cómo puedo recuperar espacio sin borrar información?
1 respuesta
Respuesta de dcanete
1
1
DBCC SHRINKDATABASE reduce el tamaño de la base de datos. Cuando se borra un dato, se queda el hueco dando origen a una defragmentación del archivo de datos. Este comando lo que hace es una especie de defragmentación.
Te pego la ayuda:
Dbcc shrinkdatabase
Reduce el tamaño de los archivos de datos de la base de datos especificada.
Sintaxis
DBCC SHRINKDATABASE
( database_name [ , target_percent ]
[, {NOTRUNCATE | TRUNCATEONLY}]
)
Argumentos
database_name
Es el nombre de la base de datos que se va a reducir. Los nombres de las bases de datos se deben ajustar a las reglas para los identificadores. Para obtener más información, consulte Utilizar identificadores.
target_percent
Es el porcentaje de espacio libre que se desea dejar en el archivo de la base de datos después de reducir la base de datos.
Notruncate
Hace que el espacio de archivos liberado se retenga en los archivos de base de datos. Si no se especifica, el espacio liberado del archivo pasa al sistema operativo.
Truncateonly
Hace que se libere cualquier espacio no utilizado de los archivos de datos para su utilización por el sistema operativo y reduce el archivo a la última magnitud asignada, lo que reduce el tamaño del archivo sin mover los datos. No se intenta volver a asignar filas a las páginas desasignadas. Cuando se utiliza TRUNCATEONLY, no se tiene en cuenta target_percent.
Observaciones
Microsoft® SQL ServerT puede reducir:
Todos los archivos de datos y de registro de una base de datos específica. Ejecute DBCC SHRINKDATABASE.
Un archivo de datos o de registro de una base de datos específica. Ejecute DBCC SHRINKFILE.
DBCC SHRINKDATABASE reduce los archivos de datos de uno en uno. Sin embargo, DBCC SHRINKDATABASE reduce los archivos de registro como si todos estuvieran en una agrupación de registros contiguos.
Suponga que una base de datos llamada mydb tiene dos archivos de datos y dos archivos de registro. El tamaño de los archivos de datos y de registro es de 10 MB. El primer archivo de datos contiene 6 MB.
En cada archivo, SQL Server calcula el tamaño final, que es tamaño al que se va a reducir el archivo. Cuando DBCC SHRINKDATABASE se especifica con target_percent, SQL Server calcula el tamaño final para que quede target_percent de espacio libre en el archivo tras la reducción. Por ejemplo, si especifica un target_percent de 25 para reducir mydb. SQL Server calcula el tamaño final del archivo como 8 MB (6 MB de datos más 2 MB de espacio libre). Por tanto, SQL Server pasa los datos de los últimos 2 MB del archivo de datos al espacio libre de lo3 primeros 8 MB del archivo de datos y, a continuación, reduce el archivo.
Suponga que el primer archivo de datos de mydb contiene 7 MB de datos. La especificación de target_percent como 30 permite que este archivo de datos sea reducido y mantenga un porcentaje de espacio libre del treinta por ciento. Sin embargo, la especificación de target_percent como 40 no reduce el archivo de datos porque SQL Server no reduce un archivo a un tamaño menor que el ocupado por los datos. Este aspecto también se puede ver de otro modo: 40 por ciento de espacio libre + 70 por ciento de datos en el archivo (7 MB de 10 MB) es mayor que 100 por ciento. Como el porcentaje de espacio libre deseado más el porcentaje actual ocupado por los datos supera el 100 por ciento (en un 10 por ciento), con un target_size superior a 30 no se reducirá el archivo de datos.
En los archivos de registro, SQL Server utiliza target_percent para calcular el tamaño final de todo el registro de forma que target_percent sea la cantidad de espacio libre del registro después de la operación de reducción. El tamaño final de todo el registro se traduce, entonces, en el tamaño final de cada archivo de registro. DBCC SHRINKDATABASE intenta reducir cualquier archivo de registro físico a su tamaño final de forma inmediata. Si ninguna parte del registro lógico se encuentra en los registros virtuales más allá del tamaño final del archivo de registro, el archivo se trunca de manera correcta y DBCC SHRINKDATABASE finaliza sin mensajes. Sin embargo, si parte del registro lógico está en los registros virtuales más allá del tamaño final, SQL Server 2000 libera tanto espacio como sea posible y a continuación emite un mensaje informativo. El mensaje indica las acciones que debe llevar a cabo para mover el registro lógico de los registros virtuales al final del archivo. Tras llevar a cabo estas acciones, puede volver a emitir la instrucción DBCC SHRINKDATABASE para liberar el espacio restante. Para obtener más información sobre la reducción de archivos de registro, consulte Reducir el registro de transacciones.
Como un archivo de registro sólo puede reducirse al límite de un archivo de registro virtual, puede que no sea posible reducirlo a un tamaño menor que el de un archivo de registro virtual, aunque no esté siendo utilizado. Por ejemplo, una base de datos con un archivo de registro de 1 GB puede hacer que el archivo de registro quede reducido a sólo 128 MB. Para obtener más información acerca del truncado, consulte Truncar el registro de transacciones. Para obtener más información acerca de cómo determinar los tamaños de los archivos de registro virtuales, consulte Archivos de registro virtuales.
El tamaño final de los archivos de datos y de registro calculado por DBCC SHRINKDATABASE nunca puede ser menor que el tamaño mínimo de un archivo. El tamaño mínimo de un archivo es el tamaño especificado cuando se creó el archivo, o el último tamaño establecido explícitamente mediante una operación de modificación del tamaño del archivo, como ALTER DATABASE con la opción MODIFY FILE o DBCC SHRINKFILE. Por ejemplo, si al ejecutar CREATE DATABASE se especificó que el tamaño de todos los archivos de datos y de registro de mydb fuera 10 MB, el tamaño mínimo de cada archivo es 10 MB. DBCC SHRINKDATABASE no puede reducir ninguno de los archivos a un tamaño menor que 10 MB. Si el tamaño de uno de los archivos ha sido aumentado explícitamente a 20 MB mediante ALTER DATABASE con la opción MODIFY FILE, el nuevo tamaño mínimo del archivo es 20 MB. Para reducir el tamaño de un archivo a un tamaño menor que su tamaño mínimo, utilice DBCC SHRINKFILE y especifique el nuevo tamaño. La ejecución de DBCC SHRINKFILE hace que el tamaño mínimo del archivo sea el nuevo tamaño especificado.
Cuando se utilizan archivos de datos, DBCC SHRINKDATABASE tiene las opciones NOTRUNCATE y TRUNCATEONLY. Ambas opciones no tienen efecto en los archivos de registro. DBCC SHRINKDATABASE sin opciones es equivalente a DBCC SHRINKDATABASE con la opción NOTRUNCATE seguida de DBCC SHRINKDATABASE con la opción TRUNCATEONLY.
La opción NOTRUNCATE, con o sin la especificación de target_percent, ejecuta las operaciones de movimiento de datos de DBCC SHRINKDATABASE, incluido el movimiento de las páginas asignadas del final del archivo a páginas no asignadas del principio del archivo. Sin embargo, el espacio libre del final del archivo no se devuelve al sistema operativo y el tamaño físico del archivo no cambia. Por tanto, cuando se especifica la opción NOTRUNCATE, no parece que los archivos de datos se hayan reducido. Por ejemplo, suponga que está utilizando de nuevo la base de datos mydb. Mydb tiene dos archivos de datos y dos archivos de registro. El tamaño del segundo archivo de datos y el segundo archivo de registro es de 10 MB. Cuando se ejecuta DBCC SHRINKDATABASE mydb NOTRUNCATE, Microsoft® SQL ServerT pasa los datos de las últimas páginas a las primeras páginas del archivo de datos. Sin embargo, el tamaño del archivo sigue siendo 10 MB.
La opción TRUNCATEONLY devuelve el espacio libre del final del archivo al sistema operativo. Sin embargo, TRUNCATEONLY no mueve páginas dentro del archivo o archivos. El archivo especificado sólo queda reducido hasta la última extensión asignada. Si se especifica la opción TRUNCATEONLY, no se tiene en cuenta target_percent.
La base de datos no puede ser menor que el tamaño de la base de datos model.
La base de datos que se comprime no tiene que estar en modo de usuario único; otros usuarios pueden estar trabajando en la base de datos cuando ésta se está reduciendo. Esto incluye las bases de datos del sistema.
Conjuntos de resultados
Esta tabla describe las columnas del conjunto de resultados.
Nombre de columna Descripción
DbId Número de identificación de la base de datos del archivo que SQL Server intentó reducir.
FileId Número de identificación del archivo que SQL Server intentó reducir.
CurrentSize El número de páginas de 8 KB que el archivo ocupa actualmente.
MinimumSize El número de páginas de 8 KB que el archivo podría ocupar, como mínimo. Esto corresponde al tamaño mínimo o tamaño de creación original de un archivo.
UsedPages El número de páginas de 8 KB que utiliza actualmente el archivo.
EstimatedPages El número de páginas de 8 KB al que SQL Server estima que se puede reducir el archivo.
Nota SQL Server no presenta filas para los archivos que no se reducen.
Permisos
De forma predeterminada, tienen permisos de ejecución de DBCC SHRINKDATABASE los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner, y dichos permisos no son transferibles.
Ejemplos
En este ejemplo se reduce el tamaño de los archivos de la base de datos de usuario UserDB para dejar un 10 por ciento de espacio libre en los archivos de UserDB.
DBCC SHRINKDATABASE (UserDB, 10)
GO
Te pego la ayuda:
Dbcc shrinkdatabase
Reduce el tamaño de los archivos de datos de la base de datos especificada.
Sintaxis
DBCC SHRINKDATABASE
( database_name [ , target_percent ]
[, {NOTRUNCATE | TRUNCATEONLY}]
)
Argumentos
database_name
Es el nombre de la base de datos que se va a reducir. Los nombres de las bases de datos se deben ajustar a las reglas para los identificadores. Para obtener más información, consulte Utilizar identificadores.
target_percent
Es el porcentaje de espacio libre que se desea dejar en el archivo de la base de datos después de reducir la base de datos.
Notruncate
Hace que el espacio de archivos liberado se retenga en los archivos de base de datos. Si no se especifica, el espacio liberado del archivo pasa al sistema operativo.
Truncateonly
Hace que se libere cualquier espacio no utilizado de los archivos de datos para su utilización por el sistema operativo y reduce el archivo a la última magnitud asignada, lo que reduce el tamaño del archivo sin mover los datos. No se intenta volver a asignar filas a las páginas desasignadas. Cuando se utiliza TRUNCATEONLY, no se tiene en cuenta target_percent.
Observaciones
Microsoft® SQL ServerT puede reducir:
Todos los archivos de datos y de registro de una base de datos específica. Ejecute DBCC SHRINKDATABASE.
Un archivo de datos o de registro de una base de datos específica. Ejecute DBCC SHRINKFILE.
DBCC SHRINKDATABASE reduce los archivos de datos de uno en uno. Sin embargo, DBCC SHRINKDATABASE reduce los archivos de registro como si todos estuvieran en una agrupación de registros contiguos.
Suponga que una base de datos llamada mydb tiene dos archivos de datos y dos archivos de registro. El tamaño de los archivos de datos y de registro es de 10 MB. El primer archivo de datos contiene 6 MB.
En cada archivo, SQL Server calcula el tamaño final, que es tamaño al que se va a reducir el archivo. Cuando DBCC SHRINKDATABASE se especifica con target_percent, SQL Server calcula el tamaño final para que quede target_percent de espacio libre en el archivo tras la reducción. Por ejemplo, si especifica un target_percent de 25 para reducir mydb. SQL Server calcula el tamaño final del archivo como 8 MB (6 MB de datos más 2 MB de espacio libre). Por tanto, SQL Server pasa los datos de los últimos 2 MB del archivo de datos al espacio libre de lo3 primeros 8 MB del archivo de datos y, a continuación, reduce el archivo.
Suponga que el primer archivo de datos de mydb contiene 7 MB de datos. La especificación de target_percent como 30 permite que este archivo de datos sea reducido y mantenga un porcentaje de espacio libre del treinta por ciento. Sin embargo, la especificación de target_percent como 40 no reduce el archivo de datos porque SQL Server no reduce un archivo a un tamaño menor que el ocupado por los datos. Este aspecto también se puede ver de otro modo: 40 por ciento de espacio libre + 70 por ciento de datos en el archivo (7 MB de 10 MB) es mayor que 100 por ciento. Como el porcentaje de espacio libre deseado más el porcentaje actual ocupado por los datos supera el 100 por ciento (en un 10 por ciento), con un target_size superior a 30 no se reducirá el archivo de datos.
En los archivos de registro, SQL Server utiliza target_percent para calcular el tamaño final de todo el registro de forma que target_percent sea la cantidad de espacio libre del registro después de la operación de reducción. El tamaño final de todo el registro se traduce, entonces, en el tamaño final de cada archivo de registro. DBCC SHRINKDATABASE intenta reducir cualquier archivo de registro físico a su tamaño final de forma inmediata. Si ninguna parte del registro lógico se encuentra en los registros virtuales más allá del tamaño final del archivo de registro, el archivo se trunca de manera correcta y DBCC SHRINKDATABASE finaliza sin mensajes. Sin embargo, si parte del registro lógico está en los registros virtuales más allá del tamaño final, SQL Server 2000 libera tanto espacio como sea posible y a continuación emite un mensaje informativo. El mensaje indica las acciones que debe llevar a cabo para mover el registro lógico de los registros virtuales al final del archivo. Tras llevar a cabo estas acciones, puede volver a emitir la instrucción DBCC SHRINKDATABASE para liberar el espacio restante. Para obtener más información sobre la reducción de archivos de registro, consulte Reducir el registro de transacciones.
Como un archivo de registro sólo puede reducirse al límite de un archivo de registro virtual, puede que no sea posible reducirlo a un tamaño menor que el de un archivo de registro virtual, aunque no esté siendo utilizado. Por ejemplo, una base de datos con un archivo de registro de 1 GB puede hacer que el archivo de registro quede reducido a sólo 128 MB. Para obtener más información acerca del truncado, consulte Truncar el registro de transacciones. Para obtener más información acerca de cómo determinar los tamaños de los archivos de registro virtuales, consulte Archivos de registro virtuales.
El tamaño final de los archivos de datos y de registro calculado por DBCC SHRINKDATABASE nunca puede ser menor que el tamaño mínimo de un archivo. El tamaño mínimo de un archivo es el tamaño especificado cuando se creó el archivo, o el último tamaño establecido explícitamente mediante una operación de modificación del tamaño del archivo, como ALTER DATABASE con la opción MODIFY FILE o DBCC SHRINKFILE. Por ejemplo, si al ejecutar CREATE DATABASE se especificó que el tamaño de todos los archivos de datos y de registro de mydb fuera 10 MB, el tamaño mínimo de cada archivo es 10 MB. DBCC SHRINKDATABASE no puede reducir ninguno de los archivos a un tamaño menor que 10 MB. Si el tamaño de uno de los archivos ha sido aumentado explícitamente a 20 MB mediante ALTER DATABASE con la opción MODIFY FILE, el nuevo tamaño mínimo del archivo es 20 MB. Para reducir el tamaño de un archivo a un tamaño menor que su tamaño mínimo, utilice DBCC SHRINKFILE y especifique el nuevo tamaño. La ejecución de DBCC SHRINKFILE hace que el tamaño mínimo del archivo sea el nuevo tamaño especificado.
Cuando se utilizan archivos de datos, DBCC SHRINKDATABASE tiene las opciones NOTRUNCATE y TRUNCATEONLY. Ambas opciones no tienen efecto en los archivos de registro. DBCC SHRINKDATABASE sin opciones es equivalente a DBCC SHRINKDATABASE con la opción NOTRUNCATE seguida de DBCC SHRINKDATABASE con la opción TRUNCATEONLY.
La opción NOTRUNCATE, con o sin la especificación de target_percent, ejecuta las operaciones de movimiento de datos de DBCC SHRINKDATABASE, incluido el movimiento de las páginas asignadas del final del archivo a páginas no asignadas del principio del archivo. Sin embargo, el espacio libre del final del archivo no se devuelve al sistema operativo y el tamaño físico del archivo no cambia. Por tanto, cuando se especifica la opción NOTRUNCATE, no parece que los archivos de datos se hayan reducido. Por ejemplo, suponga que está utilizando de nuevo la base de datos mydb. Mydb tiene dos archivos de datos y dos archivos de registro. El tamaño del segundo archivo de datos y el segundo archivo de registro es de 10 MB. Cuando se ejecuta DBCC SHRINKDATABASE mydb NOTRUNCATE, Microsoft® SQL ServerT pasa los datos de las últimas páginas a las primeras páginas del archivo de datos. Sin embargo, el tamaño del archivo sigue siendo 10 MB.
La opción TRUNCATEONLY devuelve el espacio libre del final del archivo al sistema operativo. Sin embargo, TRUNCATEONLY no mueve páginas dentro del archivo o archivos. El archivo especificado sólo queda reducido hasta la última extensión asignada. Si se especifica la opción TRUNCATEONLY, no se tiene en cuenta target_percent.
La base de datos no puede ser menor que el tamaño de la base de datos model.
La base de datos que se comprime no tiene que estar en modo de usuario único; otros usuarios pueden estar trabajando en la base de datos cuando ésta se está reduciendo. Esto incluye las bases de datos del sistema.
Conjuntos de resultados
Esta tabla describe las columnas del conjunto de resultados.
Nombre de columna Descripción
DbId Número de identificación de la base de datos del archivo que SQL Server intentó reducir.
FileId Número de identificación del archivo que SQL Server intentó reducir.
CurrentSize El número de páginas de 8 KB que el archivo ocupa actualmente.
MinimumSize El número de páginas de 8 KB que el archivo podría ocupar, como mínimo. Esto corresponde al tamaño mínimo o tamaño de creación original de un archivo.
UsedPages El número de páginas de 8 KB que utiliza actualmente el archivo.
EstimatedPages El número de páginas de 8 KB al que SQL Server estima que se puede reducir el archivo.
Nota SQL Server no presenta filas para los archivos que no se reducen.
Permisos
De forma predeterminada, tienen permisos de ejecución de DBCC SHRINKDATABASE los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner, y dichos permisos no son transferibles.
Ejemplos
En este ejemplo se reduce el tamaño de los archivos de la base de datos de usuario UserDB para dejar un 10 por ciento de espacio libre en los archivos de UserDB.
DBCC SHRINKDATABASE (UserDB, 10)
GO
- Compartir respuesta
- Anónimo
ahora mismo