成功创建 FileTable 后,我尝试查看文件共享,但我的权限被拒绝。在 Management Studio 中,右键单击 FileTable 然后“探索 FilteTable 目录”给我以下错误消息:
文件位置无法打开。要么未启用访问权限,要么您没有相同的权限。
如果我尝试使用 \mycomputer\sqlexpress... 手动访问共享,我仍然被拒绝访问。
这是在我的本地机器上运行的 SQL Express。我正在从同一台机器访问这个共享。我错过了什么?
成功创建 FileTable 后,我尝试查看文件共享,但我的权限被拒绝。在 Management Studio 中,右键单击 FileTable 然后“探索 FilteTable 目录”给我以下错误消息:
文件位置无法打开。要么未启用访问权限,要么您没有相同的权限。
如果我尝试使用 \mycomputer\sqlexpress... 手动访问共享,我仍然被拒绝访问。
这是在我的本地机器上运行的 SQL Express。我正在从同一台机器访问这个共享。我错过了什么?
您尝试访问文件共享的 Windows 用户是否具有对文件表数据库的 SQL 服务器访问权限?Windows 共享权限不适用于文件流共享,因此请确保您在 SQL 数据库中具有权限。
您需要检查以确保您有权访问的其他事项是配置管理器中的设置,以确保启用 Transact-SQL 访问以及文件 I/O 访问(您还可以在此处设置客户端是否可以远程连接到共享也)。
要访问这些设置,请打开 SQL Server 配置管理器,在 SQL Server 服务中,右键单击您的实例的 SQL Server 服务并选择属性,在文件流选项卡上,您将看到选项。
您需要检查设置的下一个地方(是的,您必须在 3 个单独的地方启用此功能!)是 SQL 服务器本身的访问级别。
打开 SQL Server Management Studio,连接到您的 SQL 实例并右键单击您的服务器并选择属性。单击高级部分,有一个文件流部分,如果要使用文件表,则需要选择启用完全访问权限。
实际上,我在输入所有解释如何启用文件表的先决条件的内容后发现了这篇文章:
希望这可以帮助。
对我来说,由于我的服务器是联网服务器,因此解决方案是:
SQL Server Configuration Manager
SQL Server Services
SQL Server (MSSQLSERVER)
并转到属性FILESTREAM
选项卡并确保Allow remote clients access to FILESTEAM data
已选中你能检查几件事吗?
您能否通过 Windows 资源管理器尝试浏览以下各项:
\\YOURCOMPUTERNAME
\\YOURCOMPUTERNAME\[FILESTREAM Share Name]\ e.g MSSQLSERVER
\\YOURCOMPUTERNAME\[FILESTREAM Share Name]\[FILESTREAM Directory Name]
\\YOURCOMPUTERNAME\[FILESTREAM Share Name]\[FILESTREAM Directory Name]\[FILETABLE Table Name]
[文件流共享名称]
[FILESTREAM 目录名称]
[FILETABLE 表名]
注意(1):我发现如果您仅授予用户对 Filetable 表的“ALTER”权限,它将可以在
\\YOURCOMPUTER\MSSQLSERVER\FILESTREAM_DIRECTORY_NAME\
级别,但您实际上无法浏览“目录”的内容
注意(2):如果您只向文件表表上的用户授予 SELECT、UPDATE、DELETE、INSERT 权限,它将能够使用完整路径访问文件夹并查看内容并对其进行操作 - 创建新文件,修改现有文件文件
\\YOURCOMPUTER\MSSQLSERVER\FILESTREAM_DIRECTORY_NAME\FILETABLE_NAME\
但不要在 FILESTREAM_DIRECTORY_NAME 级别浏览它 - 它本质上变成了一个“隐藏”目录,您必须知道要找到的整个路径名(除非您在暴力攻击中猜到它)
其他海报已经处理了 FILESTREAM 的设置。
要浏览和访问文件表中的文件,VIEW DEFINTION
至少SELECT
需要权限。ALTER
不需要 dmc2005 帖子中引用的权限。
示例(授予对 Windows 用户或组的访问权限):
GRANT VIEW DEFINITION,SELECT ON FileTableName TO [MYDOMAIN\MYGROUPNAME]
将用户/组分配给固定数据库角色之一(例如 db_datareader)不会授予文件流访问所需的权限。必须明确授予权限。