Sql server 如何获取所有数据库及其扩展属性的列表?

Sql server 如何获取所有数据库及其扩展属性的列表?,sql-server,Sql Server,我正在使用SQL server 2008 我想获取服务器中所有具有与数据库相关的特定属性的数据库。 例如,对于服务器中的某些数据库,我们有一个扩展属性,其键为x。 我希望结果是 DatabaseName | x Db1 | value1 Db2 | value2 Db3 | value3 Db4 | null 其中Db4没有键为x的扩展属性 有什么帮助吗 非常感谢您可以使用sys.extended_属性和动态SQL来获取所

我正在使用SQL server 2008 我想获取服务器中所有具有与数据库相关的特定属性的数据库。 例如,对于服务器中的某些数据库,我们有一个扩展属性,其键为x。 我希望结果是

DatabaseName | x
Db1          | value1
Db2          | value2
Db3          | value3
Db4          | null
其中Db4没有键为x的扩展属性

有什么帮助吗 非常感谢

您可以使用sys.extended_属性和动态SQL来获取所有扩展属性

IF OBJECT_ID(N'#extprops') IS NOT NULL DROP TABLE #extprops

CREATE TABLE #extprops (
    dbname nvarchar(max),
    class_desc sql_variant,
    [name] sql_variant,
    [value] sql_variant
)

DECLARE @sql nvarchar(max)

SELECT @sql = (
    SELECT 'USE '+QUOTENAME([name])+ ' INSERT INTO #extprops SELECT ''' +[name] + ''' as dbname, class_desc, [name], [value] FROM sys.extended_properties;' +CHAR(10)
    FROM sys.databases
    FOR XML PATH('')
)

PRINT @sql

EXEC sp_executesql @sql

SELECT *
FROM #extprops
输出:

dbname          class_desc          name                                    value
msdb            DATABASE            Microsoft_Management_Utility_Version    ___SQLVERSION___NEW___
AdventureWorks  DATABASE            MS_Description                          AdventureWorks 2014 Sample OLTP Database
AdventureWorks  OBJECT_OR_COLUMN    MS_Description                          Check constraint [ProductLine]='r' OR [ProductLine]='m' OR [ProductLine]='t' OR [ProductLine]='s' OR [ProductLine]='R' OR [ProductLine]='M' OR [ProductLine]='T' OR [ProductLine]='S' OR [ProductLine] IS NULL
AdventureWorks  OBJECT_OR_COLUMN    MS_Description                          Stores (including store contacts) that sell Adventure Works Cycles products to consumers.
AdventureWorks  OBJECT_OR_COLUMN    MS_Description                          Manufacturing failure reasons lookup table.
AdventureWorks  OBJECT_OR_COLUMN    MS_Description                          Primary key for ScrapReason records.
AdventureWorks  OBJECT_OR_COLUMN    MS_Description                          Failure description.
...
如果打印@sql,您将看到如下查询:

USE [master] INSERT INTO #extprops SELECT 'master' as dbname, class_desc, [name], [value] FROM sys.extended_properties;
USE [tempdb] INSERT INTO #extprops SELECT 'tempdb' as dbname, class_desc, [name], [value] FROM sys.extended_properties;
USE [model] INSERT INTO #extprops SELECT 'model' as dbname, class_desc, [name], [value] FROM sys.extended_properties;

之后,您可以使用extprops表上的任何过滤器。

什么是属性“x”?有什么例子吗?数据库上的主要数据存储在此处从sys.databasesEvery数据库中的sys.databasesEvery数据库具有作为键值对的扩展属性我想要带有键值x的扩展属性。我知道了!希望我的回答能对你有所帮助。非常感谢。这非常有帮助