Dot-Net

SQL Server Varbinary(max):從 varbinary 欄位中選擇字節子集

  • February 11, 2021

從 SQL Server 2008 中的 varbinary(MAX) 欄位(不使用 FileStreams)讀取部分二進制數據的最有效方法是什麼?

將數據寫入列時,VarBinary.Write() 函式在 T-SQL 中可用,允許將字節增量寫入欄位,但似乎沒有類似的函式可用於讀取數據。

我知道 .Net 中的 DataReader.GetBytes() 方法將只選擇您要求的字節,但這會帶來性能成本嗎?即 sqlserver 中的 select 是否會讀取數據庫中的所有字節,然後將所有這些字節提供給 getBytes() 方法以獲取從它們請求的字節子集?

謝謝你的幫助。

您使用SUBSTRING。這會從伺服器上的 varbinary 數據中讀取一個片段,並且只將該片段返回給客戶端。

$$ SUBSTRING $$返回 SQL Server 中字元、二進制、文本或圖像表達式的一部分。$$ it $$ *如果表達式是受支持的二進制數據類型之一,則返回二進制數據。*返回的字元串與指定表達式的類型相同,但表中顯示了例外情況。

無需成本即可使用DataReader.GetBytes(),afaik。但是您必須ExecuteReader()使用該CommandBehavior.SequentialAccess選項呼叫。

引用自:https://stackoverflow.com/questions/1288885