2010-10-13 94 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