DTS导入失败

时间:2017-08-16 15:15:20

标签: sql-server dts

我有一张电子表格。它包含公司信息,如姓名,地址,电话,电子邮件等。我想要做的是将SQL平面导入到可以创建的表中,以便我可以对其进行一些处理。我只是使用MS SQL导入向导。我没有使用BCP。

它一直到最后并给我这个错误:

  

块引用   行动停止了......

  • 初始化数据流任务(成功)

  • 初始化连接(成功)

  • 设置SQL命令(成功)

  • 设置源连接(成功)

  • 设置目的地连接(成功)

  • 验证(成功) 消息 警告0x80049304:数据流任务1:警告:无法打开全局共享内存以与性能DLL通信;数据流性能计数器不可用。要解决此问题,请以管理员身份运行此程序包,或在系统控制台上运行。 (SQL Server导入和导出向导)

  • 准备执行(成功)

  • 预执行(成功)

  • 执行(错误) 消息 错误0xc020901c:数据流任务1:Source-crm_company $ .Outputs [Excel Source Output] .Columns [Directions] on Source - crm_company $ .Outputs [Excel Source Output]出错。返回的列状态为:"文本被截断或目标代码页中的一个或多个字符不匹配。"。 (SQL Server导入和导出向导)

错误0xc020902a:数据流任务1:"来源 - crm_company $ .Outputs [Excel来源输出] .Columns [路线]"失败,因为发生了截断,截断行处理" Source - crm_company $ .Outputs [Excel Source Output] .Columns [Directions]"指定截断失败。指定组件的指定对象上发生截断错误。  (SQL Server导入和导出向导)

  • 复制到[dbo]。[crm_company](已停止) 消息 错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 Source上的PrimeOutput方法 - crm_company $返回错误代码0xC020902A。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL Server导入和导出向导)

  • 执行后(成功) 消息 信息0x4004300b:数据流任务1:"目的地 - crm_company"写了469行。 (SQL Server导入和导出向导)

  

块引用

首先,我告诉DTS忽略任何截断错误。源字段是int或nvarchar。我编辑映射并强制它为int而不是float为所需的列。我已将默认列大小从255设置为510.对于2列,Directions和Notes,它已确定Directions是nvarchar,Notes是nvarchar(max)。我重写方向一,以便它被视为nvarchar(max),我可以看到它在运行后创建的表中。但是,当它运行时,由于上述错误,它每次都会失败。

我只想将这些数据放入表中。这就是全部。如果我先手动指定一个表并导入,它仍然是错误的。方向中最长的文本长度为978个字符,因此几乎不会很大。如果它被截断,我不在乎,我只是不想让它在需要时停止。导入有16000行,在失败之前只导入470个。

我不知道哪一行在源文件中失败了,因为奇怪的是,DTS没有按照电子表格中的顺序提取数据。去搞清楚。我尝试通过粘贴20行文本数据来覆盖DTS的愚蠢attemtps决定列格式是什么,但仍然失败。

2 个答案:

答案 0 :(得分:0)

建议:

如果您有Visual Studio BI,则开发SSIS包并:

1。)尝试为失败的行添加分支以重定向它们。您可以通过添加excel源中包含红线的路径来实现。运行包后,您可以对成功和失败的行进行一些分析。

2.。)重要的是你使用什么类型的连接SQL Server。我对本机SQL客户端有很多问题,所以我更喜欢使用ADO.NET或OLE DB连接类型。

使用向导:

3.尝试使用类型转换

4.)将文件保存到TXT然后执行ETL。

答案 1 :(得分:0)

我尝试了很多东西来解决这个问题,发现将电子表格导入Access然后导入Access to SQL会更容易。工作在5分钟内完成。