Saltar al contenido

Límite de tamaño de la base de datos de SQL Server Express 2012

Este post ha sido probado por nuestros expertos para que tengas la garantía de la veracidad de nuestra esta noticia.

Solución:

SQL Server Express solo impone límites de tamaño de archivo en los archivos de datos, los archivos de registro pueden crecer a cualquier tamaño. los Tamaño que se muestra en la ventana de propiedades de la base de datos son los tamaños combinados de los datos y el archivo de registro.

Aunque algo confuso, el Espacio libre El valor que se muestra en esta ventana solo se relaciona con los archivos de datos. Si desea ver esto con más detalle, le recomiendo consultar las tablas del sistema en lugar de confiar en la GUI de SSMS (que no siempre le brindará la información que desea/necesita). El siguiente script mostrará información más detallada sobre el tamaño de los archivos de datos/configuraciones de crecimiento:

SELECT 
    [TYPE] = DF.TYPE_DESC
    ,[FILE_Name] = DF.name
    --,[FILEGROUP_NAME] = FG.name
    ,[File_Location] = DF.PHYSICAL_NAME
    ,[FILESIZE_MB] = CONVERT(DECIMAL(10,2),DF.SIZE/128.0)
    ,[USEDSPACE_MB] = CONVERT(DECIMAL(10,2),DF.SIZE/128.0 - ((SIZE/128.0) - CAST(FILEPROPERTY(DF.NAME, 'SPACEUSED') AS INT)/128.0))
    ,[FREESPACE_MB] = CONVERT(DECIMAL(10,2),DF.SIZE/128.0 - CAST(FILEPROPERTY(DF.NAME, 'SPACEUSED') AS INT)/128.0)
    ,[FREESPACE_%] = CONVERT(DECIMAL(10,2),((DF.SIZE/128.0 - CAST(FILEPROPERTY(DF.NAME, 'SPACEUSED') AS INT)/128.0)/(DF.SIZE/128.0))*100)
    ,[AutoGrow] = 'By ' + CASE is_percent_growth WHEN 0 THEN CAST(growth/128 AS VARCHAR(10)) + ' MB -' 
        WHEN 1 THEN CAST(growth AS VARCHAR(10)) + '% -' ELSE '' END 
        + CASE max_size WHEN 0 THEN 'DISABLED' WHEN -1 THEN ' Unrestricted' 
            ELSE ' Restricted to ' + CAST(max_size/(128*1024) AS VARCHAR(10)) + ' GB' END 
        + CASE is_percent_growth WHEN 1 THEN ' [WARNING: Autogrowth by percent]' ELSE '' END
FROM sys.database_files DF
LEFT JOIN sys.filegroups FG
ON DF.data_space_id = FG.data_space_id 
order by DF.TYPE desc, DF.NAME; 

Como comentario aparte: dado que su archivo de datos ya tiene 10 GB, las operaciones de crecimiento futuras fallarán (y cualquier transacción que desencadenó el crecimiento generará un error de grupo de archivos principal completo). Dado que el archivo tiene exactamente 10 GB, sospecho que se ha ampliado deliberadamente a esta cantidad para aprovechar la cantidad total de espacio que ofrece SQL Express.

SQL Server asignará más espacio en disco a medida que crezca su base de datos. Puede comenzar con 1 GB, pero aumentará a 3 GB con el tiempo. Dado que es ineficiente reasignar para cada registro, crece en x% o xMB (puede definirlos). El espacio disponible es la cantidad de espacio en disco vacío que puede usar antes del próximo crecimiento.

Si por alguna razón cree que su base de datos ha crecido a un tamaño poco realista, puede usar DBCC SHRINKDATABASE()

En cuanto al límite expreso, no estoy seguro de cómo se calcula exactamente. Pero es posible que la mayor parte del tamaño de su base de datos sea el archivo de registro, especialmente si ha realizado muchas actualizaciones y eliminaciones y no ha realizado ninguna copia de seguridad.

Puede comprobar el tamaño del archivo de registro:

DBCC SQLPERF (LOGSPACE)

Si descubre que el archivo de registro está sobredimensionado y no necesita la opción de recuperación en un momento dado, puede cambiar el modelo de recuperación a simple y eso reducirá significativamente su crecimiento.

Modelos de recuperación: https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/recovery-models-sql-server

Si haces scroll puedes encontrar las explicaciones de otros sys admins, tú incluso tienes la opción de dejar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *