记录MS SQL Server数据库

目录

介绍

如何使用文档工具记录SQL Server数据库

使用dbForge Documenter为SQL Server记录数据库

结论


介绍

所有公司都积累了各种数据,这些数据不可避免地最终存储在数据库中。如今,几乎所有你能想到的应用程序都将包含一个数据库。这就是数据库对象描述中存在相当高的需求的原因。

可以通过两种主要方式来处理此过程——您可以使用对象的扩展属性或各种第三方实用程序。

在本文中,我们将使用扩展属性和第三方实用程序查看SQL Server数据库文档的一些示例。

如何使用文档工具记录SQL Server数据库

您可以使用sp_addextendedproperty系统存储过程添加扩展属性。它的文档位于此处

以下是如何使用此存储过程的一些示例:

1dbo.GetPlansObject函数的@ObjectID参数添加了一个描述:

EXECUTE sp_addextendedproperty @name = N'MS_Description',

@value = N'Object identifier',
@level0type = N'SCHEMA',
@level0name = N'dbo',
@level1type = N'FUNCTION',
@level1name = N'GetPlansObject',
@level2type = N'PARAMETER',
@level2name = N'@ObjectID';

同样,您可以添加存储过程参数的说明。

2dbo.GetPlansObject函数添加了一个描述:

EXEC sys.sp_addextendedproperty @name=N'MS_Description',

@value=N'Returns all plans for the specified object',
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'FUNCTION',
@level1name=N'GetPlansObject';

您可以以类似的方式为存储过程和触发器添加描述。

3添加inf.vColumnTableDescription视图的描述:

EXEC sys.sp_addextendedproperty @name=N'MS_Description',

@value=N'Description of table columns',
@level0type=N'SCHEMA',
@level0name=N'inf',
@level1type=N'VIEW',
@level1name=N'vColumnTableDescription';

您还可以添加表的说明。

4添加dbo.TABLE 表的TEST_GUID列的描述:

EXEC sys.sp_addextendedproperty @name=N'MS_Description',

@value=N'Record ID (global)',
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=N'TEST',
@level2type=N'COLUMN',
@level2name=N'TEST_GUID';

还可以添加表列的描述。

5添加rep架构的描述:

EXEC sys.sp_addextendedproperty @name=N'MS_Description',

@value=N'The rep schema objects contain information for reports' ,
@level0type=N'SCHEMA',
@level0name=N'rep';

6添加数据库描述

EXEC sys.sp_addextendedproperty @name=N'MS_Description',

@value=N'Administration Database
Version for MS SQL Server 2016-2017 (MS SQL Server 2012-2014 is also fully or partially supported).
Support for all versions up to MS SQL Server 2012 may not be at a sufficient level for use in a production environment';

7添加数据库索引的描述:

EXEC sys.sp_addextendedproperty @name=N'MS_Description',
								@value=N'cluster index' ,
								@level0type=N'SCHEMA',
								@level0name=N'srv',
								@level1type=N'TABLE',
								@level1name=N'Recipient',
								@level2type=N'INDEX',
	 @level2name=N'indInsertUTCDate';

同样,您可以添加视图索引的描述。

要更改或删除描述,您只需要分别使用sp_updateextendedpropertysp_dropextendedproperty存储过程。您可以在文档中阅读有关这些存储过程的更多信息:

  • sp_updateextendedproperty
  • sp_dropextendedproperty

现在,我们将分析您获取对象描述信息的方式:

1获取有关数据库对象描述的信息,可以使用以下查询:

select

SCHEMA_NAME(obj.[schema_id]) as SchemaName
,QUOTENAME(object_schema_name(obj.[object_id]))+'.'+quotename(obj.[name]) as ObjectName
,obj.[type] as [Type]
,obj.[type_desc] as [TypeDesc]
,ep.[value] as ObjectDescription
from sys.objects as obj
left outer join sys.extended_properties as ep on obj.[object_id]=ep.[major_id]
											 and ep.[minor_id]=0
											 and ep.[name]='MS_Description'
where obj.[is_ms_shipped]=0
and obj.[parent_object_id]=0

此处使用以下系统视图:

1.1sys.objects ——数据库对象。你可以在这里了解更多相关信息

1.2sys.extended_properties——当前数据库中的扩展属性。更多细节在这里

此查询产生以下列:

1.1SchemaName ——对象架构

1.2ObjectName——对象的名称

1.3Type——对象类型

1.4TypeDesc——对象类型的描述

1.5ObjectDescription——自定义对象描述

2要获得具有父项的对象的描述,可以使用以下查询:

select

SCHEMA_NAME(obj.[schema_id]) as SchemaName
,QUOTENAME(object_schema_name(obj.[parent_object_id]))+'.'+quotename(object_name(obj.[parent_object_id])) as ParentObjectName
,QUOTENAME(object_schema_name(obj.[object_id]))+'.'+quotename(obj.[name]) as ObjectName
,obj.[type] as [Type]
,obj.[type_desc] as [TypeDesc]
,ep.[value] as ObjectDescription
from sys.all_objects as obj
left outer join sys.extended_properties as ep on obj.[parent_object_id]=ep.[major_id]
											 and ep.[minor_id]=obj.[object_id]
											 and ep.[name]='MS_Description'
