SQL Server:如何存储二进制数据(例如Word文件)?

Den*_*s G 16 types binary-data sql-server-2008

我不是DBA,所以我不知道使用各种方法在SQL Server中存储二进制数据的好处和缺点.

  • varbinary(n) 只存储8000个字节
  • varbinary(max) 商店2 GB
  • BLOBs用于大文件,但带有"管理"开销(文件仅在数据库中引用,但实际上位于本地硬盘上)

我基本上有大约1000个文档(每年),我想存储在SQL Server 2008 R2数据库中(填充简单的ASPX表单上传,通过简单的Gridview查看下载).所有文档可能大约2MB - 8MB(Word,Excel文件).我的猜测是我应该使用MyDocuments具有以下布局的表:

MyDocuments 
    Data       varbinary(max)
    Title      varchar(255)
    ModifiedOn datetime()
    ModifiedBy varchar(100)
Run Code Online (Sandbox Code Playgroud)

我在跟踪varbinary(max)吗?或者我是否朝着错误的方向前进(例如,表现方面)?

Ase*_*tam 17

SQL Server 2008中有"FILESTREAM"存储.它允许使用SQL Server 2008和NTFS文件系统的组合存储和有效访问BLOB数据.

你可以看看这些:

使用FileStream SQL Server 2008保存和检索文件的SQL Server 2008中的FILESTREAM存储

编辑:
小于256K的对象最好存储在数据库中,而大于1M的对象最好存储在文件系统中.

表现:Varbinary与FILESTREAM

http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
BLOB或不BLOB:数据库或文件系统中的大对象存储
SQL Server 2008 FILESTREAM性能

  • @moontear:FILESTREAM是`VARBINARY(MAX)`的附加属性 - 它不是**单独的数据类型.... (13认同)