Как включить разрешения в общей папке папок 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
Надеюсь это поможет.
Для меня, так как мой сервер является сетевым сервером, разрешение было:
- Шаг в
SQL Server Configuration Manager
- открыто
SQL Server Services
- Щелкните правой кнопкой мыши на
SQL Server (MSSQLSERVER)
и перейти к свойствам - Перейти к
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 - по сути, он становится "скрытым" каталогом, в котором вы должны знать полный путь, чтобы найти его (если, конечно, вы не догадались об этом в грубой атаке)