Sql server 将大型XML数据传递给ADODB中的XML数据类型参数

Sql server 将大型XML数据传递给ADODB中的XML数据类型参数,sql-server,xml,stored-procedures,asp-classic,ado,Sql Server,Xml,Stored Procedures,Asp Classic,Ado,我有一个接受xml数据类型参数的过程 create procedure my_procedure @xml_parameter xml as begin (...) end 我从经典asp页面调用该过程,使用如下命令: set cmd = Server.CreateObject("ADODB.Command") cmd.ActiveConnection = MyConnObj cmd.CommandText = "my_procedure" cmd.CommandTyp

我有一个接受xml数据类型参数的过程

create procedure my_procedure
    @xml_parameter xml
as
begin
(...)
end
我从经典asp页面调用该过程,使用如下命令:

set cmd = Server.CreateObject("ADODB.Command")        
cmd.ActiveConnection = MyConnObj
cmd.CommandText = "my_procedure"
cmd.CommandType = adCmdStoredProc

cmd.Parameters.Append cmd.CreateParameter("@xml_parameter", adLongVarChar, adParamInput, Len(xmlData), xmlData)
如果我传递一个小xml,它就会工作。但是当我传递一个大的xml,+-200KB时,我得到一条消息“该过程需要@xml_参数,wich没有得到通知”

有人知道如何将此xml传递到存储过程吗

PS:当我使用相同的xml数据从“SQLServerManagementStudio”调用该过程时,它也可以工作,因此它的限制似乎来自ADO

2014年6月19日编辑:
调试这个问题时,我发现ODBC驱动程序中有一条消息说某些数据正在被截断。我试图通过使用“driver={SQL Server Native Client 11.0}来更改驱动程序,但现在我得到消息:“由于语句(…)使用临时表,所以无法确定元数据”

我能够使用ADODB 2.8成功地将超过7MB的数据提交到过程的参数中,Parameters.Refresh方法用于初始生成参数,AppendChunk方法用于生成其值,并在执行之前将参数的类型更改为adLongVarWChar(最初为adVarWChar)

。Refresh查询数据库中的参数,因此您可以获得额外的DB通信。
除了刷新之外,需要做的就是将长度传递为Len+1,作为空终止字符。

将长度传递为
-1
而不是实际长度,SQL Server会将其解释为
varchar(max)
。我尝试过,但没有成功。