Я не знаю класса SqlFileStream для чего-либо, кроме SQL Server 2008. Я подозреваю, что это полностью из-за того, что класс SqlFileStream
специально разработан для того, чтобы "сидеть на вершине" столбец типа FILESTREAM
в SQL Server 2008.
Столбец / тип данных FILESTREAM
доступен только в SQL Server 2008 и, по существу, позволяет хранить большие объемы данных в этом столбце. Столбец FILESTREAM
на самом деле является столбцом varbinary(max)
с модификатором FILESTREAM
. По сути, это заставляет SQL Server эффективно обходить подсистему хранения RDBMS и сохранять двоичные данные непосредственно в базовой файловой системе NTFS, поддерживая целостность транзакций для этих данных с точки зрения RDBMS.
Статья MSDN гласит:
Указание атрибута FILESTREAM для
столбец varbinary (max) вызывает SQL
Сервер для хранения данных в локальном
Файловая система NTFS вместо
файл базы данных. Операторы Transact-SQL
обеспечить возможности манипулирования данными
внутри сервера и Win32 файл
системные интерфейсы обеспечивают потоковую передачу
доступ к данным.
В статье FILESTREAM в SQL Server 2008 В статье MSDN также говорится, что:
API SqlFileStream работает в
контекст транзакции SQL Server.
Но также это:
SqlFileStream наследуется от
Класс System.IO.Stream, который обеспечивает
методы чтения и записи в
потоки данных. Чтение из потока
передает данные из потока в
структура данных, такая как массив
байт. Запись передает данные из
структура данных в поток.
Предполагая, что внутри SqlFileStream работает так же, как и "болотный стандарт" FileStream
класс
Однако, пожалуй, наиболее подробные сведения о том, почему эта функциональность недоступна в предыдущих версиях SQL Server (в которых не реализован тип столбца FILESTREAM или тип «прямой-к-хранилищу»), относятся к Обзор FILESTREAM Статья MSDN, в которой говорится:
FILESTREAM интегрирует SQL Server
Database Engine с файлом NTFS
система хранения varbinary (макс)
двоичные данные больших объектов (BLOB) как
файлы в файловой системе. Transact-SQL
операторы могут вставлять, обновлять, запрашивать,
поиск и резервное копирование данных FILESTREAM.
Интерфейсы файловой системы Win32 обеспечивают
потоковый доступ к данным.
FILESTREAM использует системный кеш NT для кэширования данных файла. Это помогает
уменьшить любой эффект, который данные FILESTREAM
может иметь на Database Engine
спектакль. Буфер SQL Server
бассейн не используется; следовательно, это
память доступна для запроса
обработка.
В сущности, это говорит о том, что использование объекта SqlFileStream будет действовать почти идентично «стандартному» объекту FileStream, за исключением того, что SQL Server (для целей целостности транзакций) будет действовать как очень легкий «привратник» (или «оболочка») для вашего чтения и запись двоичных данных в базовый файл файловой системы NTFS. Так как ни одна из предыдущих версий SQL Server не предлагала такую функциональность и прямую интеграцию с базовой файловой системой NTFS, я бы сказал, что реализовать SqlFileStream против любых невозможно. версия SQL Server, предшествующая SQL Server 2008. (По крайней мере, не та, которая имеет те же функции «запись в файл, но поддерживает функции целостности транзакций СУБД»).