這個是在工作中針對存儲過程做血緣分析的時候使用到的,用的時候還是挺好用的,記錄一下
希望后面遇到類似的即可立即投入使用!
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=''--庫名
總結,此過程在倉庫操作中,對多余的表清理中可以使用此來進行排查,當然,排查的方式也是多種多樣,所以,這里也只是自己曾經用過的一個小方法.
后續有此類繼續增加,共勉