字符串或二进制数据将被截断xml存储过程

时间:2013-07-05 15:44:11

标签: c# sql-server xml stored-procedures

您好我在c#中有一个方法将xml从我的应用程序发送到SQL Server 2008存储过程。方法如下所示:

public void sendXml(string filePath)
{
    MemoryStream xmlStream= Xml.InsertXML(filePath);

    try
    {
        using (_connection = new SqlConnection(myConnectionString))
        {
            using (_command = new SqlCommand("my_stored_procedure", _connection))
            {
                _command.CommandType = CommandType.StoredProcedure;
                _command.Parameters.Add("@input", SqlDbType.Xml).Value = new SqlXml(xmlStream);
                _connection.Open();
                _command.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    {
        throw exception;
    }
}

当我的应用程序尝试运行_command.ExecuteNonQuery();时,我得到了一个SQLException

  

字符串或二进制数据将被截断

困扰我的是我可以在SSMS中完美地执行存储过程(没有截断问题)。我无法弄清楚为什么会发生这种情况。这是我的sp看起来像:

ALTER PROCEDURE my_stored_procedure
@XML XML
AS
BEGIN
SET NOCOUNT ON
 SELECT C.value(...),
        ...
 FROM   @XML.nodes(...) AS t(C)
SET NOCOUNT OFF
END

我的问题是:

  1. 我做错了吗?
  2. 我将xml保存到文件中,文件大小约为860 kb,总计> 2,000行和> 30,000 charcater(我忘记了实际大小和全部)。它是否影响命令(所以发生异常)? AFAIK,XML具有最高2 GB的限制,如解释here
  3. 我在网上搜索,找不到任何线索。我知道截断通常发生在你的输入超过数据类型可以包含的时候。在此先感谢您的帮助

0 个答案:

没有答案