FileStream (FileStream)

Перейти к навигации Перейти к поиску

FileStream — хранилище данных, позволяющее связать MS SQL Server и файловую систему. Позволяет хранить данные на NTFS диске и управлять ими, используя движок базы данных. К данным предоставляется потоковый доступ. FileStream впервые появился в MS SQL 2008, доступен во всех изданиях, включая Express[1] .

Для работы с хранилищем FileStream необходимо включить его на уровне сервера, создать специальную файловую группу и включить в неё файл, указав вместо имени файла желаемый каталог.

После этого в указанном каталоге появится заголовочный файл, каталог для хранения журнала и каталоги для хранения данных. Последние будут иметь имена вида GUID[2].

FileStream и MSSQL Server

[править | править код]

MS SQL Server обрабатывает данные хранилища как varbinary(max). Доступ к данным предоставляется в контексте транзакции, начиная с SQL Server 2008 и вне транзакции (начиная с SQL Server 2012). Данные кэшируются, не шифруются. На файловую группу, содержащую Filestream, накладываются определённые ограничения[3]. Данные могут быть вставлены[4], удалены или изменены с использованием стандартных T-SQL запросов или с помощью внешнего интерфейса API[5]. Файловая группа, содержащая Filestream, не поддерживает моментальные снимки. Поддерживается репликация и полнотекстовый поиск.[6]. Обеспечено резервное копирование данных, хранящихся в Filestream[7].

FileStream и файловая система

[править | править код]

Данные, хранящиеся в FileStream доступны для просмотра и редактирования внешними программами, например, программой просмотра изображений или текстовым редактором. Однако, имена файлов не имеют значимого названия, и невозможно, используя системные процедуры или представления базы данных, определить имя файла, соответствующего массиву данных.

пример именования файлов, содержащих данные FileStream

Этот недостаток был устранён в SQL Server 2012 с введением особого типа таблиц FileTable. Начиная с SQL 2012, данные стали доступны вне контекста транзакции по виртуальному UNC-пути[8].

FileStream не попадает под ограничения на размер данных (2 ГБ) и на размер базы данных (4 ГБ), существующий в версии SQL Express.

Литература

[править | править код]
  • Jacob Sebastian, Sven Aelterman. The Art of SQL Server FILESTREAM (англ.). — Redgate[англ.], 2012. — 487 p. — ISBN 978-1-906434-88-5.

Примечания

[править | править код]
  1. Sebastian, Aelterman, 2012, p. 19.
  2. Sebastian, Aelterman, 2012, p. 62.
  3. Общие сведения о FILESTREAM. Дата обращения: 5 июня 2012. Архивировано 3 февраля 2013 года.
  4. Appending Data Using SQL 2008 Filestream — Microsoft SQLCAT ISV Program Management Team — Site Home — MSDN Blogs. Дата обращения: 6 июня 2012. Архивировано 28 апреля 2014 года.
  5. Using FILESTREAM to Store BLOBs in the NTFS File System in SQL Server 2008. Дата обращения: 6 июня 2012. Архивировано 20 июня 2012 года.
  6. http://msdn.microsoft.com/ru-ru/library/bb895334%28v=sql.105%29.aspx Архивная копия от 5 февраля 2013 на Wayback Machine 2
  7. How to Backup and Restore a SQL Server FILESTREAM Enabled Database. Дата обращения: 6 июня 2012. Архивировано 20 июня 2012 года.
  8. Sebastian, Aelterman, 2012, p. 387.