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笔,或按月分批次.