C# sql server varbinay(最大值)截断错误

C# sql server varbinay(最大值)截断错误,c#,sql-server,varbinary,C#,Sql Server,Varbinary,我有一个带有varbinarymax类型列的表,我正试图用字节数组更新它。我想我用下面的代码做的是正确的,但是我总是得到数据会被截断的错误。info.logoBin是字节[],大小约为200k,是一个图像文件 using (SqlConnection conn = OpenConnection()) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "UPDATE COMPANI

我有一个带有varbinarymax类型列的表,我正试图用字节数组更新它。我想我用下面的代码做的是正确的,但是我总是得到数据会被截断的错误。info.logoBin是字节[],大小约为200k,是一个图像文件

using (SqlConnection conn = OpenConnection())
{
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "UPDATE COMPANIES SET LOGO_TYPE=@param1, LOGO_HASH=@param2, " +
            "LOGO_BIN=@param3 WHERE ID=@param4";
        cmd.Parameters.AddWithValue("@param1", info.LogoType);
        cmd.Parameters.AddWithValue("@param2", info.LogoHash);
        if (info.LogoBin != null)
        {
            cmd.Parameters.Add("@param3", SqlDbType.VarBinary, -1).Value = info.LogoBin;
        }
        else
        {
            cmd.Parameters.Add("@param3", SqlDbType.VarBinary, -1);
            cmd.Parameters["@param3"].Value = DBNull.Value;
        }
        cmd.Parameters.AddWithValue("@param4", id);

        ExecNonQuery(cmd);
    }
    conn.Close();
}
我尝试过指定一个大小,我尝试过使用SqlDbType.Image,我甚至尝试过只给值new byte[]{0xff,0xfa},但我总是得到相同的错误。最后,我在sql server管理服务器中尝试了以下操作,效果很好:

insert into COMPANIES (LOGO_BIN) values (0xfffa);

顺便说一下,我使用的是vs 2008 pro和sql server 2012 express。有什么想法吗?

您确定错误不在LOGO\u TYPE或LOGO\u HASH列上吗?还有,公司的谈判桌上是否有触发因素?当然我是肯定的,当然我错了:多么尴尬。如果你回答的话,我会同意的。如果有人想知道,这个方法是按原样工作的。我的logo_hash列是一个varchar32,但是c在MD5.ToString中添加了破折号,所以它应该是varchar48。