SQL 服务器的 FileTable 和 ASP.NET: 用户权限

SQL Server's FileTable and ASP.NET: permissions for user

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

在我的例子中,我使用的是部分包含的数据库(有本地用户),我认为我可以简单地根据现有的 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] 

不幸的是,这没有用,我一直收到 "famous" 访问被拒绝的错误(UnauthorizedAccessException:访问 [path] 被拒绝)。我设法让事情正常进行的唯一方法是为我网站的应用程序池创建一个全局 SQL 服务器登录。换句话说,我必须用如下所示的内容替换创建用户:

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

然后一切开始正常工作(不再有访问被拒绝的错误)。

现在,我还没有找到任何文档提到我不能在这种情况下使用基于 windows account/identity 的包含用户。

所以,我做错了什么吗?或者在这种情况下,我们确实需要创建全局登录?

谢谢

路易斯

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

您不能使用在选项 1 中创建的用户,因为它只会创建一个 SQL 用户,windows 无法使用该用户访问和写入文件系统。通过创建全局 SQL 用户和与之关联的登录名,应用程序池可以作为 windows 登录名登录到 SQL 服务器并正确写入文件系统。