2009-07-13 19 views
47

我有一個包含image列的表的SQL Server 2000。如何使用簡單的插入語句將二進制文件數據插入到二進制SQL字段中?

如何通過指定文件的路徑將文件的二進制數據插入到該列中?

CREATE TABLE Files 
(
    FileId int, 
    FileData image 
) 
+0

MS SQL 2000中的二進制(最大值)?正如我在這個版本中記得的,二進制變量只能是固定的長度,最多可以包含8000個字節。 在我自己的項目中,我們將文件存儲在IMAGE字段中。 – 2009-07-13 17:00:10

+0

@Alex_L,只是重新檢查架構,它是圖像。 – scottm 2009-07-13 17:01:20

回答

41

如果你的意思是使用文字,你只需要創建一個二進制字符串:

insert into Files (FileId, FileData) values (1, 0x010203040506) 

,你將不得不與該領域的FileData六個字節值的記錄。


您指明要只指定文件名,你不能與SQL Server 2000(或我所知道的任何其他版本)做評論。

您需要一個CLR存儲過程來在SQL Server 2005/2008或擴展存儲過程中執行此操作(但是我會不惜一切代價避免這種情況,除非必須),然後將文件名插入數據(或返回字節字符串,但可能會很長)。


在問候只能夠從一個SP /查詢得到的數據,我會說,答案是肯定的,因爲如果你給SQL Server從文件系統讀取文件的能力的問題,什麼當你沒有通過Windows身份驗證連接時,你會做什麼,用戶是用什麼來確定權限?如果您以管理員身份運行該服務(上帝保佑),那麼您可以提升權利,這是不應該允許的。

+1

我想只指定文件名。 – scottm 2009-07-13 16:59:02

79

我相信這會在某個地方接近。

INSERT INTO Files 
(FileId, FileData) 
SELECT 1, * FROM OPENROWSET(BULK N'C:\Image.jpg', SINGLE_BLOB) rs 

一些需要注意的,在SQL Server 2005和SQL Server 2008的數據類型爲varbinary(max)上面運行。它沒有用圖像作爲數據類型進行測試。

相關問題