2016-12-30 10 views
2

В SQL Server 2016 у меня есть хранимая процедура. В этом СП я хочу, чтобы получить все данные с видом из связанного сервера (PostgreSQL), используя следующее заявление:OPENQUERY: выброс ошибки «Недостаточно памяти»: ограничить строки до тех пор, пока все не будут загружены

INSERT INTO myTable 
SELECT Field1, 
    Field2, 
    Field3, 
    ... 
FROM OPENQUERY(myServer, 'SELECT * FROM myDatabase.mySchema.myView') 

Когда я использую его, как это, я получаю следующее сообщение об ошибке после нескольких минут:

Out of memory while reading tuples.

Я изменил SELECT заявление в OPENQUERY получить только первые строки, которые 1000000 работали хорошо:

SELECT * FROM myDatabase.mySchema.myView ORDER BY Field1 LIMIT 1000000 

Теперь я не уверен, ВГ на самом практическом пути получить все данные. Я мог бы вставить первые 1000000 строк, а затем вставить следующий 1000000, используя OFFSET. Но я не думаю, что это было бы хорошим решением, поскольку я не знаю, что такое общее количество строк. Цикл будет другим способом, но я действительно не знаю, будет ли это самым простым способом добиться того, чего я хочу.

Любая помощь будет оценена по достоинству.

+0

есть первичный ключ присутствует в вашей точки зрения? –

+0

@MitchWheat Нет, к сожалению, нет первичного ключа и нет уникального столбца в представлении. –

ответ

1

Я думаю, что вы используете драйвер odbc для создания связанного sever. Это проблема с конфигурацией памяти драйвера psqlODBC.

Вы можете изменить Odbc настройки драйвера открытия ваши источники данных

Нажмите кнопку «Настройка», затем в открытых сведений об источнике данных

раздел «Параметры» выберите «Datasource»

и в открывшемся окне проверьте «use declare/fetch».

enter image description here

+0

Я использую «поставщик Microsoft OLE DB для драйверов ODBC» для подключения. Однако я не могу изменить какие-либо параметры psqlODBC на связанном сервере. –

+0

Вы создали источник данных ODBC? и вы добавили dns-сервер там, вы найдете свойство. –

+0

тоже добавлено изображение –

 Смежные вопросы

  • Нет связанных вопросов^_^