Just to add one little bit to the excellent information roboticus provided as it sometimes confuses people. When you use "dbi:ODBC:mydsn" DBD::ODBC actually calls the SQLConnect ODBC API first with the DSN mydsn and only if that fails does it call the SQLDriverConnect ODBC API. The SQLConnect API is old, still called for backwards compatibility and does not support connection attributes of the form "a=b;c=d". If you want to skip the call to SQLConnect and go immediately to SQLDriverConnect then use "dbi:ODBC:DSN=mydsn" or "dbi:ODBC:DRIVER={xxx}".