【问题标题】:How is an xml column stored in SQL Server 2008?xml 列如何存储在 SQL Server 2008 中?
【发布时间】:2012-11-18 23:14:49
【问题描述】:

我试图了解 SQL Server 2008 如何存储 xml 列以尝试估计我们产品中的表大小。

我正在使用DATALENGTH(xml_column) 进行一些测试,结果令人不安:

Xml document length | Datalength | Bytes per character
175                 | 366        | 2.09
15                  | 38         | 2.53
314                 | 414        | 1.31

显然,xml 列类型不是伪装的 nvarchar(max),正如我在某处读到的那样。

它可能已压缩并存储为二进制文件,但在任何地方都找不到。

谁能解释一下 xml 列是如何存储在 SQL Server 2008 中的?

【问题讨论】:

    标签: sql-server xml sql-server-2008 xml-column


    【解决方案1】:

    XML 列以“紧凑的二进制格式”存储。

    我怀疑微软会给你更多的细节。

    【讨论】:

    • 重要的是要知道它是一种“标记化”格式,例如Microsoft 保证返回一个语义相同的 XML - 但他们不保证 XML 的文本表示(例如,MS 将在从他们的 XML 列返回时将<empty></empty> 切换到<empty />,并且到目前为止据我所知,没有办法控制这种行为。不要依赖从 SQL Server 获取文本相同的 XML ....
    • 压缩二进制格式和ms-binxml不一样
    • 我不知道它是否相同 - 也没有兴趣。就我而言,只要不破坏任何东西,它就可以从一天变为第二天。
    • @rene,这是一份很棒的文件,它回答了我的问题。
    【解决方案2】:

    正如rene 所指出的,SQL Server 2008 使用MS-BINXML(一种紧凑的二进制格式)来存储 xml 列的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      相关资源
      最近更新 更多