sql server中建立了一个image字段,在查询分析器看了下有16位的长度,
2的16次方=64k,我以为只能放64k的文件,但我实际测试了一下可以存好几M的文件,这个不知道是怎么回事?另外存放10多M的文件就不行了,我用ftp存几百M都没问题。不知道image字段的长度是怎么算的,大的文件上传怎么解决,很容易出现虚拟内存过大,很慢很慢。
2的16次方=64k,我以为只能放64k的文件,但我实际测试了一下可以存好几M的文件,这个不知道是怎么回事?另外存放10多M的文件就不行了,我用ftp存几百M都没问题。不知道image字段的长度是怎么算的,大的文件上传怎么解决,很容易出现虚拟内存过大,很慢很慢。
把满足条件的text与ntext存储在数据行中(此处就不是存指针了)
exec sp_tableoption [@tablenamepattern=]'table'
,[@optionname=]'text in row'
,[@optionvalue=]'value'
@optionvalue有效值为0 off on或是24-4000的整数,
分别表示关闭text in row 功能
开启text in row 功能 value=on相当于value=256,这样可以把text或ntext数据存储在行中(非单独的数据页)
记住最大能存储2GB就可以了.
打开text in row 大概就是如果在某字段中数据小于8000字节(小于行的存储量)就不存指针,直接存数据.长度也就应该不是默认的16了
处理函数包括
TEXTPTR
返回对应于 varbinary 格式的 text、ntext 或 image 列的文本指针值。检索到的文本指针值可用于 READTEXT、WRITETEXT 和 UPDATETEXT 语句。
TEXTVALID
检查特定文本指针是否有效的 text、ntext 或 image 函数。
READTEXT
从 text、ntext 或 image 列读取 text、ntext 或 image 值,从指定的偏移量开始读取指定的字节数。
UPDATETEXT
更新现有的 text、ntext 或 image 字段。使用 UPDATETEXT 可以只更改 text、ntext 或 image 列的一部分。使用 WRITETEXT 可以更新和替换整个 text、ntext 或 image 字段。
WRITETEXT
允许对现有的 text、ntext 或 image 列执行最小日志记录的交互式更新。WRITETEXT 将覆盖受其影响的列中的所有现有数据。WRITETEXT 语句不能用于视图中的 text、ntext 和 image 列。