MS SQLデータベースで相互に関連するストアドプロシージャの巨大なWebを文書化する:どのツールまたは形式ですか?


11

これは「1000ページの本を読む」よりも短い答えの質問であるといいのですが、それが本当の状況なら、私をそれに当てはめてください。

私は本物のDBAではありません。私はDBAが必要だと気づいているソフトウェア開発者ですが、私が働いている店にはDBAがいません。ただし、いくつかのコアストアドプロシージャを含むMS SQLデータベースの設計は、大きな混乱です。ストアドプロシージャは遅く、バグがあると思われますが、どのように機能することが予想されるのかさえわからないため、修正方法もわかりません。

最初に、すべての機能がどのように機能するかを文書化し、ユニットテストを開始して、ストアドプロシージャが実際に機能することを証明する一連のユニットテストを構築することにしました。彼らが実行するロジックは、私たちのアプリケーションの重要な部分です。つまり、それは当社の主要製品の「宝石」であり、その動作方法は完全に文書化されていません。

私は、プロのDBAが相互に呼び出すストアドプロシージャの巨大なWebを理解するために、既存の、または必要に応じて自分で作成することを期待している可能性がある特定の技術ドキュメントを探しています。

  1. 大きなストアドプロシージャを文書化するための通常の形式は何ですか?各Inパラメータの期待値の説明(つまり、「前提条件」、「事後条件」、つまりブールパラメータの場合、オンまたはオフにすると何が変わるかなど)

  2. 通常、それをどのように文書化しますか?SQLコメントのみ?目的に固有の外部ツールですか?外部の「ドキュメント」?MS SQL Management Studio以外にSQLツールはありませんが、環境の理解、文書化、およびテストを改善するツールがあるかどうか疑問に思っています。多分それが私の質問をするより良い方法です。混乱を解決するには、どのツールが必要ですか?

私たちの目標は、次のことができるようにすることです。

A.生成されたドキュメント、または環境に追加したツールを使用して、プロシージャがどのように機能するかを理解し、ストアドプロシージャの単体テストカバレッジを作成できるようにします。

B.これらの複雑なストアドプロシージャをそれぞれ適切に呼び出す方法をクライアントアプリ開発者に示す。

C.ストアドプロシージャの単体テスト。

回答:


4

ドキュメンテーションについて最も重要なことは、それがあなたにとって意味があるということです。これを行うための本当に標準的な方法はありません。

プロシージャごとに1つのオブジェクトを含むVisioダイアグラムから始めて、相互に接続する多くのストアドプロシージャがある場合は、プロシージャ間のリンクを追跡できるように、プロシージャ間のプロシージャを追跡できるようにそれらをリンクします。


4

レッドゲートSQL依存関係トラッカーツールが役に立つかもしれません。どのデータベースオブジェクト(SP、ビュー、テーブル)が相互に依存しているかをグラフィカルに表示できます。使い慣れていないテーブルを操作しているときに、制約を無効にする順序を決定するために使用しました。

また、面白くするためにデータベース全体で実行しましたが、これはTMIのようでした。クレイジーな相互依存ではないDBの特定の領域に焦点を当てることができる場合は、役立つ場合があります。依存関係ツリーには、さまざまなアルゴリズムを使用してそれ自体を視覚的に整理するオプションがあり、それだけでevalの価値があります。

トレース。別のオプションは、重要なストアドプロシージャの最初と最後にログ行を書き込むことです。各行には、日付、「詳細レベル」、最適な「コンテキスト」、「サブコンテキスト」、プロシージャ名を含めることができます。と行数。おそらく混乱するでしょう(Windowsのイベントログを考えてください)が、一部のセクションではおそらく役立つでしょう。SPを使用して実際にログの挿入を行うと、追加の負荷(ymmv)なしで簡単にオン/オフを切り替えることができます。

補足として、クールな11 x 17の用紙をプリンタに取り付けたところ、データ/ SPの複雑なフローをいくつかの疑似SQLの約5ページにまとめるために、素敵な小さなフォントといくつかの論理的なインデントが見つかりました。私はそれを数回参照しただけで、標準ではなく、統合されていないものを信頼するのは難しく、時代遅れになる可能性があるため、他の誰もそれに近づきませんでした。文書化プロセスは、コードに慣れることを余儀なくさせました!


私はこれと他のたくさんのツールを評価しました。これまでのところ、私はまだ手作業でやっています。したがって、私は自分のしたことを反映する答えを受け入れました。しかし、これはクールです。
Warren P

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.