2010-04-27 3 views
1

Есть ли место, где я могу найти все возможные зависимости типа объекта в Sql Server?Sql Server: все зависимые объекты

Что я имею в виду под «объектной зависимостью» - это список объектов, от которых зависит один объект. Например, таблица может зависеть от схемы, введите, таблица, функция и т.д.

ответ

0

Для реальных объектов (какие объекты делает таблицы 'Foo' зависит от):

sys.sql_dependencies

Является основном точным , Существует также помощник SMO, DependencyWalker.

В целом вопрос вопрос (т. Е. На какой тип объекта может повлиять таблица), вам просто нужно пройти спецификацию в MSDN для каждого оператора CREATE/ALTER и внимательно прочитать все.

+0

Меня интересуют зависимости между всем объектом в целом, а не зависимостями в одной определенной базе данных/сервере. Например, мне нужен список ВСЕХ ОБЪЕКТОВ, от которых зависит ТАБЛИЦА и т. Д. – Gjorgji

1

Помимо динамического SQL, технически SQL Server отслеживает зависимости. Однако до SQL Server 2008 отслеживание не было надежным, поскольку оно только обновляло зависимости, если все зависимые объекты существовали во время создания. SQL Server 2008 значительно улучшил отслеживание зависимостей.

В SQL Server 2000 и 2005 вы можете запросить sys.sql_dependencies, чтобы получить список зависимостей.

В SQL Server 2008 вы должны использовать sys.sql_expression_dependencies См. sys.sql_expression_dependencies для получения дополнительной информации.

EDIT Возможно, я неверно истолковал ваш вопрос. Похоже, вы ищете список объектов типов, от которых может зависеть объект типа TABLE. Прямо или косвенно, это будет любой тип объекта в системе. Если мы хотим только «прямых» зависимостей, то это зависит от того, что подразумевается под «прямым». Например, вызывает ли триггер, ссылающийся на представление, как прямая зависимость таблицы триггеров с представлением?

EDIT Насколько я знаю, нет перечисления всех возможных зависимостей между типами. Самое лучшее, что вы могли бы добиться того, чтобы проанализировать типы, которые зависят от других типов в данной базе данных, используя что-то вроде:

Select DependentObj.Type, ReferencedObj.Type 
from sys.sql_dependencies As D 
    Join sys.sysobjects As ReferencedObj 
     On ReferencedObj.id = D.referenced_major_id 
    Join sys.sysobjects As DependentObj 
     On DependentObj.id = D.object_id 
Group By DependentObj.Type, ReferencedObj.Type 
+0

Меня интересуют зависимости между всем объектом в целом, а не зависимостями в одной определенной базе данных/сервере. Например, мне нужен список ВСЕХ ОБЪЕКТОВ, от которых зависит ТАБЛИЦА и т. Д. – Gjorgji

+0

@Gjorgji - Я не уверен, что понимаю. Используя упомянутый каталог, вы можете найти все объекты, которые зависят от данной таблицы или всех объектов, от которых зависит данная таблица. – Thomas

+0

@Gjorgji - Однако должно быть ясно, что нет никаких средств для определения того, какие объекты за пределами базы данных зависят от данной таблицы. – Thomas

0

сохранялись вычисляемый столбец в таблице может зависеть от определенного пользователя функции.

Не определенная функция, определяемая пользователем, может зависеть от таблицы.

Ограничение может привести к тому, что таблица будет зависеть от таблицы.

ad nauseum.

Вы можете выбрать любую пару типов объектов, и мы могли бы придумать зависимость.

Очевидно, что существуют некоторые ограничения в различных функциях SQL Server, но я не знаю какой-либо всеобъемлющей матрицы всех возможных разрешенных и запрещенных зависимостей.

Смежные вопросы