MS SQL + Filestream
Для работы с хранилищем FileStream необходимо включить его на уровне сервера, создать специальную файловую группу и включить в неё файл, указав вместо имени файла желаемую директорию.
После этого в указанной директории появится заголовочный файл, директория для хранения лога и директории для хранения данных. Последние будут иметь имена вида GUID.
MS SQL Server обрабатывает данные хранилища как varbinary. Доступ к данным предоставляется в контексте транзакции, начиная с SQL Server 2008 и вне транзакции (начиная с SQL Server 2012). Данные кэшируются, не шифруются. На файловую группу, содержащую Filestream накладываются определённые ограничения:
- Данные могут быть вставлены
- Удалены или изменены с использованием стандартных T-SQL запросов или с помощью внешнего интерфейса API
- Файловая группа, содержащая Filestream, не поддерживает моментальные снимки. Но поддерживается репликация и полнотекстовый поиск
- Обеспечено резервное копирование данных, хранящихся в Filestream
FileStream и файловая система:
Данные, хранящиеся в FileStream, доступны для просмотра и редактирования внешними программами, например, программой просмотра изображений или текстовым редактором. Однако, имена файлов не имеют значимого названия, и невозможно, используя системные процедуры или представления базы данных, определить имя файла, соответствующего массиву данных.
Этот недостаток был устранён в SQL Server 2012 с введением особого типа таблиц FileTable. Начиная с SQL 2012, данные стали доступны вне контекста транзакции по виртуальному UNC-пути. FileStream не попадает под ограничения на размер данных (2Гб) и на размер базы данных (4Гб), существующий в версии SQL Express.