2011-06-15 67 views
8

SQL Server中存储的扩展属性在哪里?SQL Server中存储的扩展属性在哪里?

它们是存储在包含它添加到的对象的数据库中,还是它们被单独存储并以某种方式绑定到本地机器。

例如,如果添加SSMS中的“Description”字段(MS_Description扩展属性)以记录表的列,然后关闭数据库引擎并复制MDF/LOG文件以将其附加到不同的机器,扩展属性会与复制的文件一起使用,还是会遗留在本地计算机上的主数据库(或类似的东西)中?

回答

12

它们存储在数据库中。您可以通过查询sys.extended_properties来获取它们,并将它们存储在System Base Table sys.sysxprops中。

+0

+1查找实际的系统表。 – RThomas 2011-06-16 00:38:02

+1

谢谢!我现在更适合使用扩展属性。同样有趣的:“要绑定到系统基表,用户必须通过使用专用管理员连接(DAC)尝试从系统基表执行SELECT查询,而无需连接连接到SQL Server实例通过使用DAC引发错误。” – Triynko 2011-07-20 15:23:11

+2

此外,这里是如何加入sys.extended_properties和SYS.COLUMNS的意见,并得到MS_Description扩展属性: SELECT * FROM sys.extended_properties p内部联接上c.object_id = p.major_id和c.column_id SYS.COLUMNSÇ = p.minor_id其中p.name ='MS_Description' – Triynko 2011-07-20 16:18:31

2

MSDN

“[... E] xtended属性存储在数据库中[。]”

所以,是的,当你创建一个备份和/或移动数据库,扩展属性与它一起。

+0

我标志着其他响应的答案,因为我听说过,扩展属性存储在数据库中的“当您创建一个备份”,但备份过程将创建一个单独的备份文件,并在它可以拉从主数据库信息该过程,所以我不清楚数据是否实际上始终存储在数据库的主MDF文件中。另一个答案引用了显示哪些系统表扩展属性存储在其中的文档,并明确指出该表存在于每个数据库(MDF文件)中,而不仅仅是主数据库。 – Triynko 2012-05-14 21:40:43