You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中找出缺失指定扩展属性或属性值的表

SQL Server 查找不符合规范的表(缺失/空值扩展属性)

直接用下面的脚本,就能精准找出两类不符合规范的表:

WITH RequiredProperties AS (
    -- 定义必填的三个扩展属性名称
    SELECT 'Name' AS PropName UNION ALL
    SELECT 'Date' UNION ALL
    SELECT 'Link to Doku'
),
TableProps AS (
    -- 生成所有表与必填属性的组合,确保每个表都要检查这三个属性
    SELECT 
        t.name AS TableName,
        rp.PropName
    FROM sys.tables t
    CROSS JOIN RequiredProperties rp
)
SELECT 
    tp.TableName,
    STRING_AGG(
        CASE 
            WHEN ep.value IS NULL THEN '缺失扩展属性:' + tp.PropName
            WHEN ep.value = '' THEN '扩展属性' + tp.PropName + '的值为空'
        END, ';'
    ) AS Problem
FROM TableProps tp
LEFT JOIN sys.extended_properties ep
    ON ep.major_id = OBJECT_ID(tp.TableName)
    AND ep.minor_id = 0  -- 0指定只检查表级扩展属性(非列级)
    AND ep.name = tp.PropName
WHERE 
    ep.value IS NULL  -- 属性完全缺失
    OR ep.value = ''  -- 属性存在但值为空
GROUP BY tp.TableName
ORDER BY tp.TableName;

关键说明

  • RequiredProperties :把必填属性列出来,后续要调整属性名称直接改这里就行
  • CROSS JOIN:让每个表都对应三个必填属性,避免漏检任何一个要求项
  • minor_id = 0:确保只检查表本身的扩展属性,不会误查列的属性
  • STRING_AGG:把同一个表的多个问题合并到一个字段,结果更直观

示例输出

TableNameProblem
Customers缺失扩展属性:Name
Orders扩展属性Date的值为空
Products缺失扩展属性:Link to Doku;扩展属性Name的值为空

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:40:31