¿Cómo verificar si estoy llegando al límite de tamaño de Express Edition?


10

Estoy confundido. AFAIK SQL Server 2005 Express tiene un límite de tamaño de datos de base de datos de 4 GB . Sin embargo, tengo los siguientes resultados de sp_spaceused:

¿Cuál es el tamaño real de la base de datos?

  1. ¿Cómo puedo verificar si mi DB está alcanzando el límite de tamaño?
  2. ¿El espacio no asignado es space lefthasta que llego al límite?
  3. ¿Cuánto espacio me queda?
  4. ¿ index_sizeCuenta en el límite?

Puede verificar la columna backup_size de msdb.dbo.backupset.

Respuestas:


6

Aquí hay un buen script que descaradamente arranqué de aquí :

use [Insert DB Name]

select
a.FILEID,
[FILE_SIZE_MB] = 
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a

Esto es bueno porque le dará el espacio libre en cada archivo DB (es posible que tenga varios archivos y tal vez alguien lo configure para poner algunos objetos en cada uno), así como el tamaño libre.

Por ejemplo, tiene un archivo de datos de 4 GB que tiene 3 GB de espacio libre. Quizás tenga 1 MDF sin muchos datos, pero un NDF con muchos datos. Esta consulta le indicará el tamaño libre en cada archivo y a qué DB está asignado ese archivo. Recuerde agregar todos los 'SPACE_USED_MB' para cada DB para obtener el tamaño total.

¡Buena suerte!

Editar: se eliminó un comando no compatible y con errores que pensé que podría publicar aquí para esta consulta. :(



PD: si va a usar vistas antiguas de compatibilidad con versiones anteriores, puede simplificar esto un poco usando sysaltfiles(esto elimina la necesidad de ingresar a cada base de datos).
Aaron Bertrand

1
Gracias Aaron por los sysaltfiles, ¡aún no he investigado eso! sp_msforeachdb tiene muchos problemas dolorosos, pero pensé en una instalación de SQL Express donde el tipo solo quiere ejecutar una consulta para ver cuánto espacio libre tiene, está bien.
Ali Razeghi

Excepto cuando omite bases de datos y no genera un error ...
Aaron Bertrand

Sí, pero en este caso, ¿realmente crees que será un problema donde el usuario final solo quiere un recuento de tamaño de base de datos? Supongo que no debería publicarlo incluso en los casos en que el usuario final verá absolutamente si omitió la base de datos que está buscando para que no refuerce el mal comportamiento. Simplemente eliminaré esa parte en este punto, tienes razón, no necesitamos ese comando en cualquier otro lugar.
Ali Razeghi

5

El tamaño de la base de datos es el tamaño del archivo. Mire el tamaño real del archivo de datos (el registro de transacciones no cuenta). Sí, los índices cuentan. Si se está quedando sin espacio, considere una actualización a SQL 2012 Express, ya que eso aumenta el límite de tamaño a 10 Gigs.


66
SQL Server 2008 R2 Express también tiene un límite de 10 GB (solo para completar)
marzo

1

Cuando sp_spaceused muestra el tamaño de la base de datos de aproximadamente 25 GB en su primer conjunto de resultados, que incluye el archivo de datos / índices y el registro de transacciones. Solo los datos e índices reales cuentan para los límites de SQL Server Express, por lo que tiene aproximadamente 3,3 GB de datos (como en su segundo conjunto de resultados) y los 22 GB restantes serán el registro de transacciones. Si ejecuta "sp_helpdb", esto muestra la imagen real, ya que informa el uso de datos y el uso del registro de transacciones en dos filas separadas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.