sql server varbinary(max) 难以达到2G?

jeffertsai 2010-10-07 08:52:59
在MS sql server 2005的说明中,类型varbinary(max)的最大容量为2^31-1也就是2GB左右,但实际上为什么超过250M就会出现溢出的现象,属性值显示“无法读取数据”,并且会污染到其他的属性值,导致之后增加的数据条目无法读取,各位是否遇到过这样的问题
...全文
261 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
mazhg430 2011-11-22
  • 打赏
  • 举报
回复
想问下楼主,问题解决了吗?我也碰到同样的问题
SQLCenter 2010-10-09
  • 打赏
  • 举报
回复
哦 原来是界面打开
界面打开表,从企业管理器到SSMS,都是问题多多。
feilniu 2010-10-09
  • 打赏
  • 举报
回复
但通过打开表的方式在界面显示感觉是有问题的,不知何解
====
GUI的方式打开表本身就是有问题的。既不保证显示所有行的数据,也不保证每个列的数据都是显示完整的。
jeffertsai 2010-10-09
  • 打赏
  • 举报
回复
最终发现,上传完250M以下文件一切正常。

>250M,上传结果成功,使用DBCC checkDB检测也是正确的,
打开表,发现该行部分属性“无法读取数据”,并污染一片

但使用select * from 表名居然和SQLCenter所描述的一样了!!!

所以,应该实际是成功了的,但通过打开表的方式在界面显示感觉是有问题的,不知何解,先等等

不管怎么说,今天都得结贴给分了,感谢各位,特别是SQLCenter啊
jeffertsai 2010-10-08
  • 打赏
  • 举报
回复
哦,你遇到过吗?

我也曾怀疑是,说明下,我是4核,3G内存,xp系统,developer版(差了好像没有文件大小的限制)

跑下来看任务管理器内存可用数,系统缓存都貌似没问题
测试大文件系统缓存0.8G——2.2G之间,如果只是500M的文件,到1.4G就差不多了,就是传完了也是属性值显示“无法读取数据”,郁闷
王向飞 2010-10-08
  • 打赏
  • 举报
回复
是你系统整体配置的问题,就好像跟小马拉了一台大车,车没事,马累死了。
「已注销」 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dawugui 的回复:]

引用楼主 jeffertsai 的回复:
在MS sql server 2005的说明中,类型varbinary(max)的最大容量为2^31-1也就是2GB左右,但实际上为什么超过250M就会出现溢出的现象,属性值显示“无法读取数据”,并且会污染到其他的属性值,导致之后增加的数据条目无法读取,各位是否遇到过这样的问题

你什么文件能达到2GB?日本的A片吗?
[/Quote]
SQLCenter 2010-10-08
  • 打赏
  • 举报
回复
DBCC CHECKTABLE
DBCC CHECKDB
jeffertsai 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sqlcenter 的回复:]
什么问题都没有,估计是你的IO问题
[/Quote]

IO什么问题

我完全照你的代码测试了,还是一样的问题
billpu 2010-10-08
  • 打赏
  • 举报
回复
换个文件一样情况吗?
bancxc 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dawugui 的回复:]
引用楼主 jeffertsai 的回复:
在MS sql server 2005的说明中,类型varbinary(max)的最大容量为2^31-1也就是2GB左右,但实际上为什么超过250M就会出现溢出的现象,属性值显示“无法读取数据”,并且会污染到其他的属性值,导致之后增加的数据条目无法读取,各位是否遇到过这样的问题

你什么文件能达到2GB?日本的A片吗?
[/Quote]围观钻钻耍流氓
SQLCenter 2010-10-08
  • 打赏
  • 举报
回复
他瞎掰,我昨天测试是用一台汉烂的台式兼容机测试,双核/2GRAM,再累也帮你干完,资源耗尽SQL会停止查询甚至Shutdown,无法读取数据是表数据页完整性问题:DBCC CHECKTABLE/DBCC CHECKDB
SQLCenter 2010-10-07
  • 打赏
  • 举报
回复
select * from test -- where id<5
SQLCenter 2010-10-07
  • 打赏
  • 举报
回复
什么问题都没有,估计是你的IO问题

create table test(id int identity, bin varbinary(max))
go
insert test default values
insert test default values
insert test default values
insert test default values
go

select * from test
/*
id bin
----------- ---------------------
1 NULL
2 NULL
3 NULL
4 NULL
*/

-- 系统程序.rar = 397,541,151Byte = 379M
insert test select * from openrowset(bulk 'X:\...\系统程序.rar', single_blob) as bin

select * from test where id<5

/*
id bin
----------- ---------------------
1 NULL
2 NULL
3 NULL
4 NULL
5 0x526172211A0700CF...
*/
dawugui 2010-10-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 jeffertsai 的回复:]
在MS sql server 2005的说明中,类型varbinary(max)的最大容量为2^31-1也就是2GB左右,但实际上为什么超过250M就会出现溢出的现象,属性值显示“无法读取数据”,并且会污染到其他的属性值,导致之后增加的数据条目无法读取,各位是否遇到过这样的问题
[/Quote]
你什么文件能达到2GB?日本的A片吗?
jeffertsai 2010-10-07
  • 打赏
  • 举报
回复
大家可以试一下啊,直接敲命令insert 一个大文件超250M,即使成功也污染了一片,一些其他的记录也都显示成“无法读取数据”。反正怎么也没见过1G以上文件能成功的,哪来的2G呢

是否有什么地方要设置的?
「已注销」 2010-10-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jeffertsai 的回复:]

引用 2 楼 zsh0809 的回复:
2^31-1字节确实是2G左右
250M跟2G相差8倍左右,这之间有没有关系呢?
没有遇到过这种情况,只能臆测。


我开始也这么想过,还怀疑是不是2G bit啊,但确实是byte没错啊
[/Quote]
嗯,是Byte,等待高手吧,帮不了你。
jeffertsai 2010-10-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zsh0809 的回复:]
2^31-1字节确实是2G左右
250M跟2G相差8倍左右,这之间有没有关系呢?
没有遇到过这种情况,只能臆测。
[/Quote]

我开始也这么想过,还怀疑是不是2G bit啊,但确实是byte没错啊
「已注销」 2010-10-07
  • 打赏
  • 举报
回复
2^31-1字节确实是2G左右
250M跟2G相差8倍左右,这之间有没有关系呢?
没有遇到过这种情况,只能臆测。
hao1hao2hao3 2010-10-07
  • 打赏
  • 举报
回复
没试过这样处理,帮顶。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