http://qs321.pair.com?node_id=665024

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

I need to open a database file that was written using sybase sql anywhere, I am just stumped on how to go about this. My database driver is running as a service the servername itself is focsage, the driver name is foc_sagenet, username should work with my network username, I have no idea what data this file contains, it was being used for asset management and whoops our free trial expired, the db has been locked out and attempts to open it so far have proven futile. here is my pathetic attempt so far to get this to work.
use DBI; # test connect to DB $server = "focsage"; $username = "medwards"; $password = "password"; #$schema = "User"; $query = "(1 = 1)"; my $dbh = DBI->connect('DBI:ODBC:$server','$username','$password') || +die $!;

Replies are listed 'Best First'.
Re: opening a database file
by Narveson (Chaplain) on Jan 29, 2008 at 23:24 UTC

    Single-quoted strings don't interpolate. Use double quotes here if you want the connection request to go to focsage on behalf of medwards.

    my $dbh = DBI->connect("DBI:ODBC:$server", $username, $password);
Re: opening a database file
by mpeppler (Vicar) on Jan 30, 2008 at 07:42 UTC
    I don't know if plain DBD::ODBC will work against a SQL Anywhere database, in particular if the database license has expired.

    You might want to try DBD::ASAny which is specifically written to access SQL Anywhere databases (though I suspect that the license issue is going to be the real problem here...)

    Michael

      I may have to give up on this one, here is attempt number 2.
      !/usr/local/bin/perl -w # use DBIx::AnyDBD; use strict; my $db=DBIx::AnyDBD->connect("dbi:Sybase:$database","dba","sql"); my $database = "FirstAm.bdb"; my $data_source = "DBI:AnyDBD:$database"; my $username = "UID=dba;PWD=sql;ENG="Foc_SageNet"; my $dbh = DBI->connect( $data_source, $username, '' ); or die "Can't connect to $data_source: $dbh->errstr\n"; $dbh->disconnect; exit(0);
        Errr.... just posting the code without any results or error messages won't really be any use - we can't guess what is broken.

        However, I'm pretty sure that you can re-download and re-install an eval version of SQL Anywhere, and then open the db file that way.

        Michael