Время ожидания подключения ODBC к SAP HANA в Perl

Поскольку я программирую сценарий Perl для мониторинга базы данных SAP HANA, у меня возникают проблемы с тайм-аутом подключения. Я не знаю, как установить тайм-аут. Это моя строка подключения:

use DBI;
use DBD::ODBC;
$dbh = DBI->connect("dbi:ODBC:dsn=$dsn");

Между тем в другом скрипте для мониторинга базы данных Sybase он работает правильно:

use DBI;

dbh = DBI->connect("dbi:Sybase:server=$dbsvr;database=$dbname;".
               timeout=$timeout;"."loginTimeout=$timeout", $user, $pass);

Я думаю, что проблема связана с ODBC. Как реализовать тайм-аут с использованием соединения ODBC?


person Adrian Blanco    schedule 25.05.2016    source источник


Ответы (2)


Я не верю, что есть способ установить SQL_ATTR_LOGIN_TIMEOUT в дескрипторе соединения через DBD::ODBC. В любом случае, немногие драйверы ODBC что-либо делают с этим. Однако, если вы работаете в UNIX и используете диспетчер драйверов unixODBC, см. Настройка ODBC переменные среды драйвера автоматически

В основном вы добавляете «DMConnAttr = CONNECTION_ATTRIBUTE=value» в файл odbc.ini, где CONNECTION_ATTRIBUTE — это атрибут соединения ODBC (например, SQL_ATTR_CONNECTION_TIMEOUT), а значение — это то, что вы хотите установить.

person bohica    schedule 26.05.2016
comment
Уже попробовал и не знаю, почему не работает. Как будто мой unixODBC его не распознает. Вот моя конфигурация DSN в файле odbc.ini: [TESTTIMEOUT] Driver=/usr/sap/hdbclient/libodbcHDB.so ServerNode=100.... DMConnAttr = SQL_ATTR_CONNECTION_TIMEOUT=10 Я использую CentOS, не думаю, что это может быть проблемой. Он всегда показывает сообщение об ошибке через 63 секунды. Это сообщение: [unixODBC][SAP AG][LIBODBCHDB SO][HDBODBC] Сбой канала связи; -10709 Ошибка подключения (RTE: [89006] Системный вызов «подключиться» не удалось, rc=110: Срок действия соединения) (SQL-08S01) - person Adrian Blanco; 26.05.2016

Обычно путают с тайм-аутом соединения и запроса:

DMStmtAttr = SQL_ATTR_QUERY_TIMEOUT=2

DMConnAttr = SQL_ATTR_CONNECTION_TIMEOUT=2

Соединение может быть в порядке, но ответ на запрос занимает больше времени, чем обычно

person Felippe Silvestre    schedule 31.08.2016