15

从 SQL Server 2008 中的 varbinary(MAX) 字段(不使用 FileStreams)读取部分二进制数据的最有效方法是什么?

将数据写入列时,VarBinary.Write() 函数在 T-SQL 中可用,允许将字节增量写入字段,但似乎没有类似的函数可用于读取数据。

我知道 .Net 中的 DataReader.GetBytes() 方法将只选择您要求的字节,但这会带来性能开销吗?即 sqlserver 中的 select 是否会读取数据库中的所有字节,然后将所有这些字节提供给 getBytes() 方法以获取从它们请求的字节子集?

谢谢你的帮助。

4

2 回答 2

23

您使用SUBSTRING。这会从服务器上的 varbinary 数据中读取一个片段,并且只将该片段返回给客户端。

[SUBSTRING] 返回 SQL Server 中字符、二进制、文本或图像表达式的一部分。[it]如果表达式是受支持的二进制数据类型之一,则返回二进制数据。返回的字符串与指定表达式的类型相同,但表中显示了例外情况。

于 2009-08-17T17:00:40.433 回答
1

无需开销即可使用DataReader.GetBytes(),afaik。但是您必须ExecuteReader()使用该CommandBehavior.SequentialAccess选项调用。

于 2009-12-21T20:21:03.503 回答