Sql Server: все объектные зависимости - PullRequest
1 голос
/ 28 апреля 2010

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

То, что я имею в виду под «зависимостью объекта», представляет собой список объектов, от которых может зависеть один объект. Например, TABLE может зависеть от SCHEMA, TYPE, TABLE, FUNCTION и т. Д.

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Технически, кроме динамического 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 .

РЕДАКТИРОВАТЬ Я думаю, что, возможно, неправильно истолковал ваш вопрос. Похоже, вы ищете список объектов types , от которых может зависеть объект типа TABLE. Прямо или косвенно это будет любой тип объекта в системе. Если нам нужны только «прямые» зависимости, то это зависит от того, что подразумевается под «прямыми». Например, имеет ли триггер, который ссылается на количество представлений, как прямую зависимость таблицы триггеров от представления?

РЕДАКТИРОВАТЬ Насколько я знаю, нет перечислимого списка всех возможных зависимостей между типами. Лучшее, чего вы можете достичь - это проанализировать типы, которые зависят от других типов в данной базе данных, используя что-то вроде:

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 голосов
/ 28 апреля 2010

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

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

Из-за ограничения таблица может зависеть от таблицы.

до тошноты.

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

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

0 голосов
/ 28 апреля 2010

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

sys.sql_dependencies

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...