sql之-存儲過程的血緣分析


 這個是在工作中針對存儲過程做血緣分析的時候使用到的,用的時候還是挺好用的,記錄一下

希望后面遇到類似的即可立即投入使用!

 

1.檢查存儲過程使用哪些表:

 1   select base.name AS 存儲過程
 2           ,‘’    AS 目標表
 3           ,''   AS  目標庫
 4           ,depend.referenced_entity_name as 依賴的存儲過程
 5           ,depend.referenced_database_name as 依賴的數據庫
 6    from sys.sql_expression_dependencies_depend 
 7    inner join sys.objects_base
 8       on depend.referencing_id = base.object_id
 9   where base.name ='' --存儲過程
10    and  depend.referenced_entity_name <>''--需要排除掉的表,例如一些日志表不需要的

 

2.檢查表在哪些存儲過程中使用:

 1 select
 2           DB_NAME() as db_name
 3          ,schema_name(o.schema_id) as schema_name
 4          ,o.name as object_name
 5          ,otype_desc
 6          ,d.referenced_server_name
 7          ,d.referenced_database_name
 8          ,isnull(d.referenced_schema_name,'dbo') as referenced_schema_name
 9          ,d.referenced_entity_name
10    from sys.sql_expression_dependencies d
11    inner join sys.objects o
12       on d.referencing_id = o.objet_id
13    where referenced_entity_name=''--表名
14       and referenced_database_name=''--庫名

總結,此過程在倉庫操作中,對多余的表清理中可以使用此來進行排查,當然,排查的方式也是多種多樣,所以,這里也只是自己曾經用過的一個小方法.

后續有此類繼續增加,共勉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM