通过网络批量插入

Jon*_*ial 13 sql-server bulk-insert

有人可以帮我解决这些问题吗?

BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
    FIELDTERMINATOR = ' ',
    rowterminator = '\n',
    tablock
)
Run Code Online (Sandbox Code Playgroud)

错误显示,无法打开:

无法批量插入,因为无法打开文件“\SERVERNAME\FOLDERNAME\textFile.txt”。操作系统错误代码 5(访问被拒绝。)

该路径位于网络上的另一台计算机上。

Rem*_*anu 16

我将大胆地假设您使用 Windows 身份验证连接到 SQL Server。在这种情况下,您有一个 Kerberos 双跃点:一个跃点是您的客户端应用程序连接到 SQL Server,第二个跃点是 SQL Server 连接到远程\\COMPUTER01. 这种双跳属于受约束委派的限制,您最终以匿名登录的身份访问共享,因此访问被拒绝。

要解决此问题,您需要为 SQL Server 服务帐户启用约束委派。这个博客How To: SQL Server Bulk Insert with Constrained delegate (Access is Denied)有一个例子说明如何做到这一点,我真的希望如何“启用无约束委派”的步骤只是一个错字,因为无约束委派是只是普通的邪恶。

如果我抢先一步并且您使用 SQL 身份验证登录到 SQL Server,您将需要为您的 SQL 登录创建一个凭据并使用它来访问网络资源。见CREATE CREDENTIAL