我想从 blob 中读取二进制数据,使用它周围的 Stream 接口。
但我不希望 Blob 必须完全加载到客户端并存储在内存或文件中。
我希望使用 blob 的代码能够查找和读取,并且仅通过网络传输支持查找/读取所需的尽可能多的数据。
即假装blob 是一个 250MB 的 Photoshop 图像。缩略图代码知道如何读取图像的前 8 个字节,识别它是 PSD 文件,寻找包含 3k 缩略图的偏移量,然后读取它。
因此,与其尝试分配 250MB 的内存,或者必须创建一个临时文件,也不必等待 250MB 通过网络传输:假设的 SQLServerBlobStreamServerCursor 类知道如何将数据流量传输到实际请求的数据。
研究
如何:通过在 ADO.NET 和 Visual Basic .NET 中使用分块读取和写入文件到 BLOB 列, 其中谈到能够以块的形式读取和写入。但是代码是不可读的被切断,我无法忍受。我稍后再看。
这个人还提到了一种新的 SQL Server 2005 [ column .Write()]3 T-SQL 语法来写入数据 -可用于以小块写入数据(以避免消耗所有服务器的内存)。也许有一个[列]。Read () 伪方法
微软有一篇文章:Conserving Resources When Writing BLOB Values to SQL Server