错误 - 执行BCP命令时无法打开BCP主机文件数据

问题描述 投票:0回答:2

我正在尝试将数据从'.dat'文件复制到sql server中的表我在执行以下命令时遇到此错误:

declare @cmd varchar(100)
set @cmd = 'bcp dBFCLogging.dbo.TempBFCLogs in ' + '''D:\WorkArea\data.dat''' + ' -c -T'
exec xp_cmdshell @cmd

确切的错误消息:

SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file
NULL

我运行了一个打印命令并检查了cmd变量,看起来没问题。

bcp dBFCLogging.dbo.TempBFCLogs in 'D:\WorkArea\data.dat' -c -T

我在数据库服务器上运行此命令,因此我将此文件放在该数据库服务器上的正确路径下。我读过可能存在许可问题。所以,我已经让用户'Everyone'对该文件夹结构以及文件具有读/执行访问权限,但在执行时仍会抛出此错误。请帮忙!

sql-server-2008 file bcp
2个回答
0
投票

将“D:\ WorkArea \ data.dat”更改为"D:\\WorkArea\\data.dat"


0
投票

如果在文件名周围加上引号,则需要使用双引号,而不是单引号。你的命令应该是:

declare @cmd varchar(100);
set @cmd = 'bcp dBFCLogging.dbo.TempBFCLogs in "D:\WorkArea\data.dat" -c -T';
exec xp_cmdshell @cmd;

根据数据文件中数据格式的方式,可能还有其他问题。在某些情况下,您需要在格式文件中对此进行描述,并使用-f选项在BCP命令中引用此格式文件。

© www.soinside.com 2019 - 2024. All rights reserved.