SQL Server的FileTable和ASP.NET:用户

时间:2017-08-17 19:58:45

标签: 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] 

不幸的是,这并没有起作用,我不断得到着名的#34;访问被拒绝错误(UnauthorizedAccessException:拒绝访问[path])。我设法让事情发挥作用的唯一方法是为我网站的应用池创建全局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

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

现在,我还没有发现任何文档提到我无法使用基于Windows帐户/身份的包含用户来处理此类情况。

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

由于

路易斯

1 个答案:

答案 0 :(得分:0)

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

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