我有一个非常庞大、复杂且未记录的数据库。我的任务是提供一个文档,该文档将显示哪些表和列已用于所有存储过程、函数等。
根据我的研究,大多数查询将具有与此类似的格式:
SELECT u.FirstName , u.LastName, a.AccountNumber
FROM Username u
LEFT JOIN Account a
ON a.UserID = u.UserID
~90% 的表和列将具有别名。
此外,我确实有一个包含 2 列的表 - 函数/sproc 名称及其 SQL 代码。
我正在寻找一种方法(最好是SQL,但可以是C#(,它将为上述SQL代码输出以下结果:
- 用户名 - 名字
- 用户名 - 姓氏
- 用户名 - 用户标识
- 帐户 - 用户 ID
- 帐户 - 帐户编号
实现这一目标的最佳方法是什么?我尝试将每个 SQL 代码单元格与 INFORMATION_SCHEMA 联接。列,但我得到的结果不准确,比如当列名出现在列表中时,但实际上并未用于 SQL 代码单元格中的该特定表。
谢谢
可能您想查看您正在查看的存储过程/函数的依赖项?
看看 https://www.mssqltips.com/sqlservertip/1768/identifying-object-dependencies-in-sql-server/
例如,如果过程名称是 dbo.myproc,如下所示
SELECT '* ' + referenced_entity_name + ' - ' + referenced_minor_name
FROM sys.dm_sql_referenced_entities ('dbo.myproc', 'OBJECT')
WHERE referenced_minor_name is not null;