列表和表扩展属性

时间:2014-02-11 03:59:43

标签: sql join database-schema

我想返回数据库中所有表的列表以及表的任何相关扩展属性。

这给了我表格列表:

    SELECT TABLE_NAME AS tTableName, TABLE_TYPE AS tTableType
    FROM information_schema.tables AS t
    WHERE TABLE_TYPE = N'BASE TABLE'
    ORDER BY TABLE_NAME

这为我提供了包含它们的表的扩展属性列表:

    SELECT OBJECT_NAME(ep.major_id) AS [epTableName],
    CAST(ep.Value AS nvarchar(500)) AS [epExtendedProperty]
    FROM sys.extended_properties AS ep
    WHERE ep.name = N'MS_Description' AND ep.minor_id = 0

我无法看到如何组合这些并正确保留WHERE条件。这是错的,但它可以让你了解我出错的地方:

    SELECT TABLE_NAME AS tTableName, TABLE_TYPE AS tTableType,
    OBJECT_NAME(ep.major_id) AS [epTableName],
    CAST(ep.Value AS nvarchar(500)) AS [epExtendedProperty]
    FROM information_schema.tables AS t
    LEFT OUTER JOIN sys.extended_properties AS ep ON
    t.table_name= OBJECT_NAME(ep.major_id) 
    WHERE TABLE_TYPE = N'BASE TABLE'
    -- No clue where to put this: AND ep.name = N'MS_Description' AND ep.minor_id = 0
    ORDER BY TABLE_NAME

1 个答案:

答案 0 :(得分:0)

我认为下面的内容达到了你想要的效果,虽然我的桌子上没有任何符合标准的扩展属性,因此很难检查它是否有效:

SELECT TABLE_NAME AS tTableName, 
    TABLE_TYPE AS tTableType,
    q.epTableName,
    q.epExtendedProperty
FROM information_schema.tables AS t
    LEFT OUTER JOIN (SELECT OBJECT_NAME(ep.major_id) AS [epTableName],
        CAST(ep.Value AS nvarchar(500)) AS [epExtendedProperty]
        FROM sys.extended_properties ep
        WHERE ep.name = N'MS_Description' AND ep.minor_id = 0) As q
    ON t.table_name = q.epTableName 
WHERE TABLE_TYPE = N'BASE TABLE'
ORDER BY TABLE_NAME
相关问题