SQL Server 2014 - 将 xml 数据插入 varbinary 字段

SQL Server 2014 - Insert xml data into varbinary field

在我的存储过程中,我正在创建一个 XML 文件,该文件可能会非常大,> 1GB。数据需要插入到 varbinary 列中,我想知道在 SQL Server 2014 中最有效的方法是什么?

我会考虑使用文件 Table:https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server

并检查这个以插入 blob:How to insert a blob into a database using sql server management studio

I was storing it in an xml column but have been asked to move it to this new column as a result of a decision outside of my control

如果你有丝毫机会与这些人交谈,你应该这样做!

您必须知道,XML 不是以您看到的字符串形式存储的,而是以分层组织的树的形式存储的。读取或处理这些数据的速度快得惊人!如果您将 XML 存储为 BLOB,您将保留它的字符串格式(希望这是 unicode/UCS-2!)。读取此数据需要转换为 NVARCHAR(MAX),然后转换为 XML,这意味着对整个文档进行完整解析以获得层次结构树。完成后,您可以使用 XML 数据类型方法 ,如 .value.nodes)。你将一遍又一遍地需要这个非常昂贵的过程......

尤其是在 XML 数量巨大的情况下(或者 - 甚至更糟 - 其中很多)这是一个非常糟糕的决定! 为什么要这样做? ??它将占用大致相同的存储量 space.
你唯一会得到的就是糟糕的性能!你将是稍后必须修复它的人...

VARBINARY 是适合数据的类型,您不关心里面的内容(例如图片)。如果这些 XMLs 只是普通的存档数据并且您不想读取或操作它们,那么这可能是一个选择。但是一点优势都没有!