【问题标题】:Where are extended properties stored in SQL Server?扩展属性存储在 SQL Server 中的什么位置?
【发布时间】:2011-09-15 21:48:06
【问题描述】:

扩展属性存储在 SQL Server 中的什么位置?

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

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

【问题讨论】:

    标签: sql-server-2008 location storage extended-properties


    【解决方案1】:

    它们存储在数据库中。您可以通过查询视图sys.extended_properties获取它们,它们存储在System Base Tablesys.sysxprops中。

    【讨论】:

    • 谢谢!我现在更习惯使用扩展属性。同样有趣的是:“要绑定到系统基表,用户必须使用专用管理员连接 (DAC) 连接到 SQL Server 实例。尝试从系统基表执行 SELECT 查询而不使用 DAC 进行连接会引发错误。”
    • 另外,这里是如何加入 sys.extended_properties 和 sys.columns 视图,并获取 MS_Description 扩展属性: select * from sys.extended_properties p inner join sys.columns c on c.object_id = p .major_id 和 c.column_id = p.minor_id 其中 p.name = 'MS_Description'
    • 只是为了消除任何混乱。该文档指出 sys.sysxprops “存在于每个数据库中。每个扩展属性都包含一行。”相反,对于其他一些 sys.* 表,它显示“仅存在于主数据库中”。
    【解决方案2】:

    来自MSDN

    “[…E]扩展属性存储在数据库中[.]”

    所以是的,当您创建备份和/或移动数据库时,扩展属性随之而来。

    【讨论】:

    • 我将另一个响应标记为答案,因为我听说扩展属性“在创建备份时”存储在数据库中,但是备份过程会创建一个单独的备份文件,它可以提取信息在该过程中从主数据库中获取数据,因此我不清楚数据实际上是否一直存储在数据库的主 MDF 文件中。另一个答案引用了显示哪些系统表扩展属性存储在其中的文档,并明确指出该表存在于每个数据库(MDF 文件)中,而不仅仅是主数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2020-07-08
    相关资源
    最近更新 更多