2

私のデータベースには、ファイルの内容をバイト単位で格納する varbinary フィールドがあります。

ファイルが大きく、すべてのコンテンツを一度に読み取るとタイムアウトになるため、チャンクを使用してデータを書き込む SQL の書き込み関数があるように、そのデータをチャンクで読み取りたいと考えています。

何かアイデアを提案してください。

ありがとう

4

2 に答える 2

1

FILESTREAMデータ型を見ましたか?

それを行う方法に関する詳細情報http://weblogs.asp.net/aghausman/archive/2009/03/16/ Saving-and-retrieving-file-using-filestream-sql-server-2008.aspx

于 2012-06-14T14:54:07.123 に答える
1

単純な 経由でこれを行うには、SELECT ...ADO.NET にドロップできます。つまりExecuteReaderCommandBehaviour.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;
}
于 2012-06-15T06:48:52.897 に答える