高手帮忙,SQL2005数据导入出错了。。。

Amely 2008-02-23 10:31:18
本地两个SQL2005数据库之间单表导入,数据大概4W条记录,操作时所有步骤成功,就是“正在复制到[test2].[dbo].[store1]”步骤时出错,
消息如下。请高手指点。谢谢。

PS:开始以为是数据量大,后面把数据删除减少到1W条记录时,错误同样。



=====错误消息如下==================================================

- 正在复制到 [test2].[dbo].[Store1] (错误)
消息
信息 0x402090df: 数据流任务: 数据插入操作的最终提交已开始。
(SQL Server 导入和导出向导)

错误 0xc0202009: 数据流任务: 出现 OLE DB 错误。错误代码: 0x80004005。
已获得 OLE DB 记录。源:“Microsoft SQL Native Client” Hresult: 0x80004005 说明:“链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].opentime' 无效的数据。 ”。
(SQL Server 导入和导出向导)

信息 0x402090e0: 数据流任务: 数据插入操作的最终提交已结束。
(SQL Server 导入和导出向导)

错误 0xc0047022: 数据流任务: 组件“目标 - Store1”(103)的 ProcessInput 方法失败,错误代码为 0xC0202009。标识的这个组件从 ProcessInput 方法返回了一个错误。虽然该错误是此组件特有的,但却是致命的,将导致数据流任务停止运行。
(SQL Server 导入和导出向导)

错误 0xc0047021: 数据流任务: 线程“WorkThread0”已退出,错误代码为 0xC0202009。
(SQL Server 导入和导出向导)


...全文
500 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnhbgjh 2008-07-31
  • 打赏
  • 举报
回复
试试,把各字段类型改为:text 导入一下,在用排除法。
中国风 2008-02-23
  • 打赏
  • 举报
回复

--创建链接服务器
exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码'

--查询示例
select * from ITSV.数据库名.dbo.表名

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV','droplogins'

--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset

--查询示例
select * from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)

--生成本地表
select * into 表 from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)

--把本地表导入远程表
insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
select *from 本地表

--更新本地表
update b
set b.列A=a.列A
from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址'
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') as a
inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset
SELECT *
FROM opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码').数据库.dbo.表名
select * from 本地表


-狙击手- 2008-02-23
  • 打赏
  • 举报
回复
---try :

在选择目标数据库时,不要使用缺省(local), 改成:机器名\实例名
老宛 2008-02-23
  • 打赏
  • 举报
回复
你可以把telphone长度设大些
老宛 2008-02-23
  • 打赏
  • 举报
回复
你就都设置成允许空。出来这个,还要注意两个表的数据类型要一致,或兼容。长度要一致。符合这几个条件,就不会不行
Amely 2008-02-23
  • 打赏
  • 举报
回复
允许空。

真是疯了。把opentime干脆删除了,原想可以好,结果telphone又出错了。

问题一模一样。

大侠没有见过个问题吗?
老宛 2008-02-23
  • 打赏
  • 举报
回复
你设置成允许null再试试
老宛 2008-02-23
  • 打赏
  • 举报
回复
是不是目标数据库的表openTime不允许null
-狙击手- 2008-02-23
  • 打赏
  • 举报
回复
错误 0xc0202009: 数据流任务: 出现 OLE DB 错误。错误代码: 0x80004005。
已获得 OLE DB 记录。源:“Microsoft SQL Native Client” Hresult: 0x80004005 说明:“链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].opentime' 无效的数据。 ”。

---
从消息上来说是这个字段有无效数据,你检查一下看看

Amely 2008-02-23
  • 打赏
  • 举报
回复
不是呀。都是字符。。
原始数据中数据格式如: 8:00-23:00  
(表示早上8点到晚上11到)
-狙击手- 2008-02-23
  • 打赏
  • 举报
回复
原始数据是varchar,你现在是导入到datatime字段中 ??
Amely 2008-02-23
  • 打赏
  • 举报
回复
opentime 是字符串,原数据可能有空值

dbcc checktable ('store1')


Store1的 DBCC 结果。
对象 'Store1' 的 1 页中有 0 行。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。



先谢谢幸福的飞石兄弟
-狙击手- 2008-02-23
  • 打赏
  • 举报
回复
opentime 这一列有什么异常?


dbcc checktable ('store1')
Amely 2008-02-23
  • 打赏
  • 举报
回复
CREATE TABLE [test2].[dbo].[store1] (
[id] int NOT NULL,
[name] varchar(100),
[userid] int,
[url] varchar(30) NOT NULL,
[pic] varchar(500),
[parent] int,
[class] int,
[son] int,
[province] int,
[city] int,
[county] int,
[address] varchar(150),
[linkman] varchar(20),
[handphone] varchar(30),
[telphone] varchar(30),
[fax] varchar(20),
[email] varchar(80),
[website] varchar(100),
[info] varchar(max),
[opentime] varchar(50),
[setting] varchar(150),
[object] varchar(150),
[scale] varchar(150),
[service] varchar(150),
[bus] varchar(150),
[consume] varchar(50),
[status] int,
[hit] int,
[edate] datetime
)
Amely 2008-02-23
  • 打赏
  • 举报
回复
CREATE TABLE [test2].[dbo].[store1] (
[id] int NOT NULL,
[name] varchar(100),
[userid] int,
[url] varchar(30) NOT NULL,
[pic] varchar(500),
[parent] int,
[class] int,
[son] int,
[province] int,
[city] int,
[county] int,
[address] varchar(150),
[linkman] varchar(20),
[handphone] varchar(30),
[telphone] varchar(30),
[fax] varchar(20),
[email] varchar(80),
[website] varchar(100),
[info] varchar(max),
[opentime] varchar(50),
[setting] varchar(150),
[object] varchar(150),
[scale] varchar(150),
[service] varchar(150),
[bus] varchar(150),
[consume] varchar(50),
[status] int,
[hit] int,
[edate] datetime
)
Amely 2008-02-23
  • 打赏
  • 举报
回复
CREATE TABLE [test2].[dbo].[store1] (
[id] int NOT NULL,
[name] varchar(100),
[userid] int,
[url] varchar(30) NOT NULL,
[pic] varchar(500),
[parent] int,
[class] int,
[son] int,
[province] int,
[city] int,
[county] int,
[address] varchar(150),
[linkman] varchar(20),
[handphone] varchar(30),
[telphone] varchar(30),
[fax] varchar(20),
[email] varchar(80),
[website] varchar(100),
[info] varchar(max),
[opentime] varchar(50),
[setting] varchar(150),
[object] varchar(150),
[scale] varchar(150),
[service] varchar(150),
[bus] varchar(150),
[consume] varchar(50),
[status] int,
[hit] int,
[edate] datetime
)
-狙击手- 2008-02-23
  • 打赏
  • 举报
回复
这个表的字段都是些什么类型呀

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