SQL Server-批量插入错误7301

时间:2018-08-03 09:53:43

标签: sql-server file-io sql-server-2016 bulkinsert

使用SQL Server 2016,我正在一个旧系统上工作,该系统要求每晚导入才能通过批量插入运行。我知道SSIS是更好的选择,但我无法使用。

我正在使用以下命令从本地计算机上载文件:

BULK INSERT DataImports.staging_Companies
FROM 'D:\xxxxx\companies_20180802093057.txt'
WITH (BATCHSIZE = 1000
,     DATAFILETYPE = 'char'
,     FIRSTROW = 2
,     FIELDTERMINATOR = '   ' -- Tab Character here
,     ROWTERMINATOR = '\n'
,     ERRORFILE = 'D:\xxxxx\company_errors.txt');

没有使用任何格式文件,并且由于我们的动态处理,我们将无法使用其中一个格式文件。上传文件时出现以下错误:

  

消息7301,第16级,状态2,第4行
  无法从OLE DB提供程序“ BULK”获得链接服务器“(空)”的必需接口(“ IID_IColumnsInfo”)。

对此的普遍看法是,行/行终止符存在问题。这里不是这种情况。问题似乎与文件大小或行数有关。导入最多可以处理2482行,但可以覆盖2483行。通过四处移动行,我排除了数据本身的错误。

一旦超过文件大小/行数,该命令将根本不运行。我在目标表和批处理大小中添加了一个触发器,对于较小的大小,看到的结果,对于较大的大小,根本没有。

由此,我想知道是否有什么原因导致读取文件时出现中断,并在一行的一半处将其切断?我已经使用并维护了该系统一段时间,从行数和数据大小两方面看,以前处理过的文件要大得多。

更新:

刚刚将此文件传输到我的本地计算机上,并在我的测试数据库(SQL2017)上运行了导入。批量插入运行正常,没有错误。我的本地版本14.0.1000.169,客户端服务器13.0.1601.5。

还在另一台2016 Server(13.0.4474.0)上进行了测试,并且运行良好。服务器设置中是否有任何可能导致此问题的问题?甚至是来自主文件系统的东西?现在正在抓着稻草。

任何想法都深表感谢。

0 个答案:

没有答案