有人可以帮我解决这些吗?
BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
FIELDTERMINATOR = ' ',
rowterminator = '\n',
tablock
)
错误显示,无法打开:
无法批量插入,因为无法打开文件 '\SERVERNAME\FOLDERNAME\textFile.txt'。操作系统错误代码 5(访问被拒绝。)
该路径位于网络上的另一台计算机上。
我将做出一个信念的飞跃,并假设您使用 Windows 身份验证连接到 SQL Server。在这种情况下,您有一个 Kerberos 双跃点:一个跃点是您的客户端应用程序连接到 SQL Server,第二个跃点是 SQL Server 连接到远程
\\COMPUTER01
. 这样的双跳受到约束委派的限制,您最终以匿名登录的身份访问共享,因此访问被拒绝。要解决此问题,您需要为 SQL Server 服务帐户启用约束委派。这个博客How To: SQL Server Bulk Insert with Constrained Delegation (Access is Denied)有一个例子说明如何做到这一点,我真的希望关于如何“启用无约束委派”的步骤只是一个错字,因为无约束委派是只是单纯的邪恶。
如果我抢先一步,而您正在使用 SQL 身份验证登录到 SQL Server,您将需要为您的 SQL 登录创建一个凭据,并使用它来访问网络资源。见
CREATE CREDENTIAL
。我将在 SQL 登录(具有 bulkadmin 权限)下运行脚本,并让网络文件夹的权限针对 SQL 服务帐户或 SQL Server 代理帐户进行身份验证。
Sql Server 试图打开文件,文件服务器告诉它“访问被拒绝”,因为运行 SQL Server 的帐户没有打开文件的权限。相应地更改文件上的安全设置,它将起作用。
每次收到此消息时,我都会告诉您什么对我有用。我在记事本中将 csv 文件作为文本打开并删除文件中的所有空格行,我在 excel 文件中看不到那些空白行。通常它只是似乎出现的最后一行,即使它是空的