Подтвердить что ты не робот

Определить, какие объекты ссылаются на таблицу в SQL Server

Я работаю с SQL Server 2008, и у меня есть база данных, которая содержит более 1500 столбцов и около 500 хранимых процедур и....

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

Как я могу получить все элементы в базе данных, которые имеют отношение к этой таблице?

Спасибо.

4b9b3361

Ответ 1

Если вам нужно найти объекты базы данных (например, таблицы, столбцы, триггеры) по имени - посмотрите на инструмент БЕСПЛАТНО Red-Gate, называемый SQL Search, который делает это - он ищет всю вашу базу данных для любых строк (строк).

enter image description here

enter image description here

Это отличный инструмент для любого разработчика базы данных или базы данных - я уже упоминал об этом абсолютно БЕСПЛАТНО для использования любого вида использования

Ответ 2

Использование sys.dm_sql_referencing_entities:

SELECT 
    referencing_schema_name, referencing_entity_name, referencing_id, 
    referencing_class_desc, is_caller_dependent
FROM 
    sys.dm_sql_referencing_entities ('mySchemaName.myTableName', 'OBJECT');
GO

где 'mySchemaName.myTableName' - ваша таблица schema.table, например 'dbo.MyTable'

Ответ 3

Это другое решение, которое я нашел. Вам не нужно устанавливать какие-либо инструменты. Просто запустите анализатор запросов.

Use [Database]
Go

SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'SP_Pay_GetData'
order by referencing_object_name