Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получить месторасположение файловой группы БД  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Каким образом в T-SQL можно получить местоположение (путь) файла, соответствующей определённой файловой группе (filegroups) базы данных? SQL 2008.
22 дек 09, 13:30    [8101402]     Ответить | Цитировать Сообщить модератору
 Re: Получить месторасположение файловой группы БД  [new]
Думающий
Member

Откуда: Месный
Сообщений: 963
			create table #tmpspc (Fileid int, FileGroup int, TotalExtents int, UsedExtents int, Name sysname, FileName nchar(520))
			insert #tmpspc EXEC ('dbcc showfilestats')
		


DECLARE @PageSize float 
SELECT @PageSize=v.low/1024.0 FROM master..spt_values v WHERE v.number=1 AND v.type='E'
			


SELECT
g.groupname AS [FileGroup_Name],
rtrim(s.name) AS [Name],
(tspc.TotalExtents - tspc.UsedExtents)*convert(float,64) AS [AvailableSpace],
rtrim(s.filename) AS [FileName],
CAST(CASE WHEN (0 <>(s.status & 0x100000)) THEN s.growth ELSE s.growth * @PageSize END AS float) AS [Growth],
CASE WHEN s.growth=0 THEN 99 WHEN (0 <>(s.status & 0x100000)) THEN 1 ELSE 0 END AS [GrowthType],
CAST(s.fileid AS int) AS [ID],
CAST(CASE s.fileid WHEN 1 THEN 1 ELSE 0 END AS bit) AS [IsPrimaryFile],
case when s.maxsize=-1 then -1 else s.maxsize * @PageSize end AS [MaxSize],
(s.size * @PageSize) AS [Size],
CAST(tspc.UsedExtents*convert(float,64) AS float) AS [UsedSpace]
FROM
dbo.sysfilegroups AS g
INNER JOIN dbo.sysfiles AS s ON s.groupid=CAST(g.groupid AS int)
LEFT OUTER JOIN #tmpspc tspc ON tspc.Fileid = CAST(s.fileid AS int)
ORDER BY
[FileGroup_Name] ASC,[Name] ASC

			drop table #tmpspc
		
Скопировано из профайлера при открытии свойств бд
22 дек 09, 13:35    [8101459]     Ответить | Цитировать Сообщить модератору
 Re: Получить месторасположение файловой группы БД  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
О, нашел способ и гораздо проще
SELECT physical_name FROM sys.database_files
22 дек 09, 13:40    [8101515]     Ответить | Цитировать Сообщить модератору
 Re: Получить месторасположение файловой группы БД  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Точнее
SELECT physical_name FROM sys.database_files df
INNER JOIN sysfilegroups gr ON df.file_id = gr.groupid 
WHERE groupname = 'PRIMARY'
22 дек 09, 13:45    [8101569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить