我需要获取存储过程中使用的表列表,但是在Azure Datawarehouse中不支持sp_depends。
我想到的另一个选择是从INFORMATION_SCHEMA.ROUTINES获取存储的proc代码,然后运行脚本从存储过程定义中获取[schema]。[tablename]但这里的问题在于存储整个将proc存储到变量中。 VARCHAR(MAX)存储限制为8000,如果我的proc超过此限制,那么我将无法获得完整的表列表。
答案 0 :(得分:0)
尝试使用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