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