在SQL Server 2008中从varbinary(MAX)字段(不使用FileStreams)读取部分二进制数据的最有效方法是什么?
当向列中写入数据时,VarBinary.Write()函数在T-SQL中可用,允许以递增方式将字节写入字段,但似乎没有类似的函数可用于读取数据。 / p>
我知道.Net中的DataReader.GetBytes()方法会选择你要求的字节,但这会带来性能开销吗?即,sqlserver中的select是否会读取数据库中的所有字节,然后为所有这些字节提供getBytes()方法,以便从中获取所请求的字节子集?
感谢您的帮助。
答案 0 :(得分:18)
您使用SUBSTRING。这将从服务器上的varbinary数据中读取一个片段,并仅将片段返回给客户端。
答案 1 :(得分:1)
使用DataReader.GetBytes()
是可能的,没有开销,afaik。但是,您必须使用ExecuteReader()
选项调用CommandBehavior.SequentialAccess
。