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

时间:2014-06-23 05:18:12

标签: sql-server-2008 file bcp

我正在尝试将数据从'.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'对该文件夹结构以及文件具有读/执行访问权限,但在执行时仍会抛出此错误。 请帮忙!

2 个答案:

答案 0 :(得分:0)

更改" D:\ WorkArea \ data.dat "到"D:\\WorkArea\\data.dat"

答案 1 :(得分:0)

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

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

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