2011-05-10 12 views
15

He intentado lo siguiente en SQL Server:Cómo coger la salida de un DBCC-Declaración en un TempTable

create table #TmpLOGSPACE(
    DatabaseName varchar(100) 
    , LOGSIZE_MB decimal(18, 9) 
    , LOGSPACE_USED decimal(18, 9) 
    , LOGSTATUS decimal(18, 9)) 

insert #TmpLOGSPACE(DatabaseName, LOGSIZE_MB, LOGSPACE_USED, LOGSTATUS) 
DBCC SQLPERF(LOGSPACE); 

... pero esto eleva una sintaxis error ...

Cualquier sugestiones?

Respuesta

18

Ponga la declaración para ejecutar dentro de EXEC('')

insert #TmpLOGSPACE(DatabaseName, LOGSIZE_MB, LOGSPACE_USED, LOGSTATUS) 
EXEC('DBCC SQLPERF(LOGSPACE);') 
1

Esto no responde directamente a la pregunta, pero sí responder a la intención de la pregunta: presumiblemente, desea una forma sencilla de encontrar el tamaño actual de el archivo de registro:

SELECT size*8192.0/1024.0/1024.0 as SizeMegabytes 
FROM sys.database_files 
WHERE type_desc = 'LOG' 
-- If the log file size is 100 megabytes, returns "100". 

la razón por la multiplicamos por 8192 es que el tamaño de página en el servidor SQL es de 8192 bytes.

La razón por la que dividimos por 1024, luego nuevamente por 1024, es convertir el tamaño de bytes a megabytes.

Cuestiones relacionadas