in reply to simple minded DBI timeout

That 'DBI:ODBC:' in the connectstring means you're using DBD::ODBC. I see there is a odbc_query_timeout in DBD::ODBC. Does it not work in your case?

http://search.cpan.org/~mjevans/DBD-ODBC-1.56/ODBC.pm#odbc_query_timeout

(and as it says there, /t/20SqlServer.t has an example)

I don't know if it's better than what you have but it sure looks simpler :)