Все знают как узнать сколько есть свободного места на ваших HDD. Но как узнать сколько свободного места в ваших файловых группах? Забиты они или же напротив лишь занимают место, а внутри очень мало данных? Ниже приведен скрипт для определения размера файлов, используемого и свободного объема в них, а так же размера, до которого будут расширяться файлы, когда места станет недостаточно.
select db_name(sa.dbid) as DBname , sa.name as LogicalName , case sa.groupid WHEN 0 then 'LOG' ELSE sfg.groupname end as Filegroup , sa.filename as Filename , cast(sf.size*8/1024. as numeric(19,3))as sizeMB , cast(sf.spaceused*8/1024. as numeric(19,3)) as spaceusedMB , cast((sf.size-sf.spaceused)*8/1024. as numeric(19,3)) as freespaceMB , case sf.maxsize when -1 then 'Unlimited' else cast(cast(sf.maxsize*8/1024. as numeric(19,3))as varchar(22)) end as maxsizeMB , cast(sf.growth*8/1024. as numeric(19,3)) as nextgrowthMB from master..sysaltfiles sa left join ( select cast(size as bigint) as size ,fileid ,groupid ,cast(fileproperty(name,'SpaceUsed')as bigint) as spaceused ,cast(maxsize as bigint) as maxsize ,cast(case when status & 0x100000 = 0 then growth else size*growth/100 end as bigint) as growth from sysfiles ) sf on sf.fileid=sa.fileid and sf.groupid = sa.groupid left outer join sysfilegroups sfg on sfg.groupid = sf.groupid where sa.dbid = db_id() order by case when sa.groupid = 0 then 1 else 0 end, sa.groupid, sa.fileid
Владение этими данными очень важно для планирования и понимания внутренних процессов сервера. Ниже приведен пример возвращаемых данных. Видно, что в данном случае реальных данных в файлах очень мало.
Этот комментарий был удален администратором блога.
ОтветитьУдалить