将C#字节[]传递给VARBINARY SQL字段

将C#字节[]传递给VARBINARY SQL字段,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,我有一个SQL Server 2008表,其中一个字段声明为VARBINARY(8000) 一个存储过程用于写入此表,它接受一个VARBINARY(8000)参数 C#代码调用将字节[]作为此参数传入的存储过程 在某些情况下,会因为字段太大而引发SQL异常 这似乎是一个简单的问题,但到目前为止我还没有找到答案 我的字节[]可以有多大才能使SQL字段不溢出?您的字节[]最多可以有8000才能使字段不溢出 我有一个SQL Server 2008表,其中一个字段声明为VARBINARY(8000)

我有一个SQL Server 2008表,其中一个字段声明为VARBINARY(8000)

一个存储过程用于写入此表,它接受一个VARBINARY(8000)参数

C#代码调用将字节[]作为此参数传入的存储过程

在某些情况下,会因为字段太大而引发SQL异常

这似乎是一个简单的问题,但到目前为止我还没有找到答案


我的字节[]可以有多大才能使SQL字段不溢出?

您的字节[]最多可以有8000才能使字段不溢出

我有一个SQL Server 2008表,其中一个字段声明为VARBINARY(8000)

我的字节[]有多大才能使SQL字段不溢出


这感觉像是一个技巧性的问题,但这里的“明显”答案是:8000字节。

在您的情况下是8000字节,但为什么不使用
VARBINARY(MAX)
使用最大允许大小这将能够存储2^31-1字节,请参阅表上的触发器引起的问题。触发器所做的工作正在引发异常。这与写入表中的数据无关


感谢所有人或您的帮助

您能发布一些代码吗?如果该字段声明为
VARBINARY(8000)
,那么明显的答案是“它可以是8000字节或更少”-您看到了什么不同吗?是的,我看到了一个失败的例子,就是采用了长度为3262的字节[],异常是thrown@JDibble这应该很好;我认为我们需要在这里看到一些东西——最具体的是确切的错误消息,以及它是来自sql server还是.net的指示;还有一些操作它的代码。例如,是否有可能某些代码(如触发器或索引)正在使用它?首先,这是我支持的代码,而不是我编写的代码。我假设8000字节是限制,但实际上情况似乎并非如此。System.Data.SqlClient.SqlException异常:字符串或二进制数据将被截断。重新调整大小不是解决方案,从varbinary(8000)更改为varbinary(max)将导致现有数据丢失。这是不可能发生的,所以我只能使用数据库definition@JDibbleSQL Server将作为事务执行就地转换,因此我不希望出现任何数据丢失。DBA在这里不是这样说的:(问题是由表上的触发器引起的,而不是由写入表本身的数据引起的。它看起来确实像和“傻瓜”但这是一个现实系统中的真正问题。