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, potem należy 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://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
Komentarze:
[…] Żeby FileTable (a ogólniej Filestream) mogły działać odpowiednio należy skonfigurować instancję. We właściwościach usługi SQL Server w SQL Server Configuration Manager należy ustawić FILESTREAM (patrz również tutaj) […]