Sql server 编码名称语法不正确

Sql server 编码名称语法不正确,sql-server,xml,tsql,encoding,xml-declaration,Sql Server,Xml,Tsql,Encoding,Xml Declaration,代码: 以上是我得到错误的代码: Msg 9442,16级,状态1,第2行XML解析:第1行,字符38,编码名称语法不正确 谁能帮我解决这个问题?我不明白语法哪里错了。SQL Server无法导入任何类型的编码 您正在将此文件作为BLOB导入,这只是一堆字节。这必须解释为SQL Server知道的数据类型 您可以尝试将变量声明为VARCHAR(MAX)或NVARCHAR(MAX)并希望该变量的内容是您所期望的 在这种情况下,您可以使用CHARINDEX和SUBSTRING或STUFF切断整个xm

代码:

以上是我得到错误的代码:

Msg 9442,16级,状态1,第2行XML解析:第1行,字符38,编码名称语法不正确


谁能帮我解决这个问题?我不明白语法哪里错了。

SQL Server无法导入任何类型的编码

您正在将此文件作为
BLOB
导入,这只是一堆字节。这必须解释为SQL Server知道的数据类型

您可以尝试将变量声明为
VARCHAR(MAX)
NVARCHAR(MAX)
并希望该变量的内容是您所期望的

在这种情况下,您可以使用
CHARINDEX
SUBSTRING
STUFF
切断整个xml声明(
)。或者,您可以使用
REPLACE
为您的
encoding=“blah”
设置不同的值。如果
VARCHAR
为您工作,请使用
UTF-8
,如果
NVARCHAR
为您工作,请使用
UTF-16


如果这没有帮助,您必须在读取光盘上的文件之前更改该文件。最好的是utf-16,它可以直接读入XML。但是不要忘了将其写入
编码
或去掉声明。

这是对XML语法的抱怨。我们需要查看XML,以便有希望向您指出问题。@B21:如果这个答案有帮助的话,我们会感谢您。非常感谢。
declare @filedata xml 
select @filedata = BulkColumn from openrowset(bulk 'E:\Scripts\apc.xml',single_blob) x;