尽管具有完全访问权限,SQL Server 通过 UNC 路径批量插入仍失败

尽管具有完全访问权限,SQL Server 通过 UNC 路径批量插入仍失败

我有 2 台机器(win2012r2 上的客户端,win2016 上的 sql server),它们都不属于域。客户端机器有一个共享,每个人都可以访问。我使用 SQL Server 身份验证。我可以从 SQL server 浏览共享

我有一个尝试执行批量插入的应用程序,但它抱怨批量插入在访问共享时遇到错误代码 1326(用户名或密码不正确)。

这对我来说毫无意义;访问文件不需要密码,所以怎么会不正确呢?我还尝试将应用程序配置为上传到 SQL Server 上的共享,并使用本地路径进行批量插入,但这会在批量插入期间触发拒绝访问。

答案1

Sean 和 Tim 在评论中说了什么。如果您的 SQL Server(我将其称为 SQLServer2016)作为本地系统运行,则它将以计算机帐户(我将其称为 $SQLServer2016)的身份访问共享。

您的共享可供所有人使用。EVERYONE 是一个内置组,包括经过身份验证的用户(另一个内置组,包括该计算机上拥有帐户的所有人)和 Guest。Guest 是一个内置帐户,适用于在存放您共享的机器上有一个帐户,我将其称为 Fileserver2012R2。

根据定义,SQLServer2016 的系统帐户 $SQLServer2016 不是有效的 Fileserver2012R2 帐户。SQLServer2016 将通过 Guest 帐户访问 Fileserver2012R2 上的共享。

我的猜测是 Fileserver2012R2 上的 Guest 被禁用了。

答案2

在 BCP 期间我曾多次遇到此问题。我通常将文件放在驱动器的 C:\ 根目录(在 SQL Server 计算机上),并且每次都能正常工作,即使我在远程计算机上运行 bCP。这可能与 BCP 实用程序在不同的用户或帐户下运行有关。在最新版本的 Windows 中,我在从共享网络文件夹读取和写入时遇到了很多问题。

相关内容