Связанный сервер SQL Server с PostgreSQL вызывает сбой экземпляра SQL Server, если выбрано слишком много записей - PullRequest
0 голосов
/ 08 января 2019

У меня есть экземпляр SQL Server 2014, работающий на сервере Windows 2008R2. У меня также есть Postgres 11 на этом сервере. Я использовал Stack Builder для установки psqlODBC (64bit) 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

Передача данных завершается, как и ожидалось, при условии, что я выбираю менее 70 000 записей одновременно. Если я превышаю это количество, я получаю следующее сообщение:

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 умирает и должен быть перезапущен . После этого я могу запустить следующую партию из 70 000 записей или меньше.

Я много гуглил, и многие сталкивались с этой проблемой, особенно с MySQL и Oracle. Я применил все советы, которые мог найти, включая, но не ограничиваясь:

EXEC sp_configure 'remote query timeout', 0;  
RECONFIGURE WITH OVERRIDE;  
GO  

Но проблема все еще возникает. Учитывая, что у меня есть 800 миллионов записей для передачи в Postgres, это будет очень утомительно, пока я не исправлю проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...