una tamaño tablas script saber maximo las datos compatibilidad como calcular sql-server tsql

tablas - Determinar el tamaño de la base de datos de SQL Server



tamaño de indices sql server (7)

De acuerdo con la ayuda de SQL2000, sp_spaceused incluye datos e índices.

Este script debería hacer:

CREATE TABLE #t (name SYSNAME, rows CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18)) EXEC sp_msforeachtable ''INSERT INTO #t EXEC sp_spaceused ''''?'''''' -- SELECT * FROM #t ORDER BY name -- SELECT name, CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3)) FROM #t ORDER BY name SELECT SUM(CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3))) FROM #t DROP TABLE #t

La edición Express de SQL Server 2005/2008 tiene una limitación de 4 GB por base de datos. Por lo que sé, el motor de base de datos considera solo los datos, excluyendo así los archivos de registro, el espacio no utilizado y el tamaño del índice.

Obtener la longitud del archivo MDF no debe dar el tamaño correcto de la base de datos en términos de limitación de SQL Server. Mi pregunta es cómo obtener el tamaño de la base de datos?


En SQL Management Studio, haga clic derecho en una base de datos y seleccione "Propiedades" en el menú contextual. Mire la figura de "Tamaño".


La mejor solución es tal vez calcular el tamaño de cada archivo de base de datos, utilizando la vista sys.sysfiles, considerando un tamaño de 8 KB para cada página, de la siguiente manera:

USE [myDatabase] GO SELECT [size] * 8 , [filename] FROM sysfiles

La columna [field] representa el tamaño del archivo, en páginas ( Referencia de MSDN a sysfiles ).

Verá que habrá al menos dos archivos (MDF y LDF): la suma de estos archivos le dará el tamaño correcto de toda la base de datos ...


Podrías usar este anticuado también ...

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go DECLARE @iCount int, @iMax int, @DatabaseName varchar(200), @SQL varchar (8000) Select NAME, DBID, crdate, filename, version INTO #TEMP from MAster..SYSDatabASES SELECT @iCount = Count(DBID) FROM #TEMP Select @SQL=''Create Table ##iFile1 ( DBName varchar( 200) NULL, Fileid INT, FileGroup int, TotalExtents INT , USedExtents INT , Name varchar(100), vFile varchar (300), AllocatedSpace int NUll, UsedSpace int Null, PercentageFree int Null ) ''+ char(10) exec (@SQL) Create Table ##iTotals ( ServerName varchar(100), DBName varchar( 200) NULL, FileType varchar(10),Fileid INT, FileGroup int, TotalExtents INT , USedExtents INT , Name varchar(100), vFile varchar (300), AllocatedSpace int NUll, UsedSpace int Null, PercentageFree int Null ) WHILE @iCount>0 BEGIN SELECT @iMax =Max(dbid) FROM #TEMP Select @DatabaseName = Name FROM #TEMP where dbid =@iMax SELECT @SQL = ''INSERT INTO ##iFile1(Fileid , FileGroup , TotalExtents , USedExtents , Name , vFile) EXEC (''''USE ['' + @DatabaseName + ''] DBCC showfilestats'''') '' + char(10) Print (@SQL) EXEC (@SQL) SELECT @SQL = ''UPDATE ##iFile1 SET DBName =''''''+ @DatabaseName +'''''' WHERE DBName IS NULL'' EXEC (@SQL) DELETE FROM #TEMP WHERE dbid =@iMax Select @iCount =@iCount -1 END UPDATE ##iFile1 SET AllocatedSpace = (TotalExtents * 64.0 / 1024.0 ), UsedSpace =(USedExtents * 64.0 / 1024.0 ) UPDATE ##iFile1 SET PercentageFree = 100-Convert(float,UsedSpace)/Convert(float,AllocatedSpace )* 100 WHERE USEDSPACE>0 CREATE TABLE #logspace ( DBName varchar( 100), LogSize float, PrcntUsed float, status int ) INSERT INTO #logspace EXEC (''DBCC sqlperf( logspace)'') INSERT INTO ##iTotals(ServerName, DBName, FileType,Name, vFile,PercentageFree,AllocatedSpace) select @@ServerName ,DBNAME, ''Data'' as FileType,Name, vFile, PercentageFree , AllocatedSpace from ##iFile1 UNION select @@ServerName ,DBNAME, ''Log'' as FileType ,DBName,'''' as vFile ,PrcntUsed , LogSize from #logspace Select * from ##iTotals select ServerName ,DBNAME, FileType, Sum( AllocatedSpace) as AllocatedSpaceMB from ##iTotals Group By ServerName ,DBNAME, FileType Order By ServerName ,DBNAME, FileType select ServerName ,DBNAME, Sum( AllocatedSpace) as AllocatedSpaceMB from ##iTotals Group By ServerName ,DBNAME Order By ServerName ,DBNAME drop table ##iFile1 drop table #logspace drop table #TEMP drop table ##iTotals


Siempre me gustó ir directamente después:

SELECT DB_NAME( dbid ) AS DatabaseName, CAST( ( SUM( size ) * 8 ) / ( 1024.0 * 1024.0 ) AS decimal( 10, 2 ) ) AS DbSizeGb FROM sys.sysaltfiles GROUP BY DB_NAME( dbid )


sp_helpdb

no es necesario bucle, a diferencia de sp_spaceused.


sp_spaceused