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

Откуда: glubinka
Сообщений: 4257
в какой мере это возможно.
Предпологается что нет циклических зависимостей.

Что-то не совсем понятко каким образом склеивать subj.

По идее сначала отнумеровать те у которых to_table i null, потом те что на них ссылаются.

WITH cte ( from_table, to_table ) AS (
     select DISTINCT o1.Name as from_table, o2.Name as to_table 
		from sys.foreign_keys fk 
			inner join sys.objects o1 on fk.parent_object_id = o1.object_id 
			inner join sys.schemas s1 on o1.schema_id = s1.schema_id
			inner join sys.objects o2 on fk.referenced_object_id = o2.object_id 
			inner join sys.schemas s2 on o2.schema_id = s2.schema_id 
		where not ( s1.name = s2.name and o1.name = o2.name)
     ) 
	 SELECT from_table, to_table FROM 
	 (
		 SELECT from_table, to_table FROM cte
		 union all
		 SELECT name, null  FROM sys.tables t where NOT EXISTS (select * from cte where cte.from_table = t.name)
	 )x order by 1
22 июн 15, 23:28    [17804293]     Ответить | Цитировать Сообщить модератору
 Re: список таблиц отсортированный по зависимостям в алфавитном порядке  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
Lepsik
Что-то не совсем понятко каким образом склеивать subj.
Делать рекурсивный CTE, с дополнительным полем уровень, вначале брать объекты без зависимостей, потом подцеплять зависимые от них.
Потом сортировать по уровню. Какой то такой подход, видимо...
23 июн 15, 00:17    [17804481]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить