所以,标题总结了它。
我有一个 SQL Server 数据库,其中包含 28 个表和 86 个存储过程,必须进行逆向工程。我很确定有些表从未使用过,并且并非所有的 procs 都被使用。
最大的问题是所有创建用于该数据库的 Windows 服务以及所有软件和数据库文档都丢失了,设计整个系统的人也无处可寻。
我已经设法创建了一个 ER 图来帮助我理解这些关系,但由于我在数据库管理方面没有经验,我不知道应该从哪里开始。
另外,如果不打算在这里问这种问题,我也很抱歉。
所以,标题总结了它。
我有一个 SQL Server 数据库,其中包含 28 个表和 86 个存储过程,必须进行逆向工程。我很确定有些表从未使用过,并且并非所有的 procs 都被使用。
最大的问题是所有创建用于该数据库的 Windows 服务以及所有软件和数据库文档都丢失了,设计整个系统的人也无处可寻。
我已经设法创建了一个 ER 图来帮助我理解这些关系,但由于我在数据库管理方面没有经验,我不知道应该从哪里开始。
另外,如果不打算在这里问这种问题,我也很抱歉。
最好的选择是使用SQL Power Doc记录您的数据库
注意:我已经使用过它,它将为您记录和理解数据库服务器实例提供一个非常好的开始。
三个非常快速的步骤让您开始:
1)
会告诉你最后一次使用每个索引的时间,包括聚集索引。因此,至少让您了解哪些表正在被访问(哪些不是。)
2) 在使用应用程序时打开扩展事件会话(或服务器端探查器跟踪,如果您运行的是 SQL 2012 之前版本)一小时左右。您还可以要求用户以特定顺序在应用程序中执行各种操作,以便将其与跟踪/会话相关联。
一个有用的建议:如果您可以修改应用程序使用的连接字符串,请附加“;Application Name=AppNameGoesHere”,以便您可以对该特定应用程序名称运行跟踪过滤。总之是个好习惯。
3) 获取在非生产服务器上运行的应用程序版本。为应用程序开发一个行为驱动的测试列表(“当用户单击新项目按钮时,它会为该用户创建一个新项目”等)通过重命名开始软删除您认为与测试无关的对象(我使用像 objectName_DEPRECATED_YYYYMMDD 这样的格式——日期是我计划实际删除它的那一天。)重新验证你的所有测试。
通过扩展事件会话、索引使用 DMV 和软删除的组合,您应该能够识别应用程序正在使用的主要对象,并就哪个对象做什么具有良好的普遍共识。
祝你好运!
因为我曾经遇到过类似的情况,我可以告诉你,这将是一项很难甚至不可能的工作。我只有源代码(>100k 行代码)、正在运行的服务、正在运行的数据库(约 50 个表),没有文档,除了这个应用程序的用户以及运行在一个测试环境(前面有几个版本号,但没有源代码)。另一个要求是服务必须 24/7 全天候运行,因为它们在客户之外。之所以出现这种情况,是因为包括开发人员在内的大多数员工几乎同时离开,文档在混乱中消失了。我花了 6 个多月的时间才获得粗略的概述/文档。有许多表和函数没有效果,因为它们是供将来使用或从未完全实现的,有缺陷或已弃用或未发布的功能。6 个月后,我不得不重写文档,因为我发现了新事物或事物之间的关系,而且我之前有错误的假设。
为什么我要讲这个?因为有时在这种情况下,从头开始编写一个新的应用程序来满足旧应用程序的要求(或者如果它们随着时间的推移而改变或者你想要一个新的主要版本)的要求会更容易也更便宜。或者告诉你你会期待什么。
如果您真的想对其进行逆向工程,我建议您执行以下步骤:
祝你好运 ;)
我没有足够的代表发表评论,但想帮助您解决关于
getting the SQL Power Doc to work
.如果您按照他们文档页面上的步骤操作,它将非常容易工作。只是从顶部开始。
https://sqlpowerdoc.codeplex.com/wikipage?title=Guide%20For%20PowerShell%20Beginners