sys.sql_dependencies (Transact-SQL)
Изменения: 12 декабря 2006 г.
Содержит строку для каждой зависимости от упоминаемой (независимой) сущности как упоминаемой в выражении SQL или инструкциях, определяющих какой-либо другой упоминаемый (зависимый) объект. Представление sys.sql_dependencies предназначено для отслеживания зависимостей между сущностями по имени. Для каждой строки в представлении sys.sql_dependencies ссылаемая сущность отображается в материализованном выражении SQL по имени ссылаемого объекта. Кроме того, если ссылаемый объект имеет привязанное к схеме выражение, зависимость создается принудительно. Дополнительные сведения см. в разделе Основные сведения о SQL зависимостях.
Имя столбца | Тип данных | Описание |
---|---|---|
class |
tinyint |
Идентифицирует класс упоминаемой (независимой) сущности: 0 = объект или столбец (только ссылки, не связанные со схемами); 1 = объект или столбец (ссылки, связанные со схемами); 2 = типы (ссылки, связанные со схемами); 3 = коллекции XML-схем (ссылки, связанные со схемами); 4 = функции секционирования (ссылки, связанные со схемами). |
class_desc |
nvarchar(60) |
Описание класса упоминаемой (независимой) сущности:
|
object_id |
int |
Идентификатор упоминающего (зависимого) объекта. |
column_id |
int |
Если зависимый идентификатор представляет столбец — идентификатор столбца, содержащего ссылку (зависимого столбца); в противном случае — 0. |
referenced_major_id |
int |
Идентификатор упоминаемой (независимой) сущности, интерпретированный по значению класса следующим образом: 0, 1 = Идентификатор объекта или столбца; 2 = Идентификатор типа; 3 = Идентификатор коллекции XML-схем. |
referenced_minor_id |
int |
Вспомогательный идентификатор упоминаемой (независимой) сущности, интерпретированный по значению класса, как показано ниже. Когда поле «class» равно: 0, идентификатор столбца referenced_minor_id; в противном случае — 0. 1, идентификатор столбца referenced_minor_id; в противном случае — 0. В противном случае referenced_minor_id = 0. |
is_selected |
bit |
Объект или столбец выбран. |
is_updated |
bit |
Объект или столбец обновлен. |
is_select_all |
bit |
Объект используется в инструкции SELECT * statement (только на уровне объекта). |
Замечания
Зависимости устанавливаются во время выполнения инструкции CREATE, только если упоминаемая (независимая) сущность существует на момент создания упоминающего (зависимого) объекта. Разрешение имени в адрес выполняется динамически, поэтому во время создания нет необходимости в наличии упоминаемой сущности. В этом случае строка зависимости не создается. Более того, сущности, упоминаемые в динамическом SQL, не устанавливают зависимости.
Если упоминаемая (независимая) сущность удалена с помощью инструкции DROP, то строка зависимости удаляется автоматически. Для повторного создания строки зависимости потребуется повторно создать оба элемента в соответствующем порядке с помощью инструкции CREATE.
Для объектов отслеживаются зависимости как связанные, так и не связанные со схемами. Ограничения CHECK, значения по умолчанию и ссылки на вычисляемые столбцы неявно связаны со схемами. Зависимости от типов, коллекций XML-схем, а также функций секционирования отслеживаются только для зависимостей, связанных со схемами. В SQL Server 2005 с пакетом обновления 1 (SP1) и более ранних версий параметры, определенные в функции Transact-SQL или процедуре , неявно привязаны к схеме. Поэтому параметры, которые зависят от определяемого пользователем типа данных CLR, псевдонима или коллекции XML-схем, можно просматривать с помощью представления каталога sys.sql_dependencies. Однако это означает, что такие объекты нельзя переименовывать. В SQL Server 2005 с пакетом обновления 2 (SP2) параметры, которые зависят от этих объектов, отслеживаются в представлении каталога, только если модуль Transact-SQL создан с привязкой к схеме. Определяемый пользователем тип данных CLR, псевдоним или коллекция XML-схем, которые используются в качестве параметров в модуле, который не привязан к схеме, можно переименовывать, но, возможно, после этого определение модуля нужно будет обновить с помощью хранимой процедуры sp_refreshsqlmodule.
Примеры
А. Поиск зависимостей от указанной функции
В следующем примере возвращаются зависимости от указанной функции. Перед запуском приведенного ниже запроса замените <database_name>
и <schema_name.function_name>
допустимыми именами.
USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO
Б. Поиск проверочных ограничений, зависящих от указанного определяемого пользователем типа данных CLR
Перед выполнением приведенного ниже запроса замените <database_name>
допустимым именем, а <schema
_name.data_type_name>
— допустимым именем определяемого пользователем типа данных CLR с квалификатором схемы.
USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
,OBJECT_NAME(o.parent_object_id) AS table_name
,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
AND class = 2 -- schema-bound references to type
AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO
В. Поиск представлений, функций Transact-SQL, а также хранимых процедур Transact-SQL, зависящих от указанного определяемого пользователем типа данных CLR или псевдонима типа
Следующий запрос возвращает все привязанные к схемам зависимости в представлениях, функциях Transact-SQL и хранимых процедурах Transact-SQL для указанных определяемых пользователем типов данных CLR или псевдонимов типов.
USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
,OBJECT_NAME(o.object_id) AS dependent_object_name
,o.type_desc AS dependent_object_type
,d.class_desc AS kind_of_dependency
,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o
ON d.object_id = o.object_id
AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO
См. также
Справочник
Представления каталога (Transact-SQL)
Представления каталога объектов (Transact-SQL)
sp_rename (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)
Другие ресурсы
Реализация определяемых пользователем типов данных
Основные сведения о SQL зависимостях
Часто задаваемые вопросы о запросах к системному каталогу сервера SQL Server
Управление коллекциями XML-схем на сервере
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
12 декабря 2006 г. |
|