昨天也遇到了这个问题,提示内存不足,用了各种方式无果
后来发现修改下插入的写法就可以了
以前是这样写的(SQL Server 连接 Oracle):
INSERT INTO orcl239..EAS.K3_ORIGINALITYCARD(FEMPID,EVERNAME)
VALUES('20150011','张三')
后来改为这种样式:
-- 由于插入操作并不需要结果集, 为提高性能, 在openquery的查询中加入1=2条件, 以控制查询结果集
INSERT INTO openquery(orcl239, 'select FEMPID, EVERNAME from K3_ORIGINALITYCARD where 1=2')
VALUES('20150011','张三')
初步分析,可能是直接使用 INSERT 语句,使用的是 OLE DB的内存空间,且每次执行完成之后,内存都不会释放;导致数据量大了,或者执行的次数多了,就会报 OLE DB 提供程序内存不足;
改为 openquery 后,可能重新分配了一个内存空间,且在执行完成之后释放,因此不再出现 OLE DB 提供程序内存不足的报错了。