|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
Добрый день всем. Помогите пожалуйста разобраться, почему не получается делать запросы на изменения из PostgreSQL в MSSQL. Есть сервер на MS SQL 2014 и PostgreSQL 14.1. TDS FDW настроил, запросы на чтение работают без проблем. В файле конфига freetds.conf прописано следующее freetds.conf[servRG] host = 10.10.14.1 port = 1433 tds version = 7.4 Радом лежит locales.conf, без этого конфига не работали запросы SELECT, проблема с представлением типов данных Date и DateTime locales.conf[default] date format = %b %e %Y %I:%M:%S.%z%p Настраивал следующим образом. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Все скрипты выше успешно отрабатывают и после этого SELECT работает без проблем. Например: Код: sql 1. 2. 3. 4. 5.
Но если я пытаюсь выполнить запрос на изменение: Код: sql 1. 2. 3. 4.
То в результате получаю кучу ошибок... PGAdmin4ЗАМЕЧАНИЕ: DB-Library notice: Msg #: 5701, Msg state: 2, Msg: Changed database context to 'RusGuardDB'., Server: SERVRG\RUSGUARD, Process: , Line: 1, Level: 0 ЗАМЕЧАНИЕ: DB-Library notice: Msg #: 5703, Msg state: 1, Msg: Changed language setting to us_english., Server: SERVRG\RUSGUARD, Process: , Line: 1, Level: 0 ЗАМЕЧАНИЕ: DB-Library notice: Msg #: 1003, Msg state: 2, Msg: Line 1: FOR UPDATE clause allowed only for DECLARE CURSOR., Server: SERVRG\RUSGUARD, Process: , Line: 1, Level: 15 ERROR: ОШИБКА: DB-Library error: DB #: 20018, DB Msg: General SQL Server error: Check messages from the SQL Server, OS #: -1, OS Msg: , Level: 15 SQL-состояние: HV00L ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 10:30 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
ronvaleron, Там посмотрите что за ошибки на стороне mssql происходят. Может там прав не хватает или ещё что. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 13:25 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
Да нет. Доступ есть полный. С этими учетными данными подключаюсь с SQL Manager и все работает... Заметил еще одну проблему, тип данных uniqueidentifier в MSSQL при интерпретации в UUID PostgreSQL становится другого вида, точнее содержимого, видимо отличаются версии, на PostgreSQL v4, на MSSQL не знаю как посмотреть. Возможно проблема в этом. Но я пробовал отключить поле этого типа, всеравно не могу делать изменения. В Oracle FDW есть подобные грабли, там на какое-нибудь поле необходимо дать OPTION key = 'true', если этого не сделать, то селекты работают, а изменение - НЕТ. Но в TDS FDW такого свойства не нашел... Уже весь интернет перерыл, не могу найти решения... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 14:16 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
Maxim Boguk, Точнее генерирую UUID с помощью функции uuid_generate_v4(), а EXTENSION uuid-ossp VERSION "1.1". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 15:23 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
ronvaleron Да нет. Доступ есть полный. С этими учетными данными подключаюсь с SQL Manager и все работает... Заметил еще одну проблему, тип данных uniqueidentifier в MSSQL при интерпретации в UUID PostgreSQL становится другого вида, точнее содержимого, видимо отличаются версии, на PostgreSQL v4, на MSSQL не знаю как посмотреть. Возможно проблема в этом. Но я пробовал отключить поле этого типа, всеравно не могу делать изменения. В Oracle FDW есть подобные грабли, там на какое-нибудь поле необходимо дать OPTION key = 'true', если этого не сделать, то селекты работают, а изменение - НЕТ. Но в TDS FDW такого свойства не нашел... Уже весь интернет перерыл, не могу найти решения... А readme по адресу https://github.com/tds-fdw/tds_fdw/blob/master/README.md вы вообще пробовали читать? Особенно в части The current version does not yet support JOIN push-down, or write operations. PS: я первый раз с TDS FDW столкнулся - нашёл за 5 минут... не знаю где вы " Уже весь интернет перерыл" перерывали... может интернет у нас разный? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 15:26 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
Maxim Boguk, Там тоже всё читал. Насчет версии TDS я не правильно сначала делал, потом взял версию 7.0. При подключении через FreeTDS ошибок нет, через TDSVER=7.0 tsql -H 10.10.14.1 -p 1433 -U user -P 123456 все подключается, версию пишет, в конфиге 7.0. В постгресе CREATE SERVER rusg FOREIGN DATA WRAPPER tds_fdw OPTIONS ( servername '10.10.14.1', port '1433', tds_version '7.0', database 'RusGuardDB', msg_handler 'notice', language 'us_english'); ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 15:44 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
The current version does not yet support JOIN push-down, or write operations. It does support WHERE and column pushdowns when match_column_names is enabled. Вот этот кусок я не совсем понял, можно разъяснить пожалуйста? ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 15:47 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
Наверное плюну я на эти кастыли с FDW и пойду через plpython3u odbc буду работать с MSSQL...... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 16:38 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
ronvaleron The current version does not yet support JOIN push-down, or write operations. It does support WHERE and column pushdowns when match_column_names is enabled. Вот этот кусок я не совсем понял, можно разъяснить пожалуйста? ((( что не понятно в слове " or write operations."? tds_fdw - readonly только. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 17:35 |
|
Работа в PostgreSQL с MSSQL через TDS FDW
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 18:15 |
|
|
start [/forum/topic.php?fid=53&msg=40131708&tid=1993669]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 131ms |
0 / 0 |