web-dev-qa-db-ja.com

SQL Server:バイナリデータ(Wordファイルなど)の保存方法

私はDBAではないので、SQL Serverにバイナリデータを格納するさまざまな方法を使用することのメリットとデメリットを知りません。

  • varbinary(n)は8000バイトのみを格納します
  • varbinary(max)は2 GBを保存します
  • BLOBsは大きなファイルを対象としていますが、「管理上の」オーバーヘッドが発生します(ファイルはDBでのみ参照されますが、実際にはローカルハードディスクにあります)。

私は基本的にSQL Server 2008 R2データベースに保存したい(年間で約1000の)ドキュメントを持っています(単純なASPXフォームのアップロードで埋められ、ダウンロードされた単純なGridviewで表示されます)。すべてのドキュメントはおそらく2MB〜8MB(Word、Excelファイル)になります。私のguessは、次のレイアウトでテーブルMyDocumentsを使用する必要があることです。

_MyDocuments 
    Data       varbinary(max)
    Title      varchar(255)
    ModifiedOn datetime()
    ModifiedBy varchar(100)
_

私はvarbinary(max)で順調ですか?または、私は間違った方向に進んでいますか(たとえば、パフォーマンスに関して)?

17
Dennis G

SQL Server 2008には「FILESTREAM」ストレージがあります。これにより、SQL Server 2008とNTFSファイルシステムの組み合わせを使用して、BLOBデータのストレージと効率的なアクセスが可能になります。

あなたはこれらをチェックすることができます:

SQL Server 2008のFILESTREAMストレージ
FileStream SQL Server 2008を使用したファイルの保存と取得

編集:
256K未満のオブジェクトはデータベースに保存するのが最適ですが、1Mより大きいオブジェクトはファイルシステムに保存するのが最適です。

パフォーマンス:VarbinaryとFILESTREAM

http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
BLOBへまたはBLOBへの変換:データベースまたはファイルシステムでのラージオブジェクトストレージ
SQL Server 2008 FILESTREAMパフォーマンス

18
Aseem Gautam