SQL Server的FileTable和ASP.NET:用户权限

Lui*_*reu 9 sql-server asp.net-mvc filetable

我正在构建一个需要通过文件共享将文件保存到文件表的应用程序.我已经设法让它工作,但我很好奇所需的解决方案.

就我而言,我使用的是部分包含的数据库(具有本地用户),我认为我可以简单地创建一个基于现有ASP.NET标识的新用户,并为其授予一些权限.

我的第一次尝试看起来像这样:

use [clip]
go
create user [IIS APPPool\Test]

GRANT INSERT on object::ImagensEditor TO [IIS APPPOOL\Test] 
GRANT SELECT on object::ImagensEditor TO [IIS APPPOOL\Test] 
GRANT UPDATE on object::ImagensEditor TO [IIS APPPOOL\Test] 
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,我一直得到"着名的"访问被拒绝错误(UnauthorizedAccessException:拒绝访问[路径]).我成功实现工作的唯一方法是为我网站的应用池创建全局SQL Server登录.换句话说,我不得不用这样的东西替换创建用户:

use master
go

CREATE login [IIS APPPOOL\Test] from windows with default_database=[clip]
GO

use [clip]
CREATE user [IIS APPPOOL\clipfrontoffice] for login [IIS APPPOOL\Test]
go
Run Code Online (Sandbox Code Playgroud)

然后一切都开始工作(没有更多的访问被拒绝错误).

现在,我还没有发现任何文档提到我不能使用基于Windows帐户/身份的包含用户来处理这种情况.

那么,我做错了什么?或者在这种情况下,我们真的需要创建全局登录吗?

谢谢

路易斯

Jam*_*ard 0

这是预期的功能,因为您需要使用集成安全性来使用文件流(因此需要具有权限的 Windows 登录才能写入底层文件系统)。

您不能使用在选项 1 中创建的用户,因为这只会创建一个 SQL 用户,Windows 无法使用该用户来访问和写入文件系统。通过创建全局 SQL 用户和与其关联的登录名,应用程序池可以像 Windows 登录名一样登录 SQL Server 并正确写入文件系统。