2010-09-02 3 views
2

Что я имею в виду - это доступ к нему через проводник Windows или другие программы. Я считаю, что ответ заключается в том, что это невозможно. Но я действительно хочу знать, почему это запрещено. Кажется, что файлы могут быть доступны только для чтения через сетевой ресурс.Возможно ли получить доступ к акции FILESTREAM?

ответ

4

Вы не можете получить доступ к файловому ресурсу напрямую и исследовать его. Любой доступ к файлу Filestream должен выполняться с использованием пути, полученного из SQL Server, и с помощью NtCreateFile (или оболочки) с соответствующим контекстом транзакции, переданным через EABuffer.

Можно создать новый общий ресурс и указать его на физическое расположение файлов, однако это довольно бессмысленно, поскольку нет способа разрешить строку SQL Filestream для физического расположения файла (обработчик драйвера RsFx обрабатывается эти преобразования внутри), местоположение файла может измениться в любое время из-за одновременных изменений обновления/раздела, и вам нужно будет отключить безопасность в папке до неприемлемого уровня. Это также может привести к сбоям в базе данных, если вы перемещаете или удаляете файлы без ведома SQL Server. Любые блокировки, хранящиеся на физических файлах, будут мешать удалению, как указано в комментарии dportas.

Я согласен, что было бы замечательно, если бы вы могли просматривать пространство имен файлов Filestream через проводник и открывать файлы непосредственно через приложения, не требуя перезаписи приложения.

+0

SQL Server 11 («Denali») включает в себя функцию FileTable, которая предоставляет возможность просматривать пространство имен файлов, хранящихся в Filestream. Существуют некоторые ограничения, но цель состоит в том, чтобы действительно открыть возможности доступа к файлам данных, хранящимся в SQL, из стандартных приложений Win32. – MikeW

1

Да, это возможно. Тем не менее, пункт filestream заключается в том, что вы получаете этот доступ через API filestream, а не напрямую через файловую систему. Имейте в виду, что имя файла может быть изменено без предупреждения - например, обновления могут привести к созданию нового файла файлового потока. Возможно, если вы держите блокировки файловой системы (даже общие блокировки) в файле, который требуется SQL Server, это может вызвать конфликтную проблему. Поэтому, если вы напрямую обращаетесь к данным через файловую систему, результаты будут неподдерживаться и могут быть ненадежными - но затем снова может Работа :-)

Смежные вопросы