3

我有三个数据库,从我在 SQL Server 2012 中添加的“MD_”开始。每个数据库都有一个扩展属性 NAME =“DESCRIPTION”

我喜欢返回的是数据库名称和“DESCRIPTION”值的结果集。

选择数据库名称很容易,但我可以使用一些帮助来加入扩展属性。

BEGIN
    SELECT A.NAME
    FROM sys.databases A
    Where LEFT(A.NAME, 3) = 'MD_'
END

结果:

NAME   DESCRIPTION
MD_1   Initial
MD_2   Secondary
MD_3   Final

任何帮助将不胜感激!亲切的问候

4

2 回答 2

7

评论中的链接帮助我到达这里,但 sys.extended_properties 是每个数据库的视图。所以每个数据库的属性都包含在数据库中。这虽然有效。

CREATE TABLE #EP (DatabaseName varchar(255), PropertyName varchar(max), 
            PropertyValue varchar(max))

EXEC sp_msforeachdb 'INSERT INTO #EP SELECT ''?'' AS DatabaseName, 
            CAST(name AS varchar), CAST(Value AS varchar) 
        FROM [?].sys.extended_properties WHERE class=0'

如果您想要所有数据库以及它们存在的属性。

SELECT db.Name, #EP.PropertyName, #EP.PropertyValue
FROM sys.databases db
LEFT OUTER JOIN #EP
    ON db.name = #EP.DatabaseName
于 2013-02-23T15:28:43.667 回答
4

这是另一种选择,不使用临时表但返回多个结果...

EXEC sp_msforeachdb N'SELECT name, value 
FROM [?].sys.fn_listextendedproperty(default, default, default, default, default, default, default)'
于 2013-08-02T15:22:35.337 回答