2010-07-16 2 views
0

Я хочу знать тип роста (% или МБ) для файлов базы данных на SQL-сервере 2000. Я использовал sys.database_files файлы на Microsoft SQL Server 2005 для получения этой информации. Я попытался использовать sysfiles на Microsoft SQL Server 2000 для этого, но это было недостаточно.tsql, чтобы получить тип роста файлов данных в SQL 2000

ответ

1

Этот запрос должен помочь:

SELECT 
    name, 
    size, 
    growth, 
    status, 
    size * 8 AS size_in_kb, 
    size * 8/1024. AS size_in_mb, 
    CASE WHEN status & 0x100000 > 0 
     THEN growth 
     ELSE NULL END AS growth_in_percent, 
    CASE WHEN status & 0x100000 = 0 
     THEN growth * 8/1024. END AS growth_in_mb 
FROM sysfiles 
+0

Спасибо .... Это как раз то, что я был после :-) – Manjot

1

Вы можете запросить вид sysfiles системы:

SELECT * FROM sysfiles 

Это даст вам довольно много битов для каждого файла, включая его текущий размер, максимальный размер и рост (плюс флаг, является ли этот рост фиксированное количество страниц или процент).

См. MSDN documentation для получения информации о том, что такое столбцы и что они означают.

+1

Подсказка для OP: использование "/ 128" для преобразования страниц в МБ ... – gbn

+0

Спасибо за напоминание – Manjot

+0

Размер находится на страницах. 'size/128.0' предоставит вам MiB, включая заголовки страниц. Если вы хотите, чтобы MB, включая заголовки, вы должны были делать 'size * 8192.0/1000000.0', и если вы хотите, чтобы MB исключая заголовки, вы должны сделать' size * 8060.0/1000000.0'. https://technet.microsoft.com/en-us/library/ms190969(v=sql.105).aspx https://en.wikipedia.org/wiki/Binary_prefix – jumxozizi

0
SELECT DB_NAME() AS DBName 
,groupid AS FileGroup 
,fileid AS FileID 
,RTRIM(NAME) AS LogicalFileName 
,filename AS PhysicalFileName 
,CAST(size/128.0 AS DECIMAL(10, 2)) AS Size_MB 
,CAST(FILEPROPERTY(NAME, 'SpaceUsed')/128.0 AS DECIMAL(10, 2)) AS SpaceUsed_MB 
,CAST(size/128.0 - (FILEPROPERTY(NAME, 'SpaceUsed')/128.0) AS DECIMAL(10, 2)) AS AvailableSpace_MB 
,CAST((CAST(FILEPROPERTY(NAME, 'SpaceUsed')/128.0 AS DECIMAL(10, 2))/CAST(size/128.0 AS DECIMAL(10, 2))) * 100 AS DECIMAL(10, 2)) AS UsedPercentage 
,CASE 
    WHEN STATUS & 0x100000 > 0 THEN growth 
    ELSE NULL 
    END AS Growth_Percent 
,CASE 
    WHEN STATUS & 0x100000 = 0 THEN CAST(growth/128.0 AS DECIMAL(10, 2)) 
    END AS Growth_MB 
,CASE maxsize 
    WHEN 0 THEN 'No growth is allowed' 
    WHEN - 1 THEN 'File will grow until the disk is full' 
    ELSE CONVERT(VARCHAR, CAST(maxsize/128.0 AS DECIMAL(10, 2))) 
    END AS MaxSize_MB 
FROM sysfiles 

Просто немного подробнее