where obj.[is_ms_shipped]=0
and obj.[parent_object_id]<>0

此处显示与上一个查询类似的列,但添加了一个新列。ParentObjectName是对象的父级(例如,表是列的父级)。

此查询还使用sys.all_objects显示所有数据库对象的系统视图。您可以在此处详细了解此视图。

3您可以通过执行以下查询来获取参数描述:

select

SCHEMA_NAME(obj.[schema_id]) as SchemaName
,QUOTENAME(object_schema_name(obj.[object_id]))+'.'+quotename(object_name(obj.[object_id])) as ParentObjectName
,p.[name] as ParameterName
,obj.[type] as [Type]
,obj.[type_desc] as [TypeDesc]
,ep.[value] as ParameterDescription
from sys.parameters as p
inner join sys.objects as obj on p.[object_id]=obj.[object_id]
left outer join sys.extended_properties as ep on obj.[object_id]=ep.[major_id]
											 and ep.[minor_id]=p.[parameter_id]
											 and ep.[name]='MS_Description'
where obj.[is_ms_shipped]=0

这里,显示的字段类似于上一个查询中的字段。但是,有许多变化和补充:

3.1TypeTypeDesc——与父对象(存储过程或函数)相关

3.2ParameterName——参数的名称

此查询还使用sys.parameters显示数据库对象参数的系统视图。有关更详细的说明,请随时参阅视图的文档

4可以使用以下查询获得表列的描述:

select

SCHEMA_NAME(t.schema_id) as SchemaName
,QUOTENAME(object_schema_name(t.[object_id]))+'.'+quotename(t.[name]) as TableName
,c.[name] as ColumnName
,ep.[value] as ColumnDescription
from sys.tables as t
inner join sys.columns as c on c.[object_id]=t.[object_id]
left outer join sys.extended_properties as ep on t.[object_id]=ep.[major_id]
											 and ep.[minor_id]=c.[column_id]
											 and ep.[name]='MS_Description'
where t.[is_ms_shipped]=0;

此处显示以下列:

4.1SchemaName——表架构的名称

4.2TableName——表的名称

4.3ColumnName——表列的名称

4.4ColumnDescription——表列的描述

该查询还使用以下系统视图:

4.1sys.tables——表。更多细节在这里

4.2sys.columns——列。在此处查找更多信息

5可以通过以下查询检索视图列的描述:

select

SCHEMA_NAME(t.schema_id) as SchemaName
,QUOTENAME(object_schema_name(t.[object_id]))+'.'+quotename(t.[name]) as ViewName
,c.[name] as ColumnName
,ep.[value] as ColumnDescription
from sys.views as t
inner join sys.columns as c on c.[object_id]=t.[object_id]
left outer join sys.extended_properties as ep on t.[object_id]=ep.[major_id]
											 and ep.[minor_id]=c.[column_id]
											 and ep.[name]='MS_Description'
where t.[is_ms_shipped]=0;

此处显示以下列:

5.1SchemaName——表示架构的名称

5.2ViewName——视图的名称

5.3ColumnName——视图列的名称

5.4ColumnDescription——视图列的描述

该请求还使用sys.views系统视图,该视图显示所有数据库视图。你可以在这里找到更多信息

6您可以使用以下查询获取数据库架构描述:

select

SCHEMA_NAME(t.schema_id) as SchemaName
,ep.[value] as SchemaDescription
from sys.schemas as t
left outer join sys.extended_properties as ep on t.[schema_id]=ep.[major_id]
											 and ep.[minor_id]=0
											 and ep.[name]='MS_Description'

有两列,SchemaNameSchemaDescription,分别显示架构的名称和描述。

该查询还使用sys.schemas系统视图,该视图显示所有数据库架构。更多细节

7您可以使用以下查询获取整个数据库中索引的所有扩展属性:

SELECT SCHEMA_NAME(obj.[schema_id]) as [SchemaName],
	   obj.[name] as [ObjectName],
	   ind.[name] as [IndexName],
	   EP.[name]  as [ExtendedPropertyName],
	   EP.[value] as [ExtendedPropertyValue]
FROM sys.extended_properties AS EP
inner join sys.objects as obj on EP.[major_id]=obj.[object_id]
inner join sys.indexes as ind on EP.[minor_id]=ind.[index_id]
WHERE EP.class = 7

此处显示以下列:

7.1SchemaName——对象架构的名称

7.2ObjectName——对象的名称

7.3IndexName——索引的名称

7.4ExtendedPropertyName——扩展属性的名称

7.5ExtendedPropertyValue——扩展属性的值

该查询还使用sys.indexes系统视图,该视图显示数据库中的所有索引。你可以在这里找到更多细节。

