Создание внешней таблицы из postgresql к mssql сервер

Коллеги, привет. Есть задача, создать внешнюю таблицу на сервере postgre, которая будет смотреть на mssql server. В интернете существует множество гайдов, построенных на решении расширения для postgres tds_fdw. Собственно:

  1. Клонирую репозиторий https://github.com/tds-fdw/tds_fdw и собираю из исходников
  2. редактирую freetds.conf и добавляю туда сервер [bi]
        host = ...
        port = 1433
  1. Подключаю расширение, создаю сервер и маппинг
    CREATE EXTENSION tds_fdw;

    CREATE SERVER bi1c_fdw FOREIGN DATA WRAPPER tds_fdw
    OPTIONS (servername 'bi', msg_handler 'notice', database 'BI_test', tds_version '7.4');

    
    CREATE USER MAPPING FOR cpu SERVER bi1c_fdw OPTIONS (username 'tst_user', password 'p@ssword');

    CREATE FOREIGN TABLE IF NOT EXISTS fdw_bi1c.test(
       test_field timestamp
    )    SERVER bi1c_fdw
        OPTIONS (table '....');
    
    select * from fdw_bi1c.test;
  1. Получаю ошибку: Logon failed for login 'tst_ssms_user' due to trigger execution

Ругается на триггер при входе. Если триггер отключить, то все работает. Но, если подключаться любы другим способом под этим же пользователем, то проблемы никакой нет. проверял и pyodbc, pycharme, managemen studio. Перебирал все возможные tds version, не помогает. Может есть мысли, куда еще посмотреть? И через odbc все так же работает, но я не понял, как переделать tds_fdw плагин на работу через кастомный odbc

Справка по тригеру: Триггер разбирает на переменные xml c данными о входе. Пример xml

<EVENT_INSTANCE>
  <EventType>LOGON</EventType>
  <PostTime>2022-03-23T17:15:03.750</PostTime>
  <SPID>64</SPID>
  <ServerName>.....\TEST</ServerName>
  <LoginName>tst_user</LoginName>
  <LoginType>SQL Login</LoginType>
  <SID>...==</SID>
  <ClientHost>....</ClientHost>
  <IsPooled>0</IsPooled>
</EVENT_INSTANCE> 

Разницы в двух xml при удачном (через odbc) и неудачном (через tds_fdw) входе нет.


Ответы (0 шт):