私のデータベースには、ファイルの内容をバイト単位で格納する varbinary フィールドがあります。
ファイルが大きく、すべてのコンテンツを一度に読み取るとタイムアウトになるため、チャンクを使用してデータを書き込む SQL の書き込み関数があるように、そのデータをチャンクで読み取りたいと考えています。
何かアイデアを提案してください。
ありがとう
私のデータベースには、ファイルの内容をバイト単位で格納する varbinary フィールドがあります。
ファイルが大きく、すべてのコンテンツを一度に読み取るとタイムアウトになるため、チャンクを使用してデータを書き込む SQL の書き込み関数があるように、そのデータをチャンクで読み取りたいと考えています。
何かアイデアを提案してください。
ありがとう
FILESTREAM
データ型を見ましたか?
それを行う方法に関する詳細情報http://weblogs.asp.net/aghausman/archive/2009/03/16/ Saving-and-retrieving-file-using-filestream-sql-server-2008.aspx
単純な 経由でこれを行うには、SELECT ...
ADO.NET にドロップできます。つまりExecuteReader
、CommandBehaviour.SequentialAccess
フラグを指定します。メソッドを繰り返し呼び出して、シーケンシャルチャンクをバッファGetBytes
に読み込むことができるようになりました。例えば:
byte[] buffer = new byte[8040];
int bytes;
long offset = 0;
while((bytes = (int)reader.GetBytes(col, offset, buffer, 0, buffer.Length)) >0) {
// TODO: do something with `bytes` bytes from `buffer`
offset += bytes;
}