6

データ ディクショナリを生成しますか? もしそうなら、どのように?

SQL Server 2005 で拡張プロシージャを使用して、テーブルとフィールドの情報を保持しています。それらから辞書を作成するクエリがいくつかありますが、それは...まあ。使用する特定のクエリまたはツールはありますか? データベース ダイアグラムから生成しますか?

「データ ディクショナリ SQL サーバー」をグーグルで検索すると、多くのクエリが表示されますが、どれも同じくらい魅力的です。つまり、開始点は良好ですが、本番環境には対応していません。

4

9 に答える 9

6

最近、かなり大規模なデータベース (約 500 オブジェクト) を文書化するタスクがあり、ここで見つけた詳細が非常に役に立ちました。

これをどのように実装したかについてのフィードバックを以下に示します。かなり遅れていますが、誰かが役に立つことを願っています。

技術:

文書化されたもの:

  • すべての表と一部の列 (表の内容が明確になるように、すべての表に適切な説明を追加しました)

  • すべてのビュー – ビューが作成された理由、データに含まれるテーブルなど、いつ使用するかについての説明

  • すべてのストアド プロシージャ – プロセスを進めているうちに、多くの重複したストアド プロシージャがあることがわかりました (開発者は proc が存在するかどうかを気にせず、新しいものを作成しました)。

  • すべてではありませんが、すべての UDF とその他のオブジェクト (トリガーを文書化する必要はありませんでした)

私たちが最終的に行ったことは、拡張プロパティがない限り、開発者からのすべての DDL 更新を拒否するよう DBA に依頼することでした。

また、2 週間ごとにドキュメントを自動的に再作成するスケジュールされたタスクもあります。

于 2013-08-09T09:41:49.770 に答える
5

拡張プロパティを使用します。

それらを読むために、sys.extended_propertiesを使用します 。これにより、作業が非常に簡単になります。

Red GateSQLDocも使用しています

于 2008-11-14T20:29:20.340 に答える
4

SchemaSpyは、データベースの記述をリバース エンジニアリングできる非常に優れたツールです。これも:

  • ERD
  • テーブル、列、および制約のリスト
  • DB の異常に関する一連の警告 (例: インデックスのないテーブル)
于 2008-11-13T14:45:43.920 に答える
2

このツール (オープン ソース) を使用します: http://www.codeplex.com/datadictionary。私が作成したすべての情報は、データベースの拡張プロパティに追加されます。

于 2009-12-29T14:14:47.377 に答える
1

INFORMATION_SCHEMAビューと、アプリケーション固有のメタデータの他のテーブルから生成します。

INFORMATION_SCHEMA.ROUTINESコード内の使用パターンを追跡し、未使用の列とテーブルを特定するために、ワイルドカード検索も使用します。

この記事は、私のニュース フィードの 1 つに表示されました: http://www.mssqltips.com/tip.asp?tip=1619

于 2008-11-11T20:46:15.667 に答える
0

拡張プロパティを使用する独自のデータディクショナリユーティリティを作成しましたが、Redgateのツールを見つけたとき、そのツールのためにそれを放棄しました。私たちのためにうまくいきました!拡張プロパティにフィールドとテーブルの説明がすでにあることが役に立ったと思います。会社の宣伝はしませんが、14日間の無料トライアルがあります。一見の価値があります。 http://www.red-gate.com/products/SQL_Doc/index.htm

于 2008-11-17T19:47:32.203 に答える
0

私はSQL Data Dictionaryで幸運に恵まれました。

于 2014-05-01T06:26:57.663 に答える
0

アプリケーションの開発者側でデータベースの辞書を生成します。ADODB 接続 + ADOX オブジェクトとコレクションを使用した優れた手順があります。この手順では、データベース内のすべてのテーブルを参照します。以下の主なデータが収集されます。

  1. テーブル名
  2. 列名
  3. 列の種類
  4. 列サイズ
  5. bool_ColumnIsThePrimaryKey
  6. bool_ColumnHasReferentialIntegrityConstraint

フィールドのデフォルト値などをフォローアップすることもできます。

次に、たとえば次のことが可能です。

  • 私のフィールド currency_id(テーブルの主キー Tbl_currency)が参照されているテーブルの数を確認し、参照整合性が毎回適切に実装されているかどうかを確認します(対応するルールを実装せずにフィールドを作成することがよくあります...)。
  • 同様の論理型 (" description" フィールドなど) のフィールドが、同様のデータ型/サイズであることを確認してください。item_Description nvarchar(50)テーブルにフィールドがあり、 document_Description ntext別のテーブルにがあることほどイライラすることはありません。

手順によって抽出されたすべてのデータは、ローカル テーブル (XML ファイルなど) に挿入され、後で使用するために保存されます。

列辞書/レポートは、このデータから次の方法で生成できます。

SELECT DISTINT columnName FROM Tbl_Column
于 2008-11-12T12:35:16.950 に答える
0

個人的には、データベースの設計中にデータ ディクショナリを作成することを好みます。もちろん、これは常にオプションではありません...

答えはデータベースの現在の状態に依存すると思いますか? それは完了し、生産中ですか?まだ始めていませんか?(等。)

以前、Cade Roux のように、INFORMATION_SCHEMA からアクセス データベースに情報を取得しました。現在、さまざまなテーブル、列、ストアド プロシージャ、関数などに関する情報を Access データベースに追加する開発者が時折います。Access データベース内で、見栄えの良い "データ ディクショナリ" を出力するレポートを作成しました。

これは、データ ディクショナリを作成する最も効率的な方法ではありませんが、プロジェクトがデータ ディクショナリの兆候なしで 3 年間経過したことを考えると、これが私たちがしなければならなかったことです。

したがって、最終的には、これに対する答えはデータベースの状態によって異なります。

よろしく、
フランク

于 2008-11-12T18:35:37.847 に答える