微软SQL 2000+是否可以添加表的描述/注释?

34

在Microsoft SQL 2000及以上版本中,是否可以向表添加类似于"元数据"的描述或注释?

如何通过CREATE TABLE语句实现这一点?

是否可以向字段添加描述或注释?

如何在MSSQL 2000和2005中查询这些信息?

4个回答

35

使用扩展属性。例如,要向dbo架构中的表添加扩展属性,可以使用以下方式:

EXEC sys.sp_addextendedproperty @name=N'<NameOfProp>', 
@value=N'<Value>' , @level0type=N'SCHEMA',@level0name=N'dbo', 
@level1type=N'TABLE',@level1name=N'<Table>'
你可以更新它们:
EXEC sys.sp_updateextendedproperty 
   @name=N'MS_Description', @value=N'My Description' ,
     @level0type=N'SCHEMA',@level0name=N'dbo', 
      @level1type=N'TABLE'
     ,@level1name=N'<YOUR TABLE NAME>'

你可以这样读取它们:

SELECT *
FROM fn_listextendedproperty (NULL, 'schema','dbo', 'table', '<yourtable>', default, default);
或者
SELECT
p.name AS [Name],p.value
FROM
sys.tables AS tbl
INNER JOIN sys.extended_properties AS p ON p.major_id=tbl.object_id AND p.minor_id=0 AND p.class=1
WHERE
(tbl.name=N'<yourtablename>' and SCHEMA_NAME(tbl.schema_id)=N'dbo')
ORDER BY
[Name] ASC

是的,但你最好不要直接查看这些内容,而是使用一个应用程序来阅读和编写注释。你也可以通过Sql Mgmt Studio添加它们。 - JoshBerke
1
你最好在纸质笔记本上写下表的描述,而不是依靠纯粹的记忆来回想那个复杂的查询,每当你对表的目的感到疑惑时。或者只需依赖SSMS的对象资源管理器。 - alejandrob
@alejandrob 我个人完全同意...虽然我不确定UI在SQL 2000中是如何构建的,因为最初的问题是这样问的... - JoshBerke

21

您肯定可以使用上面提到的SP来实现它,但是有一种更简单的方法可以实现它,我相信除非您正在使用脚本自动化操作,否则MGT Studio应该是您进行这些更改的首选。以下是如何操作:

enter image description here

1- 右键单击表格

2- 点击“设计”

3- 如上图所示进行注释

为了让您有一个完整的答案,这里是一个更简单的脚本以进行更改(相对于上面的答案而言更简单):

DECLARE @v sql_variant 
SET @v = N'Comment here'
EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA', N'dbo', N'TABLE', N'Stack_testing', N'COLUMN', N'testinghere'

4

大多数工具和人们使用扩展属性来支持此功能。SSMS使用的常用名称是MS_Description。

有几个内置的存储过程可用于创建这些属性以及读取它们,这些过程随时间而改变,因此在SQL版本之间可能存在兼容性差异。


3

不幸的是,这种方法不适用于高负载的生产环境。操纵扩展属性的存储过程会在目标表上设置独占锁。当它们正在执行时,整个表都无法读取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接