Azure Synapse Analytics视图注释添加方法及最佳实践咨询
Azure Synapse Analytics视图添加注释的最佳实践
在Azure Synapse Analytics中,常规T-SQL里在CREATE VIEW语句前或AS与SELECT之间添加块注释的方式无法保留注释内容,需要采用以下可行方案:
一、块注释保留的变通方案(括号包裹查询)
如果需要在视图定义内直接保留可读的目的说明和变更日志,可以将SELECT语句用括号包裹,把块注释放在括号内。这种方式能确保注释被包含在视图定义中,示例如下:
CREATE VIEW dbo.vw_Some_View AS ( /*** Purpose: 返回2023年1月1日之后创建的内容及创建者名称列表。 Changes: 2023-09-05 OrphanedRecordAnnie 新增Creator_Name字段。 ***/ SELECT Creator_ID , Creator_Name --added 2023-09-05 , Created_Content FROM dbo.Creations WHERE Created_Date >= '2023-01-01' );
这是一种实用的变通方案,能让维护人员直观在视图定义中看到注释信息。
二、标准最佳实践:使用系统扩展属性
这是Synapse官方推荐的元数据注释方式,通过扩展属性将视图的目的、变更日志等信息存储在系统表中,与视图定义分离但可通过系统视图查询,更符合企业级元数据管理规范。
添加扩展属性示例
-- 创建基础视图 CREATE VIEW dbo.vw_Some_View AS SELECT Creator_ID , Creator_Name --added 2023-09-05 , Created_Content FROM dbo.Creations WHERE Created_Date >= '2023-01-01'; -- 为视图添加目的描述属性 EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'返回2023年1月1日之后创建的内容及创建者名称列表。', @level0type = N'SCHEMA', @level0name = dbo, @level1type = N'VIEW', @level1name = vw_Some_View; -- 为视图添加变更日志属性 EXEC sp_addextendedproperty @name = N'ChangeLog', @value = N'2023-09-05 OrphanedRecordAnnie:新增Creator_Name字段。', @level0type = N'SCHEMA', @level0name = dbo, @level1type = N'VIEW', @level1name = vw_Some_View;
查询扩展属性
可以通过以下语句查看视图的扩展属性:
SELECT obj.name AS 视图名称, ep.name AS 属性名称, ep.value AS 属性内容 FROM sys.extended_properties ep JOIN sys.objects obj ON ep.major_id = obj.object_id WHERE obj.name = 'vw_Some_View' AND obj.type = 'V';
三、字段级注释的保留
字段后的行注释(--开头)可以正常保留在视图定义中,比如示例里的Creator_Name --added 2023-09-05,这种方式适合标注单个字段的变更信息。
总结最佳实践
- 优先使用系统扩展属性存储视图的整体目的、变更日志等元数据,便于统一管理和查询。
- 如果需要在视图定义内直接展示注释,采用括号包裹SELECT语句的变通方法保留块注释。
- 字段级注释直接使用行注释
--添加在字段后方即可。
内容的提问来源于stack exchange,提问作者OrphanedRecordAnnie
相关产品推荐
相关产品推荐

