博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录MS SQL Server数据库
阅读量:3527 次
发布时间:2019-05-20

本文共 8267 字,大约阅读时间需要 27 分钟。

目录


介绍

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

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

在本文中,我们将使用和查看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 DatabaseVersion 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存储过程。您可以在文档中阅读有关这些存储过程的更多信息:

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

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

selectSCHEMA_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 ObjectDescriptionfrom sys.objects as objleft 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]=0and obj.[parent_object_id]=0

此处使用以下系统视图:

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

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

此查询产生以下列:

1.1SchemaName ——对象架构

1.2ObjectName——对象的名称

1.3Type——对象类型

1.4TypeDesc——对象类型的描述

1.5ObjectDescription——自定义对象描述

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

selectSCHEMA_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 ObjectDescriptionfrom sys.all_objects as objleft 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]=0and obj.[parent_object_id]<>0

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

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

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

selectSCHEMA_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 ParameterDescriptionfrom sys.parameters as pinner 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可以使用以下查询获得表列的描述:

selectSCHEMA_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 ColumnDescriptionfrom sys.tables as tinner 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可以通过以下查询检索视图列的描述:

selectSCHEMA_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 ColumnDescriptionfrom sys.views as tinner 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您可以使用以下查询获取数据库架构描述:

selectSCHEMA_NAME(t.schema_id) as SchemaName,ep.[value] as SchemaDescriptionfrom sys.schemas as tleft 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 EPinner 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记录数据库

,您可以创建数据库文档项目。此功能也在

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

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

1为数据库创建新文档

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

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

2自定义主页

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

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

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

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

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

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

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

5设置用户数据库页面

接下来,选择SRV数据库:

6设置SRV数据库页面

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

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

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

7禁用SRV数据库选项

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

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

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

9查看和编辑SRV表描述

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

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

1)保存——保存更改

2)取消——取消更改

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

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

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

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

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

1)保存——保存更改

2)取消——取消更改

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

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

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

11数据库对象类型

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

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

12保存文档项目

生成数据库文档

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

13查看文档项目菜单

这里有三个按钮:

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

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

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

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

14设置文档生成

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

1格式(通常默认选择HTML

2将生成文档的文件夹

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

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

15成功完成文档生成

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

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

结论

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

 

原文地址:

转载地址:http://gtzhj.baihongyu.com/

你可能感兴趣的文章
vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解决方法
查看>>
vue跳转页面的两种方式
查看>>
存储器题目解析(持续更新中....)
查看>>
存储器知识要点
查看>>
Cache模拟器的实现
查看>>
实验2:MIPS指令系统和MIPS体系结构
查看>>
设计模式七大原则
查看>>
手写 | spring事务
查看>>
AndroidStudio Gradle手动下载
查看>>
SpringBoot入门(二)场景启动器
查看>>
SpringBoot入门--自动配置
查看>>
springboot读取配置文件 例:读取配置文件的优先顺序;在主配置文件中激活其他配置文件;加载非主配置文件
查看>>
自动配置原理
查看>>
TCP协议
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
redis 持久化详解,RDB和AOF是什么?他们优缺点是什么?运行流程是什么?
查看>>
spring注解版(一)
查看>>
SpringBoot中访问控制层(controller)得不到Json数据
查看>>
react项目报出警告Warning: Cannot update during an existing state transition (such as within `render`).
查看>>
BFC(Block Formatting Context)
查看>>