今天在将EXCEL表中的数据导入到SQL Server 2005中遇到了以下问题。
希望各位大哥大姐帮我看看。
操作已停止...
- 正在初始化数据流任务 (成功)
- 正在初始化连接 (成功)
- 正在设置 SQL 命令 (成功)
- 正在设置源连接 (成功)
- 正在设置目标连接 (成功)
- 正在验证 (警告)
消息
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_name”中的数据插入数据库中长度为 30 的列“scene_name”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_type”中的数据插入数据库中长度为 20 的列“scene_type”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_board”中的数据插入数据库中长度为 20 的列“scene_board”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“district_province”中的数据插入数据库中长度为 6 的列“district_province”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“dstrict_county”中的数据插入数据库中长度为 22 的列“dstrict_county”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_addr”中的数据插入数据库中长度为 50 的列“scene_addr”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_key”中的数据插入数据库中长度为 80 的列“scene_key”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x80047076: 数据流任务: 数据流任务中后来没有用过输出“Excel 源输出”(9)和组件“源 - Sheet1$”(1)的输出列“scene_build_flag ”(57)。删除此不用的输出列可以提高数据流任务的性能。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_name”中的数据插入数据库中长度为 30 的列“scene_name”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_type”中的数据插入数据库中长度为 20 的列“scene_type”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_board”中的数据插入数据库中长度为 20 的列“scene_board”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“district_province”中的数据插入数据库中长度为 6 的列“district_province”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“dstrict_county”中的数据插入数据库中长度为 22 的列“dstrict_county”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_addr”中的数据插入数据库中长度为 50 的列“scene_addr”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x802092a7: 数据流任务: 由于将数据流中长度为 255 的列“scene_key”中的数据插入数据库中长度为 80 的列“scene_key”,可能导致截断。
(SQL Server 导入和导出向导)
* 警告 0x80047076: 数据流任务: 数据流任务中后来没有用过输出“Excel 源输出”(9)和组件“源 - Sheet1$”(1)的输出列“scene_build_flag ”(57)。删除此不用的输出列可以提高数据流任务的性能。
(SQL Server 导入和导出向导)
- 准备执行 (成功)
- 执行之前 (成功)
- 正在执行 (错误)
消息
* 错误 0xc02020c5: 数据流任务: 在将列“district_number”(33)转换为列“district_number”(107)时数据转换失败。转换操作返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
(SQL Server 导入和导出向导)
* 错误 0xc020902a: 数据流任务: “输出列“district_number”(107)”由于发生截断而失败,而且针对“输出列“district_number”(107)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。
(SQL Server 导入和导出向导)
* 错误 0xc0047022: 数据流任务: SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。组件“数据转换 1”(95)的 ProcessInput 方法失败,错误代码为 0xC020902A。标识的这个组件从 ProcessInput 方法返回了一个错误。虽然该错误是此组件特有的,但却是致命的,将导致数据流任务停止运行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导入和导出向导)
* 错误 0xc0047021: 数据流任务: SSIS 错误代码 DTS_E_THREADFAILED。 线程“WorkThread0”已退出,错误代码为 0xC020902A。可能在此之前已经发出错误消息,提供了有关线程退出原因的详细信息。
(SQL Server 导入和导出向导)
- 正在复制到 [QValleyTravel_db].[dbo].[scene_info_table] (已停止)
- 执行之后 (成功)
消息
* 信息 0x402090df: 数据流任务: 数据插入操作的最终提交已开始。
(SQL Server 导入和导出向导)
* 信息 0x402090e0: 数据流任务: 数据插入操作的最终提交已结束。
(SQL Server 导入和导出向导)
- 清除 (成功)
消息
* 信息 0x4004300b: 数据流任务: “组件“目标 - scene_info_table”(62)”已写入 0 行。
(SQL Server 导入和导出向导)
10 个解决方案
#1
你插入的数据长度与你插入到表里对应列的长度不匹配 小于对应列的长度
#2
把表里对应列的长度改大点就可以了
#3
以前我也遇到过这样的现象,但有些相同的现象,其原因却不同,可能是微软定的很多很细的东西,开发的人偷懒没把东西做细吧,呵,言归正传。
你可以试着更改一下SQL的服务
打开sql server configuration Manager(SQL SERVER 配置管理器)
把SSIS(SQL SERVER Integration Service)的运行身份改成"LocalSystem"(本地)
然后重启一下服务就可以导数据了,非常郁闷。
有些系统是以"Network Service"运行的,也能正常导入数据
只供参考,不行不收费,呵
你可以试着更改一下SQL的服务
打开sql server configuration Manager(SQL SERVER 配置管理器)
把SSIS(SQL SERVER Integration Service)的运行身份改成"LocalSystem"(本地)
然后重启一下服务就可以导数据了,非常郁闷。
有些系统是以"Network Service"运行的,也能正常导入数据
只供参考,不行不收费,呵
#4
在导入前转换一下列的长度 cast(col as nvarchar(20))--在SSIS里可设置方法与2000DTS没有什么区别
#5
不设置的情况下,Excel的长度全为256
或在查询分析器的插入:
insert T(col...)
select cast(COL as nvarchar(20))......--
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=e:\test.xls',Sheet1$)
或在查询分析器的插入:
insert T(col...)
select cast(COL as nvarchar(20))......--
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=e:\test.xls',Sheet1$)
#6
对,用查询分析器
#7
多谢各位的指点,问题已经解决。确实是插入的数据长度与插入到表里对应列的长度不匹配的问题。
#8
能请问下 你最后是咋解决的么? , 我现在碰到同样的问题了, 但是我不知道这个查询咋写啊?
#9
Excel的长度全为256,看看你要导出的表字段长度是不是大过256,脚本导出的话改下字段长度,如果用DTS导出的话,把EXCEL名改成中文,比如sheet1改成查询就可以了~~
#10
路过看看 学习了
#1
你插入的数据长度与你插入到表里对应列的长度不匹配 小于对应列的长度
#2
把表里对应列的长度改大点就可以了
#3
以前我也遇到过这样的现象,但有些相同的现象,其原因却不同,可能是微软定的很多很细的东西,开发的人偷懒没把东西做细吧,呵,言归正传。
你可以试着更改一下SQL的服务
打开sql server configuration Manager(SQL SERVER 配置管理器)
把SSIS(SQL SERVER Integration Service)的运行身份改成"LocalSystem"(本地)
然后重启一下服务就可以导数据了,非常郁闷。
有些系统是以"Network Service"运行的,也能正常导入数据
只供参考,不行不收费,呵
你可以试着更改一下SQL的服务
打开sql server configuration Manager(SQL SERVER 配置管理器)
把SSIS(SQL SERVER Integration Service)的运行身份改成"LocalSystem"(本地)
然后重启一下服务就可以导数据了,非常郁闷。
有些系统是以"Network Service"运行的,也能正常导入数据
只供参考,不行不收费,呵
#4
在导入前转换一下列的长度 cast(col as nvarchar(20))--在SSIS里可设置方法与2000DTS没有什么区别
#5
不设置的情况下,Excel的长度全为256
或在查询分析器的插入:
insert T(col...)
select cast(COL as nvarchar(20))......--
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=e:\test.xls',Sheet1$)
或在查询分析器的插入:
insert T(col...)
select cast(COL as nvarchar(20))......--
FROM openrowset( 'Microsoft.Jet.OLEDB.4.0',
'EXCEL 8.0;HDR=YES;IMEX=1; DATABASE=e:\test.xls',Sheet1$)
#6
对,用查询分析器
#7
多谢各位的指点,问题已经解决。确实是插入的数据长度与插入到表里对应列的长度不匹配的问题。
#8
能请问下 你最后是咋解决的么? , 我现在碰到同样的问题了, 但是我不知道这个查询咋写啊?
#9
Excel的长度全为256,看看你要导出的表字段长度是不是大过256,脚本导出的话改下字段长度,如果用DTS导出的话,把EXCEL名改成中文,比如sheet1改成查询就可以了~~
#10
路过看看 学习了