DTS 导入失败
DTS Import failing
我有一个电子表格。它包含公司信息,例如名称、地址、phone、电子邮件等。我想做的就是将 SQL 平面导入到它可以创建的 table 中,这样我就可以做一些对其进行处理。我只是在使用 MS SQL 导入向导。我没有使用 BCP。
它一直走到最后,给我这个错误:
Blockquote
Operation stopped...
正在初始化数据流任务(成功)
正在初始化连接(成功)
设置SQL命令(成功)
设置源连接(成功)
设置目标连接(成功)
正在验证(成功)
讯息
警告 0x80049304:数据流任务 1:警告:无法打开全局共享内存以与性能 DLL 通信;数据流性能计数器不可用。要解决,运行 这个包以管理员身份,或者在系统的控制台上。
(SQL 服务器导入和导出向导)
准备执行(成功)
预执行(成功)
正在执行(错误)
讯息
错误 0xc020901c:数据流任务 1:源 - crm_company$.Outputs[Excel 源输出].Columns[Directions] 在源 - crm_company$.Outputs[Excel源输出]。返回的列状态为:"Text was truncated or one or more characters had no match in the target code page."。
(SQL 服务器导入和导出向导)
错误 0xc020902a:数据流任务 1:"Source - crm_company$.Outputs[Excel Source Output].Columns[Directions]" 失败,因为发生了 t运行cation,并且 "Source - crm_company$.Outputs[Excel Source Output].Columns[Directions]" 上的 t运行cation 行配置指定失败t运行阳离子。指定组件的指定对象发生 t运行cation 错误。
(SQL 服务器导入和导出向导)
正在复制到 [dbo].[crm_company](已停止)
讯息
错误 0xc0047038:数据流任务 1:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 Source - crm_company$ 上的 PrimeOutput 方法返回错误代码 0xC020902A。当管道引擎调用 PrimeOutput() 时,该组件返回了一个失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
(SQL 服务器导入和导出向导)
Post-执行(成功)
讯息
信息 0x4004300b:数据流任务 1:"Destination - crm_company" 写入了 469 行。
(SQL 服务器导入和导出向导)
Blockquote
首先,我已经告诉 DTS 忽略任何 t运行cation 错误。源字段是 int 或 nvarchar。我编辑映射并将所需列强制为 int 而不是 float。我已将默认列大小从 255 设置为 510。对于 2 列,方向和注释,它已确定方向为 nvarchar,注释为 nvarchar(max)。我覆盖了 Directions 一个,以便将其视为 nvarchar(max),我可以在 table 中看到它在 运行 之后创建。但是,当它 运行s 时,它每次都会因上述错误而失败。
我只是想把这个数据变成table。就这样。如果我先手动指定一个 table 并导入,它仍然会出错。 Directions 中最长的文本有 978 个字符,所以它并不大。我不在乎它是否满足 运行,我只是不想让它在需要时停止。有 16000 行导入,只有 470 行导入失败。
我不知道源文件中哪一行没有通过,因为奇怪的是,DTS 没有按照数据在电子表格中的顺序提取数据。去搞清楚。我试图通过插入 20 行文本数据来覆盖 DTS 在决定列格式时的愚蠢尝试,但仍然失败。
建议:
如果您有 Visual Studio BI,则开发一个 SSIS 包并且:
1.) 尝试为失败的行添加一个分支以重定向这些行。您可以通过从 excel 来源添加一条带有红线的路线来做到这一点。 运行打包后,可以对成功和失败的行进行一些分析。
2.) 重要的是您为 SQL 服务器使用什么类型的连接。我的原生 SQL 客户端有很多问题,所以我更喜欢使用 ADO.NET 或 OLE DB 连接类型。
使用向导:
3.) 尝试使用类型转换
4.) 将文件保存到 TXT,然后进行 ETL。
我尝试了很多方法来解决这个问题,发现将电子表格导入 Access,然后将 Access 导入 SQL 会容易得多。 5 分钟内完成作业。
我有一个电子表格。它包含公司信息,例如名称、地址、phone、电子邮件等。我想做的就是将 SQL 平面导入到它可以创建的 table 中,这样我就可以做一些对其进行处理。我只是在使用 MS SQL 导入向导。我没有使用 BCP。
它一直走到最后,给我这个错误:
Blockquote Operation stopped...
正在初始化数据流任务(成功)
正在初始化连接(成功)
设置SQL命令(成功)
设置源连接(成功)
设置目标连接(成功)
正在验证(成功) 讯息 警告 0x80049304:数据流任务 1:警告:无法打开全局共享内存以与性能 DLL 通信;数据流性能计数器不可用。要解决,运行 这个包以管理员身份,或者在系统的控制台上。 (SQL 服务器导入和导出向导)
准备执行(成功)
预执行(成功)
正在执行(错误) 讯息 错误 0xc020901c:数据流任务 1:源 - crm_company$.Outputs[Excel 源输出].Columns[Directions] 在源 - crm_company$.Outputs[Excel源输出]。返回的列状态为:"Text was truncated or one or more characters had no match in the target code page."。 (SQL 服务器导入和导出向导)
错误 0xc020902a:数据流任务 1:"Source - crm_company$.Outputs[Excel Source Output].Columns[Directions]" 失败,因为发生了 t运行cation,并且 "Source - crm_company$.Outputs[Excel Source Output].Columns[Directions]" 上的 t运行cation 行配置指定失败t运行阳离子。指定组件的指定对象发生 t运行cation 错误。 (SQL 服务器导入和导出向导)
正在复制到 [dbo].[crm_company](已停止) 讯息 错误 0xc0047038:数据流任务 1:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 Source - crm_company$ 上的 PrimeOutput 方法返回错误代码 0xC020902A。当管道引擎调用 PrimeOutput() 时,该组件返回了一个失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL 服务器导入和导出向导)
Post-执行(成功) 讯息 信息 0x4004300b:数据流任务 1:"Destination - crm_company" 写入了 469 行。 (SQL 服务器导入和导出向导)
Blockquote
首先,我已经告诉 DTS 忽略任何 t运行cation 错误。源字段是 int 或 nvarchar。我编辑映射并将所需列强制为 int 而不是 float。我已将默认列大小从 255 设置为 510。对于 2 列,方向和注释,它已确定方向为 nvarchar,注释为 nvarchar(max)。我覆盖了 Directions 一个,以便将其视为 nvarchar(max),我可以在 table 中看到它在 运行 之后创建。但是,当它 运行s 时,它每次都会因上述错误而失败。
我只是想把这个数据变成table。就这样。如果我先手动指定一个 table 并导入,它仍然会出错。 Directions 中最长的文本有 978 个字符,所以它并不大。我不在乎它是否满足 运行,我只是不想让它在需要时停止。有 16000 行导入,只有 470 行导入失败。
我不知道源文件中哪一行没有通过,因为奇怪的是,DTS 没有按照数据在电子表格中的顺序提取数据。去搞清楚。我试图通过插入 20 行文本数据来覆盖 DTS 在决定列格式时的愚蠢尝试,但仍然失败。
建议:
如果您有 Visual Studio BI,则开发一个 SSIS 包并且:
1.) 尝试为失败的行添加一个分支以重定向这些行。您可以通过从 excel 来源添加一条带有红线的路线来做到这一点。 运行打包后,可以对成功和失败的行进行一些分析。
2.) 重要的是您为 SQL 服务器使用什么类型的连接。我的原生 SQL 客户端有很多问题,所以我更喜欢使用 ADO.NET 或 OLE DB 连接类型。
使用向导:
3.) 尝试使用类型转换
4.) 将文件保存到 TXT,然后进行 ETL。
我尝试了很多方法来解决这个问题,发现将电子表格导入 Access,然后将 Access 导入 SQL 会容易得多。 5 分钟内完成作业。