varbinary(max) フィールドのオーディオ ファイルに blob FileStream を使用するようにセットアップされたデータベースがあります。それ以来、サイズが 80GB を超えて大きくなり、パフォーマンスの問題に直面しています。
いろいろ調べてみたところ、ブロブの平均サイズは約 180k であることがわかりました。また、MSDNによると、ファイル ストリームは 1 MB を超えるオブジェクトに使用する必要があるため、これらのブロブの保存方法を再評価しています。MSDN は、「小さいオブジェクトの場合、データベースに varbinary(max) BLOB を格納すると、多くの場合、ストリーミング パフォーマンスが向上します」と述べています。そのため、ファイルストリームを使用した varbinary(max) から varbinary(max) フィールドのみを使用するように移行することを検討しています。
私の質問は、SQL スクリプトを使用して各ファイルストリーム BLOB をファイルストリームから実際の varbinary フィールド自体に移動する優れた方法はありますか? 質問する前に私が取り組んできた別の方法は、ac# アプリでデータベースに BLOB をクエリさせ、各 BLOB をファイル システムに書き込むことです。次に、ファイルストリームのものをデータベースから手動で削除します。次に、C# アプリでファイル システムから BLOB を読み取り、データベースに書き戻します。もっと簡単な方法が必要だと思いました。