这个是在工作中针对存储过程做血缘分析的时候使用到的,用的时候还是挺好用的,记录一下
希望后面遇到类似的即可立即投入使用!
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=''--库名
总结,此过程在仓库操作中,对多余的表清理中可以使用此来进行排查,当然,排查的方式也是多种多样,所以,这里也只是自己曾经用过的一个小方法.
后续有此类继续增加,共勉