2008-11-11 73 views
5

你生成你的數據字典嗎?如果是這樣,怎麼樣?你生成你的數據字典嗎?

我在SQL Server 2005中使用擴展過程來保存表和字段信息。我有一些查詢可以創建一個字典,但它是...... meh。你有使用特定的查詢或工具嗎?你是否從數據庫圖表中生成它?

谷歌搜索「數據字典SQL服務器」出現了很多查詢,但他們都一樣具有吸引力。也就是說,好的起點,但沒有準備好生產。

+0

您可以使用簡單的sql語句生成數據字典。你可以在這裏找到exapmle http://csharpalley.com/create-sql-server-data-dictionary-using-extended-properties/ – imonweb 2013-07-12 13:37:37

+0

你可以在這裏搜索一個工具:http://tools.dataedo.com。很多數據字典工具的大名單。 – 2016-04-06 05:13:03

回答

4

SchemaSpy是一個非常好的工具,可以反向工程數據庫的描述。這包括:

  • ERD
  • 表,列和約束
  • 着手DB警告anomalied的列表(例如表沒有索引)
1

我從INFORMATION_SCHEMA視圖加上其他應用程序特定的元數據表生成它。

我還使用INFORMATION_SCHEMA.ROUTINES的通配符搜索來跟蹤代碼中的使用模式並識別未使用的列和表。

在這篇文章中我的消息只是一個露面提要:http://www.mssqltips.com/tip.asp?tip=1619

0

我們生成數據庫的應用的developper的側dictionnary。我們有一個很好的過程,使用ADODB連接+ ADOX對象和集合。此過程將瀏覽數據庫中的所有表。下面主要收集數據:

  1. 表名
  2. 的ColumnName
  3. ColumnType
  4. ColumnSize
  5. bool_ColumnIsThePrimaryKey
  6. bool_ColumnHasReferentialIntegrityConstraint

您也可以跟進場的默認值,等。

它是那麼可能例如:

  • 檢查在多少表我場 currency_id(在 Tbl_currency表的主鍵)引用, 如果參照完整性是每個 時間正確實施(我們很 往往創建的字段沒有 實施相應的規則 ...)。
  • 請確保類似 邏輯類型的字段(如「description」 字段)的類型數據類似於 類型/大小。沒有什麼是令人沮喪的 在表中有一個item_Description nvarchar(50)字段,並且在另一個 表中有一個 document_Description ntext

所有通過程序提取的數據被插入在本地表(可以是XML文件或其他),並保存用於進一步使用。

A柱dictionnary /報告可以從該數據通過

SELECT DISTINT columnName FROM Tbl_Column 
0

生成我個人偏好來創建數據字典而數據庫正在設計。當然,這並不總是一個選項...

我認爲答案取決於數據庫的當前狀態?它是否完成並在生產中?你還沒有開始呢? (etc.)

過去,像Cade Roux一樣,我從INFORMATION_SCHEMA中將信息提取到訪問數據庫。目前,我們有開發者偶爾向Access數據庫添加關於不同表,列,存儲過程,函數等的信息。在Access數據庫中,我們創建了報告以輸出一個整潔的「數據字典」打印輸出。

這不是完成創建數據字典的最有效方式,但假定項目已經過去3年沒有任何數據字典的標記,這就是我們不得不做的。

因此最終,對此的回答取決於您的數據庫的狀態。

最好的問候,
弗蘭克

5

我們使用擴展屬性。

要讀取它們,我們使用sys.extended_properties 它使事情變得更容易。

我們還使用紅門SQL文件

0

我們寫我們自己的數據字典工具,用於擴展屬性,但是當我們發現展鵬的工具,我們放棄了他們的工具。爲我們工作很好!我想這有助於我們在擴展屬性中已經有字段和表格描述。不爲公司做廣告,但他們有14天的免費試用期。值得一看。 http://www.red-gate.com/products/SQL_Doc/index.htm

6

最近我有一個任務來記錄一個相當大的數據庫(大約500個對象),我在這裏找到的細節確實有幫助。

下面是我們如何實現這一點的一些反饋 - 希望有人會發現它很有用,即使它很晚。

技術:在所有對象+ third party tool

  • 擴展屬性生成文檔

什麼記載:

  • 所有表和一些列(我們爲所有表格添加了很好的描述s到真正確保它的明確表是關於什麼的)

  • 所有意見 - 爲什麼創建視圖的描述,所包括的表中的數據和這樣的,也當使用

  • 所有存儲程序 - 雖然經歷了這個過程,但我們發現我們有很多重複的存儲過程(開發人員並不打算查看proc是否存在,因此他們創建了新的程序)

  • 所有UDF和其他一些對象所有(我們並不需要記錄觸發器)

我們最終做的是讓我們的DBA拒絕來自devs的所有DDL更新,除非有擴展屬性。

我們還有一個計劃任務,每2周自動重新創建文檔。

相關問題