在SQL Server中选择数据库名称和扩展属性
我有三个数据库,首先是我在SQLServer2012中添加的“MD_”。 它们都有一个扩展属性NAME=“DESCRIPTION” 我想要返回的是数据库名称和“DESCRIPTION”值的结果集 选择数据库名称非常简单,但是我需要一些帮助来加入扩展属性在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
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。