zoukankan      html  css  js  c++  java
  • 查询数据库对象依赖关系

    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)
  • 相关阅读:
    python 17 函数基础(一)
    python 17 异常
    python 16 文件操作(二)
    python 15 文件操作(一)
    python 13 字符编码
    《转》python 12 列表解析
    《转》python 11 表达式和语句
    关于int型数据的SQL模糊查询猜想
    PB学习笔记
    JSONObject.fromObject()
  • 原文地址:https://www.cnblogs.com/zanxiaofeng/p/1936230.html
Copyright © 2011-2022 走看看