2010-10-13 68 views
0

亲爱的所有 如何插入媒体文件,如* .mepeg或* .MP3,在..... SQL Server文件插入媒体文件

+3

什么版本的SQL Server? 2008年添加了FileStream,这是一种将文件系统和数据库进行存储的混合体。否则,您需要存储二进制数据,通常在数据库中称为BLOB ... – 2010-10-13 18:09:10

回答

0
USE pubs 
CREATE TABLE mycustomertable 
(
user_login DEFAULT SUSER_SID, 
data_value 
) 

INSERT mycustomertable (data_value) 
    VALUES (0x4F) 

http://en.allexperts.com/q/MS-SQL-1450/Binary-Data.htm

+0

如果您发布代码或XML,请**在文本编辑器中突出显示这些行,然后单击“代码”按钮(101 010)在编辑器工具栏上进行良好的格式化和语法突出显示! – 2010-10-13 19:09:48

0

我倾向于同意@JoshD,但是如果你要必须在数据库中存储二进制文件如数字视频/音频,SQL Server提供了the varbinary datatype

请注意,此类型的默认最大长度为8000字节 - 可能没有足够的平均音频/视频文件存储容量。注意使用的varbinary(max)为比8K极限更大的数据:

max指示最大存储 大小为2^31-1字节。

+2

如果有问题的数据库有DBA(例如,在您的工作地点),那么您将无限期地与他/她讨论使用varbinary并突破8K限制的问题。这应该没问题,但那是由该系统的负责人管理的。 – David 2010-10-13 18:08:21

+0

@David同意!再说一遍,我几乎不推荐上述方法来存储其他地方的大文件,但了解它的存在很有用。 :) – 2010-10-13 18:09:42

5

研究表明,如果对象 比上 平均一兆字节大,NTFS有着明显的优势 在SQL Server中。如果对象是在256千字节以下的 ,则数据库具有 的明显优势。在此范围内,它取决于系统中的写入密集型工作负载以及典型副本的存储时间。

有这个简单的话题更多的问题,当一个人开始考虑高可用性和灾难恢复能力的要求,需要有一个一致的备份恢复策略,媒体是否通过HTTP接口访问的问题从数据库返回内容的URL的处理开销,等等。

但要回答这个天真的问题:将媒体文件作为VARBINARY(MAX)列存储在数据库中。你在客户端操作它们为SqlBinary类型。在处理大型BLOB时,必须使用流式语义,如使用CommandBehavior.SequentialAccess(如Retrieving Large Data (ADO.NET)中所述)。如果需要Win32 API访问,则必须使用FILESTREAM类型。有关该主题的更多阅读材料,样本号为SQL Server Binary and Large-Value Data (ADO.NET)

哦,在我忘记之前:您还需要列来存储文件元数据,如其名称和类型。如果媒体通过HTTP响应进行流式传输,则需要添加content-dispositioncontent-type标头。

+0

+1为非常全面的答案! – 2010-10-13 18:39:04