您是否生成数据字典?如果是这样,怎么做?
我使用 SQL Server 2005 中的扩展过程来保存表和字段信息。我有一些查询可以从中创建字典,但它是……嗯。您是否使用了特定的查询或工具?你是从你的数据库图表中生成它的吗?
谷歌搜索“数据字典 sql server”会出现许多查询,但它们都同样具有吸引力。也就是说,良好的起点,但还没有准备好生产。
您是否生成数据字典?如果是这样,怎么做?
我使用 SQL Server 2005 中的扩展过程来保存表和字段信息。我有一些查询可以从中创建字典,但它是……嗯。您是否使用了特定的查询或工具?你是从你的数据库图表中生成它的吗?
谷歌搜索“数据字典 sql server”会出现许多查询,但它们都同样具有吸引力。也就是说,良好的起点,但还没有准备好生产。
最近我的任务是记录一个相当大的数据库(大约 500 个对象),我在这里找到的细节确实很有帮助。
这里有一些关于我们如何实现它的反馈——希望有人会发现它很有用,即使它已经很晚了。
技术:
记录的内容:
所有表格和一些列(我们为所有表格添加了良好的描述,以确保清楚表格的内容)
所有视图 - 说明创建视图的原因、数据中包含哪些表等以及何时使用
所有存储过程——在处理过程中,我们发现我们有很多重复的存储过程(开发人员没有费心去查看 proc 是否存在,所以他们创建了新的)
所有 UDF 和其他一些对象也是如此,但不是全部(我们真的不需要记录触发器)
我们最终做的是让我们的 DBA 拒绝来自开发人员的所有 DDL 更新,除非有扩展属性。
我们还有一个计划任务,每 2 周自动重新创建文档。
SchemaSpy是一个非常好的工具,可以对数据库的描述进行逆向工程。这包括:
我使用这个工具(开源): http: //www.codeplex.com/datadictionary。我创建的所有信息都添加到数据库的扩展属性中。
我从INFORMATION_SCHEMA
视图和其他特定于应用程序的元数据表中生成它。
我还使用通配符搜索INFORMATION_SCHEMA.ROUTINES
来跟踪代码中的使用模式并识别未使用的列和表。
这篇文章刚刚出现在我的一个新闻提要中:http ://www.mssqltips.com/tip.asp?tip=1619
我们在应用程序的开发者端生成数据库的字典。我们有一个使用 ADODB 连接 + ADOX 对象和集合的好程序。此过程将浏览数据库中的所有表。收集到以下主要数据:
您还可以跟进字段默认值等。
然后可以例如:
currency_id
检查我的字段(表的主键
)被引用了多少表
Tbl_currency
,以及每次是否正确实现了引用完整性(我们经常在没有实现相应规则的情况下创建字段......)。description
”字段)具有相似的数据类型/大小。item_Description nvarchar(50)
没有什么比在一个表中有一个字段,而
在另一个表中有一个字段更令人沮丧的了document_Description ntext
!通过该过程提取的所有数据都插入到本地表中(可以是 XML 文件或其他文件)并保存以供进一步使用。
可以从此数据生成列字典/报告
SELECT DISTINT columnName FROM Tbl_Column
我个人更喜欢在设计数据库时创建数据字典。当然,这并不总是一种选择......
我认为答案取决于数据库的当前状态?是否已完成并投入生产?你还没有开始吗?(ETC。)
过去,像 Cade Roux 一样,我将信息从 INFORMATION_SCHEMA 提取到访问数据库中。目前,我们有开发人员偶尔将有关不同表、列、存储过程、函数等的信息添加到 Access 数据库中。在 Access 数据库中,我们创建了报告以输出一个整洁的“数据字典”打印输出。
这不是完成创建数据字典的最有效方法,但鉴于该项目已经过去 3 年没有任何数据字典的迹象,这就是我们必须做的。
所以最终,这个问题的答案取决于你的数据库的状态。
最好的问候,
弗兰克
我们编写了自己的使用扩展属性的数据字典实用程序,但是当我们找到 Redgate 的工具时,我们放弃了它,取而代之的是他们的工具。为我们工作得很好!我想这有助于我们在扩展属性中已经有了字段和表描述。不是为公司做广告,但他们有 14 天的免费试用期。值得一看。 http://www.red-gate.com/products/SQL_Doc/index.htm
我对SQL Data Dictionary很幸运。