我正在设置一个FileTable,允许用户快速地将一些PDF报告文件填充到数据库中,以便稍后通过intranet应用程序进行搜索(稍后构建)。整理必要的权限有点困难,我遇到了一些障碍。
首先,我已经确认我(具有sysadmin权限)可以向共享中添加和删除文件,而不会出现任何问题,因此FileTable至少是有功能的。
我向AD组添加了一个最终用户,在Server中为该组创建了一个Windows登录名,将其映射到数据库用户,并授予用户对FileTable的选择、插入、更新和删除权限。用户已从他的计算机中登录,并再次登录,以确保我将他添加到的组在auth令牌中。
他可以访问实例的基本文件共享(\\servername\FileStream),但是当他试图深入到特定于数据库的目录(\\servername\FileStream\DatabaseFileStreamDirectoryName)时,他会得到一个权限错误(“您没有访问权限.”)。如果他试图直接访问FileTable路径(\\servername\FileStream\DatabaseFileStreamDirectoryName\PDFReports),情况也是一样的。
那么,授予访问权限的正确方法是什么,以便用户能够浏览到特定数据库的共享子目录,查看FileTables的目录,并最终浏览/访问FileTables中的文件?显然,这不仅仅是数据库中的用户映射,而且在表上选择/insert/update/delete权限,到目前为止,我还没有找到关于这方面的大量清晰文档。
下面是我用来设置这个的(稍微匿名的)代码:
USE master
GO
ALTER DATABASE AppData ADD FILEGROUP FS CONTAINS FILESTREAM
ALTER DATABASE AppData ADD FILE ( NAME = N'FS', FILENAME = N'S:\Filestream\AppData\FS' ) TO FILEGROUP [FS]
ALTER DATABASE AppData SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE AppData SET FILESTREAM( DIRECTORY_NAME = N'AppData' ) WITH NO_WAIT
ALTER DATABASE AppData SET MULTI_USER
GO
USE AppData
GO
CREATE TABLE PDFReports AS FileTable WITH (FileTable_Directory = 'PDFReports')
GRANT SELECT, INSERT, UPDATE, DELETE ON PDFReports TO [MyDomain\App Operators]发布于 2015-07-21 13:48:02
我不得不进行一些猜测,但据我所知,我并没有做任何过分宽容的事情。
我从一个非特权的测试帐户开始,这个帐户是我创建的AD组的成员,我能够导航到数据库的FileStream目录(\\servername\FileStream\DatabaseFileStreamDirectoryName),但是那里什么都看不见。
所以,我首先尝试了最明显的方法:
GRANT VIEW DEFINITION ON PDFReports TO [MyDomain\App Operators]...Then击中了我正在浏览的VM中的F5,并显示了用于PDF报告的目录。我能够在那里浏览,并将一些文件复制到目录中。
所以我觉得我很好,但是如果我做了什么蠢事的话,我会很感激的。
https://dba.stackexchange.com/questions/107522
复制相似问题