由于我正在编写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连接实现超时的方法是什么?
答案 0 :(得分:0)
我不相信有办法通过DBD :: ODBC在连接句柄上设置SQL_ATTR_LOGIN_TIMEOUT。无论如何,很少有ODBC驱动程序可以对它做任何事情。但是,如果您使用的是UNIX并使用unixODBC驱动程序管理器,请参阅Setting ODBC driver environment variables automatically
您基本上将“DMConnAttr = CONNECTION_ATTRIBUTE = value”添加到odbc.ini文件中,其中CONNECTION_ATTRIBUTE是ODBC连接属性(例如,SQL_ATTR_CONNECTION_TIMEOUT),值是您要将其设置为的值。
答案 1 :(得分:0)
It is commom to confused with connection and query timeout:
DMStmtAttr = SQL_ATTR_QUERY_TIMEOUT=2
DMConnAttr = SQL_ATTR_CONNECTION_TIMEOUT=2
Connection may be ok but query response take more time than normal