Как включить разрешения в общей папке папок FileTable в SQL Server 2012?

После успешного создания FileTable я попытался просмотреть файловый ресурс, но в моих разрешениях отказано. В Management Studio, щелкнув правой кнопкой мыши на FileTable, затем "Исследовать каталог FilteTable", я получаю следующее сообщение об ошибке:

Расположение файла не может быть открыто. Либо доступ не разрешен, либо у вас нет прав на него.

Если я попытаюсь вручную добраться до общего ресурса с помощью \ mycomputer \ sqlexpress..., мне все равно будет отказано в доступе.

Это SQL Express, работающий на моей локальной машине. Я получаю доступ к этой папке с той же машины. Что мне не хватает?

4 ответа

Пользователь Windows, к которому вы пытаетесь получить доступ к файлообменнику, имеет ли SQL-сервер доступ к базе данных с файловой таблицей? Разрешения общего ресурса Windows не применяются к общим ресурсам файлового потока, поэтому убедитесь, что у вас есть разрешения в базе данных SQL.

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

Чтобы получить доступ к этим настройкам, откройте диспетчер конфигурации SQL Server, в службах сервера SQL щелкните правой кнопкой мыши службу SQL Server для своего экземпляра и выберите свойства, на вкладке файлового потока вы увидите параметры.

Следующее место, где вам нужно проверить настройки (да, вы должны включить эту функцию в 3 отдельных местах!) - это уровень доступа на самом SQL-сервере.

Откройте SQL Server Management Studio, подключитесь к своему экземпляру SQL, щелкните правой кнопкой мыши свой сервер и выберите свойства. Нажмите на расширенный раздел, и есть раздел для файлового потока, вам нужно выбрать полный доступ включен, если вы хотите использовать файл-таблицу.

Я действительно нашел эту статью после ввода всего того, что объясняет, как включить предварительные условия для файловых таблиц:

Включить предварительные условия для FileTable

Надеюсь это поможет.

Для меня, так как мой сервер является сетевым сервером, разрешение было:

  1. Шаг в SQL Server Configuration Manager
  2. открыто SQL Server Services
  3. Щелкните правой кнопкой мыши на SQL Server (MSSQLSERVER) и перейти к свойствам
  4. Перейти к FILESTREAM вкладку и убедитесь, Allow remote clients access to FILESTEAM data проверено

Другие постеры были посвящены созданию FILESTREAM.

Для просмотра и доступа к файлам в файловой таблице, VIEW DEFINTION а также SELECT разрешения потребуются как минимум. ALTER разрешение, указанное в посте dmc2005, не требуется.

Пример (предоставление доступа пользователю или группе Windows):

GRANT VIEW DEFINITION,SELECT ON FileTableName TO [MYDOMAIN\MYGROUPNAME]

Присвоение пользователю / группе одной из фиксированных ролей базы данных (например, db_datareader) не предоставит необходимые разрешения для доступа к файловому потоку. Разрешения должны быть явно предоставлены.

Можете ли вы проверить несколько вещей?

Можете ли вы через Windows Explorer попытаться перейти к каждому из следующих действий:

\\YOURCOMPUTERNAME

\\YOURCOMPUTERNAME\[FILESTREAM Share Name]\  e.g MSSQLSERVER

\\YOURCOMPUTERNAME\[FILESTREAM Share Name]\[FILESTREAM Directory Name]

\\YOURCOMPUTERNAME\[FILESTREAM Share Name]\[FILESTREAM Directory Name]\[FILETABLE Table Name]

[FILESTREAM Поделиться Имя]

  • это имя определено на уровне Server Insance при настройке доступа к FILESTREAM
  • чтобы проверить это, щелкните правой кнопкой мыши на Соединении с сервером в SSMS и выберите Свойства
  • затем посмотрите в Advanced -> FILESTREAM -> Имя общего ресурса FILESTREAM

[Имя каталога FILESTREAM]

  • это имя определено в базе данных при настройке доступа FILESTREAM
  • чтобы проверить это, щелкните правой кнопкой мыши на базе данных в SSMS и выберите Свойства
  • затем посмотрите в Опции -> FILESTREAM -> Имя каталога FILESTREAM

[FILETABLE Название таблицы]

  • Помните, что когда вы называете свою таблицу, она должна соответствовать правилам именования папок Windows (т.е. избегать специальных символов), например, "TABLE|WEIRDCHARACTER"

Примечание (1): Я обнаружил, что если вы дадите своему пользователю только разрешение "ALTER" на таблицу файловых таблиц, она будет доступна для просмотра на

\\Yourcomputer \MSSQLSERVER\FILESTREAM_DIRECTORY_NAME\

уровень, но вы на самом деле не сможете просматривать содержимое "каталога"

Примечание (2): если вы только предоставите пользователю SELECT, UPDATE, DELETE, INSERT разрешение на таблицу с файловой таблицей, вы сможете получить доступ к папке с полным путем и просматривать содержимое и действовать на них - создавать новые файлы, изменять существующие файлы

\\Yourcomputer \MSSQLSERVER\FILESTREAM_DIRECTORY_NAME\FILETABLE_NAME\

но не просматривайте его на уровне FILESTREAM_DIRECTORY_NAME - по сути, он становится "скрытым" каталогом, в котором вы должны знать полный путь, чтобы найти его (если, конечно, вы не догадались об этом в грубой атаке)

Другие вопросы по тегам