Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Does anyone know if it's possible to set the DSN name of a new ODBC driver install using the Perl DBI module?


  • Comment on Can I set the DSN for an ODBC connection?

Replies are listed 'Best First'.
Re: Can I set the DSN for an ODBC connection?
by phydeauxarff (Priest) on Jan 08, 2004 at 17:05 UTC
    There appears to be

    This from the the docs for DBD::ODBC

    use DBI; $dbh = DBI->connect('dbi:ODBC:DSN', 'user', 'password');

      I read the question to be asking for a way to actually create a DSN for an ODBC driver. I don't think that can be done via DBI at all. On the other hand, the syntax you gave is correct for accessing an ODBC source via DBI, which might be what was wanted. I'm not really clear what the OP is asking.

        ah...good point.

        I dug around and it seems that Win32::ODBC supports a ConfigDSN method to add a new DSN but I have no way to test such an animal in my working environ.

Re: Can I set the DSN for an ODBC connection?
by legato (Monk) on Feb 17, 2005 at 19:46 UTC
    use Win32::ODBC; print "Add DSN successful" if add_dsn('TestDSN'); sub add_dsn { my $dsn = shift; my $result = Win32::ODBC::ConfigDSN( ODBC_ADD_DSN, "SQL Server", ## this last is the driver name ( ##options "DSN=$dsn", ## DSN identifier "NETWORK=DBMSSOCN", ## use TCP/IP library "SERVER=test_server", ## server name "DATABASE=test_db", ## database name "DESCRIPTION=My test DSN" ) ); ## end of ConfigDSN call unless ($result) { print STDERR "Couldn't create $dsn because of error: " .Win32::ODBC::Error()."\n"; return undef; } return 1; } #^^ add_dsn
    This code tested on Win NT,95,98,2k,2k3,XP with ActiveState Perl 5.8.6

    Anima Legato
    .oO all things connect through the motion of the mind