在SQL Server中选择数据库名称和扩展属性

在SQL Server中选择数据库名称和扩展属性,sql,sql-server,extended-properties,Sql,Sql Server,Extended Properties,我有三个数据库,首先是我在SQLServer2012中添加的“MD_”。 它们都有一个扩展属性NAME=“DESCRIPTION” 我想要返回的是数据库名称和“DESCRIPTION”值的结果集 选择数据库名称非常简单,但是我需要一些帮助来加入扩展属性 BEGIN SELECT A.NAME FROM sys.databases A Where LEFT(A.NAME, 3) = 'MD_' END 结果: NAME DESCRIPTION MD_1 Initi

我有三个数据库,首先是我在SQLServer2012中添加的“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
任何帮助都将不胜感激!
好意

评论中的链接帮助我来到这里,但sys.extended_属性是每个数据库的视图。因此,每个数据库的属性都包含在数据库中。不过,这起了作用

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

这里是另一个选项,不使用临时表,但返回多个结果

EXEC sp_msforeachdb N'SELECT name, value 
FROM [?].sys.fn_listextendedproperty(default, default, default, default, default, default, default)'

考虑:或者类似的堆栈问题,让我试着在第一位遵循您的逻辑,因为我已经有一段时间没有使用SQL Server了。首先要创建一个临时表?然后用每个数据库中的所有扩展_属性填充它?(我在这里得到一个错误,顺便说一句,“sp_msforeachdb附近的语法不正确”)@KennethFisher@Hank,抱歉语法不正确。我没有把EXEC放在sp_msforeachdb前面。我最近甚至在博客上写过,但还是忘了。哦,好吧。另一方面,是的,我正在创建一个临时表,然后sp_msforeachdb在每个数据库中循环,并以这种方式填充临时表。sp_msforeachdb取代了?使用数据库名称。一旦填充了temp表,就可以很容易地查询sys.databases。