通过SQL Server代理运行具有BCP命令的批处理

时间:2017-12-21 10:52:39

标签: sql-server batch-file bcp sql-server-agent

当我使用以下命令运行批处理文件时

BCP "SELECT * FROM [KW_GRECOS].[dbo].[V_G076a]" queryout "G:\Bulk\V_G076a_new.bcp" -N -S localhost -T -E
BCP "[KW_GRECOS].[dbo].[hist_V_G076a]" IN "G:\Bulk\V_G076a_new.bcp" -N -S localhost -T -E -b 1000000 -h "CHECK_CONSTRAINTS"

它运行正常,但是当我从SQL Server代理中的作业执行相同的批处理时:

cmd.exe /c "E:\batch\Bulk_copy.bat"

它不起作用:

  

日期,来源,严重性,步骤ID,服务器,作业名称,步骤   名称,通知,消息,持续时间,Sql严重性,Sql消息   ID,运营商通过电子邮件发送,运营商网络已发送,运营商已分页,已尝试重试   12/21/2017 00:40:37,NightBulk,Error ,, DBSERVER,NightBulk ,,,工作   失败。用户eTour \ ITcom调用了作业。最后一步   运行是步骤1(1批量插入)。该工作被要求开始   步骤1(1批量插入)。,00:00:00,0,0 ,,,, 0 12/21/2017   00:40:37,NightBulk,Error,1,DBSERVER,NightBulk,1 Bulk insert ,, Executed   用户:DBSERVER \ ITcom。 C:\ Windows \ system32> BCP“SELECT * FROM   [KW_eTour]。[dbo]。[V_G075a]“queryout”G:\ Bulk \ _V_G075a_new.bcp“-N -S   localhost -T -E SQLState = S1000 NativeError = 0 Error =   [Microsoft] [SQL Server的ODBC驱动程序11]无法打开BCP主机   数据文件。处理退出代码1.步骤失败。,00:00:00,0,0 ,,,, 0

1 个答案:

答案 0 :(得分:0)

这是由于权限不足。
SQL Server代理服务用户无法访问文件foreach(IRfcStructure row in returnTable) { var customerNumber = row.GetString("CUSTOMERNUMBER"); }

您有以下选择:

  • 将文件移动到服务用户可以访问的位置。
  • 修改文件/文件夹的NTFS权限以允许SQL Server代理服务用户访问该文件