原贴地址:http://community.youkuaiyun.com/Expert/topic/3798/3798231.xml?temp=.9782984
在SQLServer中建了一个Link(name=XXLink)把相应数据导入倒Oracle数据库中,具体INSERT语句如下:
INSERT INTO openquery(XXLink,'SELECT col1,col2,col3 FROM TableInOracle')
SELECT col1,col2,col3 FROM TableInSQLServer
WHERE .......
以前一直可以的正常执行的,从近来某一天开始,就不能搞定,报如下错误
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDAORA' reported an error. The provider ran out of memory.
[OLE/DB provider returned message: Out of memory.]
OLE DB error trace [OLE/DB Provider 'MSDAORA' IRowsetChange::InsertRow returned 0x8007000e: The provider ran out of memory.].
开始就重启SQLServer或重启服务器之后都有可能保证正常执行,但是无法根本解决
处理办法:添加启动参数 -g (例如使用-g384)
联机帮助对-g参数的解释:
以兆字节为单位指定虚拟地址空间大小,SQL Server 将为 SQL Server 进程内的内存分配保留这一部分地址空间,但将其置于 SQL Server 内存池之外。这一区域由 SQL Server 用来装载诸如扩展过程 .dll 文件、分布式查询