0

我需要获取存储过程中使用的表列表,但是在 Azure Datawarehouse sp_depends 中不受支持。

我想到的另一种选择是从 INFORMATION_SCHEMA.ROUTINES 获取存储过程代码,然后运行脚本以从存储过程定义中获取 [schema].[tablename] 但这里的问题是将整个存储过程存储到一个变量。VARCHAR(MAX) 的存储限制为 8000,如果我的 proc 超过此限制,那么我将无法获得完整的表列表。

4

1 回答 1

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
于 2017-11-16T15:13:47.290 回答