Skip to Content.
Sympa Menu

freetds - [freetds] issue with connecting ms sql azure

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Andy Qian <andyq AT intapp.com>
  • To: <freetds AT lists.ibiblio.org>
  • Subject: [freetds] issue with connecting ms sql azure
  • Date: Thu, 29 Sep 2011 17:46:30 -0700

Hello, FreeTDS community,

I tried to connect ms sql azure by using perl's DBD:Sybase driver.

The basic structure is: Perl code => DBI => DBD:Sybase driver => freeTDS
------> ms sql azure server.

the connection code is:

$dbh = DBI->connect("dbi:sybase:server=azure;database=testdb",
"user@serv123", $pwd);


the corresponding entry "azure" in .freetds.conf is

[azure]
host = serv123.database.windows.net
port = 1433
encryption = required
client charset = UTF-8
tds version = 7.1


perl version is 5.8.3
DBD:Sybase version: 1.13
FreeTDS version: 0.91
ubuntu version: 10.04 LTS



with the specified default database, I got the following error message:


DBI connect('database=testdb;server=serv123.database.windows.net','user@serv123',...)
failed: Server message number=4060 severity=11 state=1 line=1 server=serv123
text=Cannot open database "master" requested by the login. The login failed.


The direct reason causing this problem is that login user does not have
access into master database.

By tracing TDSDUMP info of connecting to other version ms sql server, I found it looks
like that DBD::Sybase always logins to master database firstly, and then switches to
the database specified in the dsn string by executing "use $database"
statement.

it is also mentioned in DBD::Sybase man page
(http://search.cpan.org/~mewp/DBD-Sybase-1.13/Sybase.pm#Specifying_other_connection_specific_parameters),

$dbh = DBI->connect("dbi:Sybase:database=sybsystemprocs",
$user, $passwd);

is equivalent to

$dbh = DBI->connect('dbi:Sybase:', $user, $passwd);
$dbh->do("use sybsystemprocs");


However, in the case of ms sql Azure, it does not support "use $database"
statement. Any connection to Azure should be associated with default database directly.

I tried to use tsql to connect Azure with the specified default database, and
it worked.

I am wondering if there is any people who came across the same issue and if
there is any way I can solve this issue.

any suggestion will be very helpful.

Thank you very much.


Andy Qian







Archive powered by MHonArc 2.6.24.

Top of Page