在MS SQL数据库中记录庞大的相互关联的存储过程Web:什么工具或格式?


11

我希望这是一个比“阅读一千页的书”更短的答案的问题,但是,如果那是真实的情况,那就来问我。

我不是真正的DBA,我是一名软件开发人员,他意识到我们需要DBA,但我工作的商店的DBA为零。但是,我们的MS SQL数据库设计(包括几个核心存储过程)非常混乱。存储过程很慢,我们怀疑它们存在错误,但是我们甚至不知道它们应该如何工作,因此我们不知道如何修复它们。

首先,我决定将所有工作方式记录下来,然后开始单元测试,并建立一组单元测试,以帮助证明存储过程确实有效。他们执行的逻辑是我们应用程序的关键部分,您可以说,这是公司主要产品的“皇冠上的宝石”,并且其工作方式完全没有记载。

我正在寻找专业的DBA可能期望存在的特定技术文档,或者如果需要的话,可能会写自己理解一些相互调用的庞大的存储过程。

  1. 记录大型存储过程的通常格式是什么?每个In参数的期望值的描述(即“先决条件”,“后置条件”,即布尔参数,当您打开或关闭它时会发生什么变化,等等?)

  2. 通常如何记录它?仅SQL注释?特定于目的的外部工具?外部“文档”?除了MS SQL Management Studio,我们没有其他SQL工具,但是我们想知道是否有一种工具可以更好地理解,记录和测试我们的环境。也许这是问我问题的更好方法。我需要什么工具来解决我们的困境?

我们的目标是能够:

答:使用我们生成的文档或我们添加到环境中的任何工具来帮助理解这些过程应该如何工作,因此我们可以继续为存储过程创建单元测试范围。

B.向客户端应用程序开发人员展示如何正确调用这些复杂的存储过程。

C.对我们的存储过程进行单元测试。

Answers:


4

关于文档,最重要的是它对您有意义。并没有真正标准的方法。

如果您有很多存储过程相互连接,它们从一个Visio图表开始就相互连接,每个过程都有一个对象,那么它们之间的链接就可以使您跟踪过程之间的情况,这是一个不错的开始。


4

展鹏SQL依赖跟踪工具可能会有所帮助。它可以以图形方式向您显示哪些数据库对象(SP /视图/表)相互依赖。我在处理一些我不熟悉的表时使用了它来确定禁用约束的顺序。

我也只是出于娱乐目的在整个数据库上运行它,这是TMI的方式。如果您可以将其集中在数据库中与疯狂无关的特定区域,则可能会有所帮助。依赖关系树具有使用不同算法在视觉上组织自己的选项,仅此一项就值得进行评估。

追踪。另一个选择是在关键存储过程的开始和结束处写入日志行。每行可以包含日期,“详细级别”,最佳猜测的“上下文”,“子上下文”,过程名称。和行数。这可能是一团糟(想想Windows事件日志),但在某些部分可能有用。如果使用SP实际执行日志插入,则可以轻松打开/关闭它,而不会增加太多负载(ymmv)。

旁注,我曾经在打印机上装入11 x 17的冷纸,发现了一个漂亮的小字体和一些逻辑上的缩进,以将复杂的数据/ SP流程汇总到约5页的伪SQL中。我敢肯定,我最终只提到了几次,没有人敢于接近它,因为它不是标准的,很难信任未集成的东西并且可能会过时。文档过程确实迫使人们熟悉代码!


我对此进行了评估,并评估了许多其他工具。到目前为止,我仍然是手工完成。因此,我接受了反映我所做工作的答案。但这很酷。
沃伦·P

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.