Я хочу знать тип роста (% или МБ) для файлов базы данных на SQL-сервере 2000. Я использовал sys.database_files
файлы на Microsoft SQL Server 2005 для получения этой информации. Я попытался использовать sysfiles
на Microsoft SQL Server 2000 для этого, но это было недостаточно.tsql, чтобы получить тип роста файлов данных в SQL 2000
ответ
Этот запрос должен помочь:
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
Вы можете запросить вид sysfiles
системы:
SELECT * FROM sysfiles
Это даст вам довольно много битов для каждого файла, включая его текущий размер, максимальный размер и рост (плюс флаг, является ли этот рост фиксированное количество страниц или процент).
См. MSDN documentation для получения информации о том, что такое столбцы и что они означают.
Подсказка для OP: использование "/ 128" для преобразования страниц в МБ ... – gbn
Спасибо за напоминание – Manjot
Размер находится на страницах. '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
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
Просто немного подробнее
Спасибо .... Это как раз то, что я был после :-) – Manjot