SQL2000服务器A千万级数据表倒入SQL2008服务器B问题

时间:2022-11-20 12:42:22
如题我有2个SQL服务器,A中有表T数据量有3000万条并不断增加,现采用以下语句将T倒入B中:
insert t select * from openrowset('SQLOLEDB','web',;'user';'pwd',A.DBase.dbo.T)

出现802错误:缓冲池中的可用内存不足。



请问各位大虾如何解决,是否有其它更好的办法?

9 个解决方案

#1


使用sql 的导入导出工具

#2


右键你需要导入/导出的数据库
选择任务
选择 导入/导出

#3


谢谢回复!
但我是想建立一个事务,定期导入,不用手工操作

#4


用复制订阅,或编写一个存储过程,利用while 和 top 关键字,循环分批插入,比如每次5000行。
然后在作业中调度执行此存储过程

#5



--每次导入前,先获取B数据表B表最大记录号
declare @max int
select @max=max(id) from table B

--然后选择A数据库A表所有大于该记录号的记录导入B数据库的B表
insert into B select * from 链接服务器.A数据库.架构名.A数据表

将上述语句放在一个存储过程里,然后设置自动作业执行。
第一次初始化的时候,可以选择先导入50000条,然后执行该自动作业。

#6


不好意思写错了,应该是:

--然后选择A数据库A表所有大于该记录号的记录导入B数据库的B表
insert into B select * from 链接服务器.A数据库.架构名.A数据表 where id>@max

#7


谢谢回复,但涉及表数据是每日全部更新的,不是增量数据

#8


可以按字段分类导入吧

#9


分批导入,例如每次5000笔,或按月分批次.

#1


使用sql 的导入导出工具

#2


右键你需要导入/导出的数据库
选择任务
选择 导入/导出

#3


谢谢回复!
但我是想建立一个事务,定期导入,不用手工操作

#4


用复制订阅,或编写一个存储过程,利用while 和 top 关键字,循环分批插入,比如每次5000行。
然后在作业中调度执行此存储过程

#5



--每次导入前,先获取B数据表B表最大记录号
declare @max int
select @max=max(id) from table B

--然后选择A数据库A表所有大于该记录号的记录导入B数据库的B表
insert into B select * from 链接服务器.A数据库.架构名.A数据表

将上述语句放在一个存储过程里,然后设置自动作业执行。
第一次初始化的时候,可以选择先导入50000条,然后执行该自动作业。

#6


不好意思写错了,应该是:

--然后选择A数据库A表所有大于该记录号的记录导入B数据库的B表
insert into B select * from 链接服务器.A数据库.架构名.A数据表 where id>@max

#7


谢谢回复,但涉及表数据是每日全部更新的,不是增量数据

#8


可以按字段分类导入吧

#9


分批导入,例如每次5000笔,或按月分批次.