查找Azure Synapse数据仓库中与存储过程相关的所有表

g52tjvyc  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(144)

除了解析存储过程代码之外,是否有简单的方法可以找出Azure Analytics数据仓库中存储过程中引用的所有表?我尝试了一些命令,如sp_tables、*sp_depends a,但似乎在Azure数据仓库中没有一个命令起作用。

l2osamch

l2osamch1#

sys.sql_expression_dependencies在Azure Synapse Analytics(专用SQL池)中受支持,但目前仅支持表、视图和函数。
SELECT * FROM sys.sql_expression_dependencies;
所以你要么解析sys.sql_modules,这样的解析是不完美的(例如不处理模式名,方括号,部分匹配等),但可以作为一个起点:

SELECT 
    sm.[definition],
    OBJECT_SCHEMA_NAME(t.object_id) schemaName,
    OBJECT_NAME(t.object_id) tableName
FROM sys.sql_modules sm
    CROSS JOIN sys.tables t
WHERE sm.object_id = OBJECT_ID('dbo.usp_test')
  AND sm.[definition] Like '%' + t.name + '%';

我实际上使用SQL Server数据工具(SSDT)和专用的SQL池,这样您的依赖关系就不会不同步,并且可以通过项目进行跟踪。

o7jaxewo

o7jaxewo2#

SELECT OBJECT_NAME(OBJECT_ID),definition 
FROM sys.all_sql_modules 
WHERE definition LIKE '%your_table_name%'

相关问题