У нас есть установка SQL Server 2012 с включенной функцией общего доступа к файлам. Затем у нас есть приложение IIS, которое может писать напрямую в общий ресурс \ localhost \ MSSQLServer ..., создаваемый базой данных.
У меня проблема в том, что чтобы заставить это работать, мне пришлось создать новую учетную запись пользователя и установить ее в качестве идентификатора пула приложений для приложения, а затем добавить этого пользователя в SQL Server и, наконец, дать этому пользователю роль системного администратора. Если я дам ему любую другую роль сервера, он не получит права записи в общий ресурс.
Наличие учетной записи пользователя пула приложений IIS с неограниченным доступом ко всему серверу SQL Server не идеально. Следовательно, есть ли способ настроить SQL Server, чтобы разрешить доступ роли с более низким уровнем привилегий к общей папке?
В общем, вы должны иметь возможность предоставить пользователю пула приложений этого веб-сайта права Insert / Delete / Update / Select для одной файловой таблицы (и любых других частей БД, к которым ему может потребоваться доступ.
Предоставление им логина "sysadmin" - это слишком далеко. При отладке в тесте вы можете попытаться предоставить пользователю для этого входа в систему роли "db_datawriter" и "db_datareader" или даже роль "db_owner" в базе данных, которая содержит таблицу файлов.
Но у вас должно получиться что-то вроде
USE [DatabaseName]
GRANT SELECT, DELETE, UPDATE, INSERT on TABLE [FiletableName] TO [DOMAIN/UserName]
или создайте роль для приложения, к которому применены все GRANT, а затем предоставьте эту новую роль вашему пользователю.
Тип таблицы FileTable не использует особую модель прав, он использует обычные механизмы прав SQL.
Наконец, убедитесь, что вы используете SQL2012 Service Pack 1, поскольку в RTM-версии есть известная ошибка безопасности. "Ошибка безопасности исправлена в SP1"