在我的存储过程中,我正在创建一个可能非常大的XML文件,> 1GB大小。需要将数据插入到varbinary列中,我想知道在SQL Server 2014中最有效的方法是什么?
答案 0 :(得分:0)
我会考虑使用文件表: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
答案 1 :(得分:0)
我将它存储在xml列中,但由于我无法控制的决定而被要求将其移至此新列
如果你有机会与这些人交谈,你应该这样做!
您必须知道,XML不是存储为您看到的字符串表示形式,而是存储为分层组织树。读取这些数据或操纵它非常快!如果将XML存储为 BLOB ,则将其保持为字符串格式(希望这是unicode / UCS-2
!)。读取此数据需要转换为NVARCHAR(MAX)
然后转换为XML
,这意味着需要完整解析整个文档以获取层次结构树。完成此操作后,您可以使用 XML数据类型方法,如.value
或.nodes
)。你将需要这个非常昂贵的过程一遍又一遍......
特别是在大型XML的情况下(或 - 更糟糕的是 - 其中很多)这是一个非常糟糕的决定!! 为什么要这样做?它将占用大致相同的存储空间量 你唯一能得到的就是糟糕的表现!你将成为那个以后必须修复它的人......
VARBINARY
是数据的合适类型,您不关心内部的内容(例如图片)。如果这些XML只是普通的归档数据,并且您不想读取或操作它们,那么这可以是一种选择。但是根本没有优势!