为 BULK INSERT 配置无约束委派

Muh*_*gen 12 authentication sql-server availability-groups sql-server-2016 bulk-insert

我在 Always On 可用性组中有一对 Microsoft SQL Server 2016 节点。我正在尝试对BULK INSERT位于 Windows Server 2016 文件服务器故障转移群集上的文件执行(使用 SQL Server 2016 Management Studio 查询),但出现以下错误:

消息 4861,级别 16,状态 1
无法批量加载,因为无法打开文件“\nas2.my.domain\Microsoft SQL Server 2016 Enterprise\test.txt”。操作系统错误代码 5(访问被拒绝。)。

无论我使用活动节点名称 ( nas2.my.domain) 还是故障转移群集侦听器 ( nas.my.domain),都会发生这种情况。

环顾四周后,我发现这是由于 SQL Server 由于与BULK INSERT.

如果您使用 Windows 身份验证连接到 SQL Server,则 SQL Server 服务帐户在连接到文件服务器时会尝试模拟您的用户帐户。如果您使用 SQL Server 身份验证进行连接,它将以 SQL Server 服务帐户的身份连接到文件服务器。

如果委派和模拟配置不正确(默认状态),SQL Server 服务将无法模拟您的用户帐户,并将退回尝试以匿名用户身份连接到文件服务器。

这可以通过查看文件服务器上的安全事件日志来确认。这些事实以及有关配置无约束和约束委派的指南记录在以下链接中:

我已经尝试按照thesqldude的指南中的说明进行操作,但它仍然无法正常工作。

我尝试使用的数据库BULK INSERT不是可用性组的一部分,因此只有 MSSQL1 节点应该相关。文件服务器在 NAS2 节点上处于活动状态。检查文件服务器上的事件日志确实表明它仍然存在此问题,并且 SQL Server 正在尝试以匿名用户身份对文件服务器进行身份验证,而不是模拟我的用户帐户。

有谁知道出了什么问题?或者,如果 SQL Server 2016 中的某些更改使这些指南过时了?

我可以确认此 GPO 已通过 应用到 MSSQL1 gpresult.exe /R,然后重新启动 SQL 和文件服务器节点以确保已刷新所有缓存。

小智 0

根据我的委派经验,SQL Server 服务帐户需要适当的权限才能代表您尝试访问的共享。您调整了这些权限吗?我认为只读就足够了。