我有一个SQL Server 2014
服务器上运行的Windows 2008R2
实例。我也有Postgres 11
在该服务器上运行。我使用Stack Builder安装了psqlODBC(64位)v10.02.0000-1,并且将SQL Server链接服务器配置为Postgres ODBC驱动程序。
然后,我运行以下命令将SQL Server数据库中的数据插入到Postgres数据库中具有相同布局的表中。
insert openquery([LS_PG_RAMM], 'select * from public.vehpos')
select *
from VEHPOS where idvehpos > 0 and idvehpos < 60000
order by idvehpos
如果我一次选择的记录少于7万条,数据传输将按预期完成。如果我超过该数量,则会收到以下消息:
Msg 109, Level 20, State 0, Line 6
A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - The pipe has been ended.)
SQL Server实例(服务)死亡,必须重新启动。之后,我可以运行下一批7万条以下的记录。
我在Google上搜索了很多,很多人都遇到了这个问题,特别是MySQL和Oracle。我已经应用了所有可以找到的建议,包括但不限于:
EXEC sp_configure 'remote query timeout', 0;
RECONFIGURE WITH OVERRIDE;
GO
但是问题仍然存在。鉴于我有8亿条记录要转移到Postgres,在解决问题之前,这将非常繁琐。