Когда функция FILESTREAM активирована в Microsoft SQL Server 2012, SQL Server создаст «скрытый» общий ресурс в системе. Доля определяется следующим образом:
Sharename FILESTREAM_SHARE
Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE
Remark SQL Server FILESTREAM share
Maximum users unlimited
Users Caching Manual caching of documents
Permissions NT-AUTHORITY\Authenticated Users, FULL
Имя - это имя общего ресурса, который вы предоставляете при первоначальной настройке FILESTREAM в диспетчере конфигурации SQL Server . Но для чего это нужно?
Слишком далеко
Я прочитал всю доступную документацию FILESTREAM, начиная с:
- FILESTREAM (SQL Server)
- Включить и настроить FILESTREAM
- Создать базу данных с поддержкой FILESTREAM
- Создать таблицу для хранения данных FILESTREAM
- ... и все что связано
- Совместимость FILESTREAM с другими функциями SQL Server
- FILESTREAM DDL, функции, хранимые процедуры и представления
- Доступ к данным FILESTREAM с помощью OpenSqlFilestream
- документ SQL Server 2008 - хранилище FILESTREAM в SQL Server 2008
- и статья FILESTREAM (OLTP) --- Техническое справочное руководство по разработке критически важных решений OLTP, в котором содержится множество других материалов.
... но не было упоминания о доле и о том, что она делает или для чего она нужна. Вы вводите имя, и SQL Server создаст общий ресурс.
База данных с поддержкой FILESTREAM
Когда вы создаете базу данных с поддержкой FILESTREAM, база данных ссылается на файловую группу, которая ссылается на каталог (рекомендуется на отдельном диске), который не имеет абсолютно никакого отношения к общему ресурсу, который был изначально создан во время настройки FILESTREAM.
Скриншот сценария базы данных с поддержкой FILESTREAM
Да, я понимаю, что все пути находятся на C :; это всего лишь пример
Белая книга Пола Рэндалла и соавторов. продолжает объяснять, что ...
Данные FILESTREAM хранятся в файловой системе в наборе каталогов NTFS, называемых контейнерами данных, которые соответствуют специальным группам файлов в базе данных. Транзакционный доступ к данным FILESTREAM контролируется SQL Server и драйвером фильтра файловой системы, который устанавливается как часть включения FILESTREAM на уровне Windows. Использование драйвера фильтра файловой системы также обеспечивает удаленный доступ к данным FILESTREAM по пути UNC. SQL Server поддерживает сортировку ссылок из строк таблицы на связанные с ними файлы FILESTREAM. Это означает, что удаление или переименование любых файлов FILESTREAM непосредственно через файловую систему приведет к повреждению базы данных.
... далее по документу (стр. 14) они продолжают ...
Существует один драйвер фильтра файловой системы FILESTREAM для каждого тома NTFS, в котором имеется контейнер данных FILESTREAM, а также один для каждой версии SQL Server, в которой имеется контейнер данных FILESTREAM в томе. Каждый драйвер фильтра отвечает за управление всеми контейнерами данных FILESTREAM для этого тома для всех экземпляров, которые используют конкретную версию SQL Server.
Например, том NTFS, на котором размещены три контейнера данных FILESTREAM, по одному для каждого из трех экземпляров SQL Server 2008, будет иметь только один драйвер фильтра файловой системы FILESTREAM для SQL Server 2008.
Вопросов
- Приятно знать, что в SQL Server все хорошо и тесно связано, но что делает этот общий ресурс на самом деле? Это так называемый «драйвер фильтра файловой системы»?
- Видя, как любой аутентифицированный пользователь может получить доступ к «общему ресурсу», каковы последствия для безопасности?
- Является ли устройство RsFx0320 предшественником формата отказоустойчивой файловой системы, который был представлен в Windows Server 2012?
Если вы можете дать ответы на мои вопросы, было бы хорошо, если бы вы могли предоставить ссылку на источник.