Альтернатива sp_depends в хранилище данных Azure
Мне нужно получить список таблиц, используемых в хранимой процедуре, однако в Azure Datawarehouse sp_depends не поддерживается.
Другая альтернатива, о которой я думал, это получить хранимый код процедуры из INFORMATION_SCHEMA.ROUTINES, а затем запустить скрипт, чтобы получить [schema].[Tablename] из определения хранимой процедуры, но здесь проблема заключается в сохранении всего хранимого процесса в Переменная. VARCHAR(MAX) имеет ограничение в 8000 для хранения, и если моя процедура превысит этот предел, я не смогу получить полный список таблиц.
1 ответ
Попробуйте использовать sys.sql_expression_dependencies. Следующий запрос может помочь вам:
SELECT ReferencingObjectType = o1.type,
ReferencingObject = SCHEMA_NAME(o1.schema_id)+'.'+o1.name,
ReferencedObject = SCHEMA_NAME(o2.schema_id)+'.'+ed.referenced_entity_name,
ReferencedObjectType = o2.type
FROM sys.sql_expression_dependencies ed
INNER JOIN sys.objects o1
ON ed.referencing_id = o1.object_id
INNER JOIN sys.objects o2
ON ed.referenced_id = o2.object_id
WHERE o1.type in ('P','TR','V', 'TF')
ORDER BY ReferencingObjectType, ReferencingObject