3

SQL Server 2012で追加した「MD_」で始まる3つのデータベースがあります。それぞれに、拡張プロパティ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 に答える