我在设置批量插入的 SP 中有此代码:
begin try
declare @sentFile nvarchar(255)
declare @bulk_cmd nvarchar(1000) = ''
declare @loadDate nvarchar(8) = Convert(nvarchar(8),@p_loadDate) -- @p_loadDate is char(8)
set @StrImportFolder = N'D:\EMVImports\'
set @sentFile = @StrImportFolder + N'etl_rnli_sent_'+ @loadDate + N'.txt'
SET @bulk_cmd = N'BULK INSERT loadSent
FROM ''' + @sentFile + N'''
WITH (
FIRSTROW = 2
,formatfile=''D:\EMVScripts\Sent_Format.xml''
)'
Print @bulk_cmd
EXECUTE sp_executesql @bulk_cmd
-- more stuff happens here
end try
在我的存储过程中,失败并出现以下错误:
无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”中获取行。
但是打印出来的代码:
BULK INSERT loadSent
FROM 'D:\EMVImports\etl_sent_20130529.txt'
WITH (
FIRSTROW = 2
,formatfile='D:\EMVScripts\Sent_Format.xml'
)
奇迹般有效。我不知道为什么它在sp_executesql
.