接下来,我们将介绍如何使用Devart的专用实用程序以另一种方式处理数据库文档。

使用dbForge DocumenterSQL Server记录数据库

dbForge Studio for SQL Server,您可以创建数据库文档项目。此功能也在dbForge Documenter for SQL Server中实现

在此示例中,我们将使用为MS SQL Server DBMS维护而设计的SRV数据库。它可以出于任何目的自由分发,因此您可以在此处下载其源文件:https//github.com/jobgemws/Projects-MS-SQL-Server-DBA/tree/master/SRV

要在打开Studio后创建数据库文档项目,请单击工具菜单中的新建文档...”

记录MS SQL Server数据库_第1张图片

1为数据库创建新文档

接下来,选择您需要为其创建数据库文档的所需服务器。

在此之后,将出现以下文档主页。它可以以各种方式安排,包括以下内容:

记录MS SQL Server数据库_第2张图片

2自定义主页

您可以在不在文档中生成主页的情况下开始。要执行此操作,只需取消选中窗口左上角的框即可。

请记住,只会生成带有启用复选框的元素。

接下来,您需要在所有选定服务器和每个特定服务器的范围内配置生成:

记录MS SQL Server数据库_第3张图片

3为所有选定的服务器设置文档生成

例如,让我们通过将所有选项切换为OFF来禁用此页面上的所有设置:

记录MS SQL Server数据库_第4张图片

4设置所选服务器的文档生成

接下来,选择用户数据库页面。另外,为了示例,让我们关闭用户数据库选项:

记录MS SQL Server数据库_第5张图片

5设置用户数据库页面

接下来,选择SRV数据库:

记录MS SQL Server数据库_第6张图片

6设置SRV数据库页面

在这里,我们将输入数据库的描述并单击保存

用户保存的描述中的所有更改也将保存在相应对象的高级属性中。

之后,我们将关闭属性选项数据库文件

记录MS SQL Server数据库_第7张图片

7禁用SRV数据库选项

其余设置应保持启用状态:

记录MS SQL Server数据库_第8张图片

8查看启用的SRV数据库选项

现在让我们打开SRV数据库并选择“Tables”页面:

记录MS SQL Server数据库_第9张图片

9查看和编辑SRV表描述

此页面列出了表格及其说明。

编辑说明时,应显示两个按钮:

1)保存——保存更改

2)取消——取消更改

让我们点击它来选择dbo.AuditQuery表:

记录MS SQL Server数据库_第10张图片

10查看和编辑dbo.AuditQuery表的列描述

此页面列出了表的列及其说明。

此外,您还可以看到此页面上显示的表索引。

编辑说明时,应显示两个按钮:

1)保存——保存更改

2)取消——取消更改

此外,该页面还包含表定义代码,表描述,表属性等。

如果有必要,您可以关闭任何个别选项。

Views文件夹中的视图页面以及其他数据库对象的页面看起来相同:

记录MS SQL Server数据库_第11张图片

11数据库对象类型

通过这种方式,您可以记录以下数据库对象:1)表及其列和索引; 2)视图及其列和索引; 3)存储过程及其参数; 4)函数及其参数,包括表值函数和标量值函数; 5DDL触发器; 6)用户; 7)角色; 8)架构和其他。

设置文档后,您可以通过单击«保存»并选择适当的路径和文件来保存项目:

记录MS SQL Server数据库_第12张图片

12保存文档项目

生成数据库文档

现在,让我们仔细看看文档项目的顶部面板:

记录MS SQL Server数据库_第13张图片

13查看文档项目菜单

这里有三个按钮:

1)添加连接 ...——允许您为文档添加新服务器

2)刷新——开始更新所选文档服务器上的信息的过程

3)生成 ...——打开文档生成设置窗口。

单击生成 ...”按钮。文档生成窗口本身将被打开:

记录MS SQL Server数据库_第14张图片

14设置文档生成

在这里,您可以选择许多不同的选项,但以下是必要的:

1格式(通常默认选择HTML

2将生成文档的文件夹

此外,通过单击左下角的保存命令行...”,可以将所选设置生成为.bat文件。

接下来,您需要单击生成按钮以开始生成文档本身的过程。成功完成此操作后,将显示以下窗口:

记录MS SQL Server数据库_第15张图片

15成功完成文档生成

之后,转到所选文档目录并打开mail.html文件以打开生成的SRV数据库Web文档。

同样,可以在一个文档中收集多个数据库,即使它们位于不同的服务器上也是如此。

结论

我们研究了如何通过高级属性和dbForge Documenter for SQL Server的帮助创建和查看对象描述。描述构成了大量的数据库文档。此外,从本文所示的示例中,我们可以看到dbForge Documenter for SQL Server工具允许您快速创建和编辑特定对象和整个文档的描述。这可以针对单个或多个数据库完成——无论它们位于一个服务器上还是位于多个不同的服务器上。

 

原文地址:https://www.codeproject.com/Articles/5161784/Documenting-MS-SQL-Server-Databases

你可能感兴趣的:(数据库)