varbinary(max)字段为什么不能超过64K

angshuangxi 2008-06-20 08:50:08
我这里有一个测试数据库和一个正式数据库,都是SQLServer2005,
测试库上对一个 varbinary(max)字段写入大文件是成功的, 可是正式库上对该字段写的时候,却不能超过64K,
请问哪位高手碰过这个问题
...全文
601 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuming0306 2008-07-08
  • 打赏
  • 举报
回复
1检查是否存在字段约束
2检查是否存在表间关系
3检查存储过程
4直接在存储过程中调试
angshuangxi 2008-06-20
  • 打赏
  • 举报
回复
我是用程序往数据库里写的,一模一样的代码,往两个不同库中写,一个成功一个失败
Garnett_KG 2008-06-20
  • 打赏
  • 举报
回复
晃的头晕。。。4个大钻钻。
nzperfect 2008-06-20
  • 打赏
  • 举报
回复
zjcxc 2008-06-20
  • 打赏
  • 举报
回复
我的 sql 的测试结果是: 2048000, 说明数据存储是勃起 64 KB的
zjcxc 2008-06-20
  • 打赏
  • 举报
回复
ADO 的话, 你尝试在做最终输出的时候, 把 xml 转换成 varbinary(max), 再转换为 image
或者转换为 ntext

ADO 只有 text/ntext/image 才支持大数据的
zjcxc 2008-06-20
  • 打赏
  • 举报
回复
CREATE TABLE #(
a varbinary(max)
)

DECLARE
@a varbinary(max)
SELECT
@a = CONVERT(varbinary(8000), REPLICATE('A', 8000))
WHILE LEN(@a) < 1024 * 1024 -- 写 1 MB
SELECT
@a = @a + @a

INSERT # VALUES(@a)

SELECT DATALENGTH(a) FROM #

DROP TABLE #
catxl313 2008-06-20
  • 打赏
  • 举报
回复
嗯,我也碰到这个问题了,我从ADO执行一个存储过程,希望它能传回一个xml串,可是那个串只能传回最多8000各字节(NVARCHAR的时候只有4000)!

唉,难道非要用ado.net或者细化业务逻辑吗?
zjcxc 2008-06-20
  • 打赏
  • 举报
回复
怎么写的? 写不进去有错误提示吗?
nzperfect 2008-06-20
  • 打赏
  • 举报
回复
如果是程序写入,可以跟踪下sql,看看传给sql server的值是否相同。
nzperfect 2008-06-20
  • 打赏
  • 举报
回复

请问是在查询分析器里直接执行sql写入,还是用程序写入呢?
angshuangxi 2008-06-20
  • 打赏
  • 举报
回复
两个表的结构肯定是一样的,就是不知道正式系统里怎么限制了varbinary(max)的最大长度
还有 两个库执行 select @@textsize 都显示的是 2147483647
执行 sp_configure 显示的 max text repl size (B) 也一模一样

22,209

社区成员

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

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