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

+

if object_id('tempdb..#tmp') is not null drop table tempdb..#tmp
select
		o.name			as [Table name], 
		c.name			as [Column name], 
		ty.name			as [Data type], 
		c.max_length, 
		c.precision, 
		c.scale, 
		c.is_nullable, 
		c.is_identity,
		c.is_computed,
		tr.name			as [tn],
		ind.name		as [ixn]
	into #tmp
	from 
		sys.objects o 
		join sys.columns c 
			on o.object_id = c.object_id
		join sys.types ty 
			on c.system_type_id = ty.system_type_id
		left join sys.triggers tr
			on o.object_id = tr.parent_id
		left join sys.index_columns idx
			on idx.object_id = c.object_id and idx.column_id = c.column_id
		left join sys.indexes ind
			on idx.object_id = ind.object_id and idx.index_id = ind.index_id
	where 
		o.type = N'U' 
		and ty.name <> N'sysname'
	order by 
		o.name, 
		c.column_id

select 
		Max([No]) as [No],
		[Table name], 
		[Column name], 
		[Data type], 
		max_length, 
		[precision], 
		scale, 
		is_nullable, 
		is_identity,
		is_computed,
		[Trigger name],
		[Index Name] 
	from 
		(
		select top 100 percent
				row_number() over(order by [Table name] asc, is_identity desc, [Column name] asc) as [No], 
				[Table name], 
				[Column name], 
				[Data type], 
				max_length, 
				[precision], 
				scale, 
				is_nullable, 
				is_identity,
				is_computed,
				replace(replace(stuff(
						(select ','+ t2.tn as tn 
							from #tmp t2 
							where t1.[Table name]=t2.[Table name] 
							group by tn 
							for xml path('')
						),
					1,5,''
					),'<tn>',''
					),'</tn>',''
					) as [Trigger name],
				replace(replace(stuff(
						(select ','+ t3.ixn as ixn 
							from #tmp t3 
							where t1.[Table name]=t3.[Table name] and t1.[Column name]=t3.[Column name]
							group by ixn 
							for xml path('')
						),
					1,6,''
					),'<ixn>',''
					),'</ixn>',''
					) as [Index Name]
			from 
				#tmp t1
			order by 
				[Table name] asc, is_identity desc, [Column name] asc 
		) t
	group by
		[No],
		[Table name], 
		[Column name], 
		[Data type], 
		max_length, 
		[precision], 
		scale, 
		is_nullable, 
		is_identity,
		is_computed,
		[Trigger name],
		[Index Name]	
	order by 
		[Table name] asc, 
		is_identity desc, 
		[Column name] asc			

drop table #tmp


но не поняла, как еще добавить сюда к каждой таблице файловую группу (как я понимаю:sys.filegroups), подскажите, плз!
30 май 14, 17:20    [16098913]     Ответить | Цитировать Сообщить модератору
 Re: вывод сведений о таблицах бд  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
linav,
как то так
+
SELECT
  s.name			as [Schema name], 
	t.name			as [Table name], 
  ds.type AS data_space_type,
  ds.name AS data_space_name,
  lob_ds.type AS lob_data_space_type,
  lob_ds.name AS lob_data_space_name
	from 
		sys.tables t
    INNER JOIN sys.schemas s
      on s.schema_id =  t.schema_id
		LEFT JOIN sys.indexes ind
			on t.object_id = ind.object_id and ind.index_id IN (0,1)
    LEFT JOIN sys.data_spaces AS ds ON ds.data_space_id = ind.data_space_id
    LEFT JOIN sys.data_spaces lob_ds ON lob_ds.data_space_id = t.lob_data_space_id
30 май 14, 20:23    [16099545]     Ответить | Цитировать Сообщить модератору
 Re: вывод сведений о таблицах бд  [new]
linav
Guest
Mind,

спасибо! )
30 май 14, 20:42    [16099595]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить