powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка при INSERT в LinkServer postgres длинной строки
19 сообщений из 19, страница 1 из 1
Ошибка при INSERT в LinkServer postgres длинной строки
    #40082978
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
К серверу Microsoft SQL Server 2012(x64) подключен сервер Postgres. Драйвер - PostgreSQL35W
Если поможет то вот с такими параметрами Server=;database=;ReadOnly=0;Protocol=7.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0;ConnSettings=;Fetch=100;Socket=4096;UnknownSizes=0;MaxVarcharSize=255;MaxLongVarcharSize=2000000;Debug=0;CommLog=0;Optimizer=0;Ksqo=1;UseDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVarchar=1;BoolsAsChar=1;Parse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;LFConversion=1;UpdatableCursors=1;DisallowPremature=0;TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=0;UseServerSidePrepare=1;LowerCaseIdentifier=0;GssAuthUseGSS=0;XaOpt=1

Когда делаю INSERT небольших данных, то всё нормально.
Как только размер данных более 4000, то получаю в SQL Символьные или двоичные данные могут быть усечены.
В логе PostgreSQL35W - сообщение 'The buffer was too small for the GetData.'
Поле в табл. PG типа TEXT.

Можно как-то решить эту проблему?
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40082996
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на ограничение nvarchar(4000)
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40082998
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как выглядит insert?
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083016
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

Код: sql
1.
2.
3.
4.
5.
6.
  INSERT INTO POSTGRESQL_buf.dbx.[public].rpt_xml --
      (rpt_guid, rpt_xml, rpt_cmp_guid)
    SELECT _GUID
          ,_varMAX
          ,PK_GUID
 from table
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083075
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619
Ролг Хупин,

Код: sql
1.
2.
3.
4.
5.
6.
  INSERT INTO POSTGRESQL_buf.dbx.[public].rpt_xml --
      (rpt_guid, rpt_xml, rpt_cmp_guid)
    SELECT _GUID
          ,_varMAX
          ,PK_GUID
 from table



Вот и считайте, как написал выше коллега, где у вас перебор.

Кроме того,там еще ОЛЕДБ провайдер посреди дороги ('The buffer was too small for the GetData.'), т.е.
SQL Server->OLEDB Provider->PostgreSQL Server

Если идут большие данные с SQL Server, то какой размер буфера в оледб провайдере, как его изменить, это вам виднее, смотрите в коде.
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083099
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

К сожалению все параметры, что я знал , увеличил.
Вот поэтому и обращаюсь в форум.
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083101
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619,

Какие типы столбцов вернет
Код: sql
1.
exec sys.sp_describe_first_result_set N'select rpt_guid, rpt_xml, rpt_cmp_guid from POSTGRESQL_buf.dbx.[public].rpt_xml';
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083102
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Интересно.....
А ка это увеличить?
В PostGree тип поля text
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083104
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619,

В настройках DSN PG драйвера есть крыжик "Text as LongVarChar".
Может поможет.
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083105
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
К сожалению это уже установлено...

Server=;database=;ReadOnly=0;Protocol=7.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0;ConnSettings=;Fetch=100;Socket=4096;UnknownSizes=0;MaxVarcharSize=255;
MaxLongVarcharSize=2000000;
Debug=0;CommLog=0;Optimizer=0;Ksqo=1;UseDeclareFetch=0;
TextAsLongVarchar=1; UnknownsAsLongVarchar=1;BoolsAsChar=1;Parse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;LFConversion=1;UpdatableCursors=1;DisallowPremature=0;TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=0;UseServerSidePrepare=1;LowerCaseIdentifier=0;GssAuthUseGSS=0;XaOpt=1
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083106
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил тип данных в PostGree на XML.
Получил вот такe.e структуру.
Но ошибка осталась прежняя....
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083724
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение через LinkServer не нашел.
Пришлось написать приложение, которые переливает большие поля из MSSQL в PG. Что интересно, для подключению к PG используется тот же драйвер PostgreSQL35W. И параметры подключения те же самые.
Получается виноват LinkServer.
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083729
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619,

А если так попробовать
Код: sql
1.
2.
3.
insert into openquery(POSTGRESQL_buf, 'select rpt_guid, rpt_xml, rpt_cmp_guid from dbx.[public].rpt_xml')
select
 ...

?
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083746
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619
invm,

В PostGree тип поля text


Что это "PostGREE" ? и что за OLE DB Provider используется для этого сервера?
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083753
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619
Ролг Хупин,

К сожалению все параметры, что я знал , увеличил.
Вот поэтому и обращаюсь в форум.


Эту ошибку дает ОЛЕДБ провайдер или одбс драйвер, который вы используете.
Вам надо посомтреть в их код и возможно исправить там, перестроить

Вот, к примеру, давно было, но все-таки:

https://www.postgresql-archive.org/FW-GENERAL-Re-ADMIN-Cannot-retrieve-images-inserted-through-VB-and-odbc-after-a-table-reorganization-td5818183.html

И здесь посмотрите ваше вообщение
https://github.com/hiinoue/psqlodbc/blob/master/results.c
Например,
авторif (contents_get)
result = SQL_SUCCESS;
else
{
SC_set_error(stmt, STMT_TRUNCATED, "The buffer was too small for the GetData.", func);
result = SQL_SUCCESS_WITH_INFO;
}

И т.д.
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083756
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg6619
Решение через LinkServer не нашел.
Пришлось написать приложение, которые переливает большие поля из MSSQL в PG. Что интересно, для подключению к PG используется тот же драйвер PostgreSQL35W. И параметры подключения те же самые.
Получается виноват LinkServer.

для эксперимента поставил ODBC драйвер от devart
Код: sql
1.
select * from devartpg.sample.[public].tablee

и аналоги не сработали с полпинка
зато
Код: sql
1.
insert into openquery(devartpg,'select * from tablee') select replicate(cast('a' as varchar(max)),1234567)


отработало на ура
с прилётом на pg строчки нужной длины
вывод: в нормальный ODBC умеют не только лишь все (с) и линкованные сервера тут не причём
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083763
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поле, куда писал pg - тип TEXT
Обычный odbc нормально через линкованный сервер выводил строки до момента, пока туда не прилетели строки больше 4000/8000 (в зависимости от unicode или нет) символов через devart odbc.
Потом перестал выводить и через синтаксис линкованного сервера и через openquery, mssql ругался, что мол ждал от источника максимум 8000, а прилетело овердофига
Openquery через драйвер devart отработал нормально, показал всё что нужно. Синтаксис через 3 точки так и не захотел работать.
Бардакъ
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083769
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy st
Oleg6619
Решение через LinkServer не нашел.
Пришлось написать приложение, которые переливает большие поля из MSSQL в PG. Что интересно, для подключению к PG используется тот же драйвер PostgreSQL35W. И параметры подключения те же самые.
Получается виноват LinkServer.

для эксперимента поставил ODBC драйвер от devart
Код: sql
1.
select * from devartpg.sample.[public].tablee

и аналоги не сработали с полпинка
зато
Код: sql
1.
insert into openquery(devartpg,'select * from tablee') select replicate(cast('a' as varchar(max)),1234567)


отработало на ура
с прилётом на pg строчки нужной длины
вывод: в нормальный ODBC умеют не только лишь все (с) и линкованные сервера тут не причём


Не надо спешить, как сказал волк зайцу, хватая того за задние лапы

Линк серверы тут причем в том смысле, что вы используете одбс драйвер или оледб провайдер.
Одбс драйвер для PostgreSQL - вещь свободная, но и полная мягко говоря ошибок. Я сам там исправлял несколько.
Я не в курсе свободен ли деварт драйвер, но дерзайте и понимайте, что проблема в вашем случае - в драйвере.
...
Рейтинг: 0 / 0
Ошибка при INSERT в LinkServer postgres длинной строки
    #40083774
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин

Не надо спешить, как сказал волк зайцу, хватая того за задние лапы

Линк серверы тут причем в том смысле, что вы используете одбс драйвер или оледб провайдер.
Одбс драйвер для PostgreSQL - вещь свободная, но и полная мягко говоря ошибок. Я сам там исправлял несколько.
Я не в курсе свободен ли деварт драйвер, но дерзайте и понимайте, что проблема в вашем случае - в драйвере.

Он за денежку и в случае чего можно задать вопросы
Есть еще cdata, тоже не бесплатный, тоже можно посмотреть
А править ошибки в драйвере... ну если больше нечем заниматься и хочется качественно подсадить работодателя на свои поделки - норм путь. Там можно и постгрес дорабатывать, и линукс... потом в сервере свою платку куданить припаять для корректировки ошибок в железе/ускорения работы...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка при INSERT в LinkServer postgres длинной строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]