相关疑难解决方法(0)

如何获取存储过程中的表列表

db中有很多表和sp.我找到了特定sp(存储过程)中使用的表名.

sp_depends %sp_name%没有给出欲望的结果.我也用过INFORMATION_SCHEMA.TABLES,INFORMATION_SCHEMA.ROUTINES桌子.

但结果并没有完全满足我的要求.

sql-server

23
推荐指数
6
解决办法
7万
查看次数

获取SQL Server跨数据库依赖项

SQL Server版本 - 2008 R2

我正在评估DMS解决方案,目的是接管维护.原始解决方案有一个中央数据库,其中包含与制造商有关的数据.它还为每个经销商提供了一个数据库,这意味着存在许多跨数据库依赖关系.

问题:

  • 没有DB文档
  • 没有代码评论
  • 很多堆
  • 没有标准对象命名约定
  • 除了其他对象之外,中央DB还有460多个表和900多个SProc
  • 除了其他对象外,每个经销商DB还有370多个表和2350+个SProcs

作为第一步,我建议彻底清理数据库,因此了解对象依赖关系(包括跨数据库依赖关系)至关重要.我尝试使用Red Gate的解决方案,但输出太大了.我想要的只是数据库中没有任何依赖关系的对象列表 - 它们既不依赖于其他对象,也不依赖于它们的任何对象.

这是我用来获取依赖项列表的脚本:

SELECT
DB_NAME() referencing_database_name,
OBJECT_NAME (referencing_id) referencing_entity_name,
ISNULL(referenced_schema_name,'dbo') referenced_schema_name,
referenced_entity_name,
ao.type_desc referenced_entity_type,
ISNULL(referenced_database_name,DB_NAME()) referenced_database_name
FROM sys.sql_expression_dependencies sed
JOIN sys.all_objects ao
ON sed.referenced_entity_name = ao.name 
Run Code Online (Sandbox Code Playgroud)

我将创建一个表 - 依赖项 - 我将从每个数据库中插入此结果集.下一步,我还将创建另一个表 - AllObjects-,它将包含数据库中所有对象的列表.这是执行此操作的脚本:

SELECT
DB_NAME() DBName,
name,
type_desc
FROM sys.all_objects
WHERE type_desc IN
(
'VIEW',
'SQL_TABLE_VALUED_FUNCTION',
'SQL_STORED_PROCEDURE',
'SQL_INLINE_TABLE_VALUED_FUNCTION',
'USER_TABLE',
'SQL_SCALAR_FUNCTION'
)
Run Code Online (Sandbox Code Playgroud)

现在,此表中的名称列表未出现在依赖项表的referenced_entity_name列中,但应该提供我正在查找的对象列表.

SELECT
AO.DBName,
AO.name,
AO.type_desc
FROM AllObjects AO
LEFT OUTER JOIN Dependencies D ON …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

sql-server ×2

sql ×1

sql-server-2008 ×1

t-sql ×1