Sql-Server

需要了解 FileTable 權限

  • July 21, 2015

我正在設置一個 FileTable 以允許使用者將一些 PDF 報告文件快速填充到數據庫中,以便以後通過 Intranet 應用程序(稍後建構)進行搜尋。整理出必要的權限有點挑戰,我遇到了一些障礙。

首先,我已經確認我(具有系統管理員權限)可以毫無問題地向共享添加和刪除文件,因此 FileTable 至少可以正常工作。

我已將最終使用者添加到 AD 組,在 SQL Server 中為該組創建了 Windows 登錄,將其映射到數據庫使用者,並授予該使用者對 FileTable 的選擇、插入、更新和刪除權限。使用者已註銷他的電腦並再次登錄以確保我將他添加到的組在身份驗證令牌中。

他可以訪問實例的基本文件流共享 ( \\servername\FileStream),但是當他嘗試更深入地訪問特定於數據庫的目錄 ( \\servername\FileStream\DatabaseFileStreamDirectoryName) 時,他會收到權限錯誤(“您沒有訪問權限…”)。如果他嘗試直接訪問 FileTable 路徑 ( \\servername\FileStream\DatabaseFileStreamDirectoryName\PDFReports),也是如此。

那麼,授予訪問權限的正確方法是什麼,以便使用者可以瀏覽到特定數據庫的共享子目錄,查看其中的 FileTables 目錄,並最終瀏覽/訪問 FileTables 中的文件?它顯然不僅僅是數據庫中的使用者映射,以及對錶的選擇/插入/更新/刪除權限,到目前為止,我還沒有找到很多明確的文件。

這是我用來設置的(稍微匿名的)程式碼:

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]

我不得不求助於一些猜測,但據我所知,我沒有做過任何過於寬容的事情。

我從一個非特權測試帳戶開始,該帳戶是我創建的 AD 組的成員,我能夠導航到數據庫的 FileStream 目錄 ( \\servername\FileStream\DatabaseFileStreamDirectoryName),但那裡什麼都看不到。

所以,我首先嘗試了最明顯的方法:

GRANT VIEW DEFINITION ON PDFReports TO [MyDomain\App Operators]

…然後在我正在瀏覽的 VM 中按 F5,PDF 報告的目錄就出現了。我能夠在那裡瀏覽,並將一些文件複製到目錄中。

所以我認為我很好,但如果我做了任何愚蠢的事情,我會很感激任何人。

引用自:https://dba.stackexchange.com/questions/107522