Jak pracować z FILESTREAM. Definicja tabeli i insert.

9-Sty-2012

Aby pracować z FILESTREAM w SQL 2008 musisz włączyć tę opcję na serwerze (instancji). Jest to jedna z właściwości widoczna we właściwościach instancji w Configuration Managerze, ale możesz też użyć polecenia:

sp_configure ‚filestream access level’, 2
RECONFIGURE

Teraz baza danych powinna mieć plik typu filestream. Kiedy już te warunki są spełnione, można tworzyć tabelę przechowującą dane poprzez FILESTREAM:

CREATE TABLE x
(Id INT IDENTITY PRIMARY KEY,
 FileContent VARBINARY(MAX) FILESTREAM NULL,
 Guidcol uniqueidentifier NOT NULL ROWGUIDCOL UNIQUE DEFAULT NewID())

Uwaga na ostatnią kolumnę. Ona musi tak wyglądać. ROWGUIDCOL powoduje, że do wartości tej kolumny można się odwoływać poprzez zmienną $ROWGUID w zapytaniu. (Podobnie do wartości Id, która została zdefiniowana jako IDENTITY możesz się odwoływać poprzez $IDENTITY).

Aby wstawić rekord mozesz teraz:

INSERT x VALUES (NULL, NEWID())
lub aby rzeczywiście wstawić jakiś plik:
DECLARE @img VARBINARY(MAX)
SELECT @img=CAST(bulkcolumn AS VARBINARY(MAX)) FROM OPENROWSET(BULK ‚c:\temp\pic.bmp’, SINGLE_BLOB) AS x
INSERT x VALUES(@img,NEWID())

Pliki są teraz zapisywane w katalogu określonym dla grupy plików FILESTREAM, a ich ścieżki możesz sprawdzić wykonujac zapytanie:

SELECT *, File.PathName() FROM x

 

Linki:

http://msdn.microsoft.com/en-us/library/ms191131.aspx

http://beyondrelational.com/blogs/jacob/archive/2009/08/01/sql-server-how-to-load-data-into-a-filestream-enabled-column-using-tsql.aspx

http://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/

http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/05/09/sql-server-2008-filestream-part-1.aspx

http://msdn.microsoft.com/en-us/library/ms174979.aspx

Dodaj komentarz:

Autor: Rafał Kraik