SQL Server:逆向工程视图和存储过程

时间:2017-02-10 16:12:34

标签: sql-server tsql reverse-engineering

我需要你的帮助。

例如,我有一个SQL Server视图MyView

Adb.vs.MyView

列:

ID
Name
Address
Email
Phone

观点背后的逻辑是

SELECT
    Ac.AccountID AS ID,
    Ac.AccountName AS Name,
    Ad.Main_Adress AS Address,
    Em.Main_Email AS Email,
    Concat(Ph.Phone_Area_Code,Ph.Mobile_Phone_Number) AS Phone  
FROM
    Bdb.dbo.Account AS Ac
INNER JOIN
    Cdb.dbo.Address AS Ad ON Ac.AccountID = Ad.AccountID
INNER JOIN
    Cdb.dbo.Emails AS Em ON Ac.AccountID = Em.AccountID
INNER JOIN
    Cdb.dbo.PhoneBook AS Ph ON Ac.AccountID = Ph.AccountID

注意:

所有这些表之间没有构建KEY关系。

我的目标是对此视图进行反向工程以获得下一种结果:

Desired Output

请建议使用任何类型的工具/工具脚本来执行此操作。

此外,如果有人知道类似的解决方案,但Rev.En.用于将数据填充到表中的存储过程我将非常感激

BEC。我将需要在不久的将来扭转大量的此类观点和存储过程。

提前感谢您的任何支持!

2 个答案:

答案 0 :(得分:2)

查看系统视图。您想要的大部分内容可能在INFORMATION_SCHEMA.VIEW_COLUMN_USAGE中提供。例如:

USE Adb
GO

Select * from INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
where VIEW_NAME='MyView'
GO

答案 1 :(得分:1)

视图只是SQL Server脚本,SQL Server作为子选择添加到您的查询中。因此,使用的字段实际上并未以与表定义相同的方式保存在SQL Server中。最好的办法是使用SQL Server Management Studio编写所有视图的脚本,然后将文件插入General SQL Parser等工具中,该工具可以输出该脚本中使用的列和表。

这并不完美,但应该让你在实现目标的过程中走得更远。您可以免费试用here.