查询数据库对象依赖关系
2011-01-15 13:20
274 查看
USE TestDB1 GO SELECT DISTINCT OBJECT_NAME(object_id) as objname FROM sys.sql_dependencies WHERE referenced_major_id = OBJECT_ID('dbo.tblProjects') ORDER BY objname
虽然使用上面的代码可以从sys.sql_dependencies直接查找SQL对象的引用关系,但是这种方式只能查找单个数据库内的直接引用关系,对于跨库的引用以及通过动态SQL方式产生的引用通过这种方式是没有办法查找到的。但是可以使用文本查找的方式从每个数据的syscomments表遍历查找。
以下代码用来在TestDB1和TestDB2数据库中查找使用到tblProjects表的存储过程:
DECLARE @TXT VARCHAR(100) SELECT @TXT = 'tblProjects' DECLARE @SQL VARCHAR(MAX) SELECT @SQL = ISNULL(@SQL + ' UNION ALL ','') + + ' SELECT OBJ.Name,OBJ.Type,''' + [Name] + ''' AS DBName FROM ' + [Name] + '..sysobjects OBJ WITH (NOLOCK) INNER JOIN ' + [Name] + '..syscomments CMT WITH (NOLOCK) ON OBJ.Id = CMT.Id WHERE (OBJ.Type=''P'' OR OBJ.Type=''V'') AND CMT.Text LIKE ''%' + @TXT + '%''' FROM Master.sys.SysDatabases WITH(NOLOCK) WHERE Name IN ('TestDB1','TestDB2') EXEC(@SQL)
相关文章推荐
- 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存
- 发现数据库对象的依赖关系
- 发现数据库对象的依赖关系
- 13. 查看数据库对象间的依赖关系
- 数据库对象关系查询
- PostgreSQL每日一贴-数据库对象依赖关系
- 获得当前数据库对象依赖关系的实用算法
- 细粒度依赖(一)通过数据字典找到数据库对象之间的引用关系
- 13. 查看数据库对象间的依赖关系
- 查找当前用户的所有数据库对象的依赖关系
- 更新数据库对象依赖关系
- 获得当前数据库中对象的依赖关系的算法
- 查看数据库对象间的依赖关系
- 任务单2 相关问题 三级模式、数据库对象、关系图创建
- “数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法
- [数据库]关系数据库的查询优化
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- Hibernate创建对象-关系映射文件和数据库
- 翻译mos文章 磁盘组的错误依赖关系导致数据库启动失败
- SpringBoot集成MyBatis(主要用来方便的进行自定义一些sql查询,主要的简单的数据库操作还是依赖于自身提供的JPA)