首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么SqlDbType映射到varBinary(最大)?

什么SqlDbType映射到varBinary(最大)?
EN

Stack Overflow用户
提问于 2011-04-29 04:33:40
回答 3查看 24.1K关注 0票数 16

什么SqlDbType映射到varBinary(最大)?SqlDbType.VarBinary说它被限制在8K以内。SQL Server文档指出varbinary(max)可以存储aprrox。2 2GB。但是SqlDbType.VarBinary说它被限制在8K以内。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-29 10:01:25

长度为-1的SqlDbType.VarBinary等价于VARBINARY(MAX),至少在理论上是这样。但问题有点复杂,因为还有一个可以使用的类型(不是枚举值),即SqlTypes.SqlBytes。还有一个SqlTypes.SqlFileStream,当VARBINARY(MAX)类型具有FILESTREAM属性时,它也可以用于the类型。

但问题是,这些枚举或类型都没有涵盖在ADO.Net中使用VARBINARY(MAX)列的真正问题:内存消耗。所有这些类型,当“开箱即用”时,将在内存中创建作为单个数组分配的值的副本,这充其量是没有性能的,但随着内容变得更大,因为分配失败而变得不可能使用。我有几篇文章展示了在ADO.Net中使用流式语义处理VARBINARY(MAX)值的正确方法,避免在内存中创建整个内容的副本:

  • Download and Upload images from SQL Server via ASP.Net MVC
  • FILESTREAM MVC: Download and Upload images from SQL Server
票数 25
EN

Stack Overflow用户

发布于 2011-04-29 05:16:14

试试这个:

代码语言:javascript
复制
SqlParameter blobParam = new SqlParameter("@blob", SqlDbType.VarBinary, buffer.Length);
blobParam.Value = buffer;
cmd.Parameters.Add(blobParam);

看看这是否管用

票数 7
EN

Stack Overflow用户

发布于 2011-04-29 04:46:10

这可能会有帮助:http://msdn.microsoft.com/en-us/library/a1904w6t.aspx

尽管SqlDbType.Image可能很丑陋,但它似乎是一条可行的道路。看起来我需要更新我的ORM了,因为任何超过8k的东西都会破坏它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5824620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档