On 05-Sep-2002 Levine, Peter W wrote:
> Hi,
> 
> Why do I need to supply user name and password with DBI->connect() if I am
> using DBD:ODBC? This information is already supplied in the DSN?
> 
> my $DSN="dbi:ODBC:sqlserver_dsn";
> my $DBI_USER="Why do I need this?"
> my $DBI_PASS="Why do I need this?"
> 
> $dbh=DBI->connect($DSN,$DBI_USER,$DBI_PASS);
> 
> Peter Levine
> [EMAIL PROTECTED]
> (415) 286-5716

It depends on the driver.

DBI->connect is mapped in ODBC to SQLConnect(dsn,username,password) or
SQLDriverConnect(connection_string). If you are using SQL Server you have two
ways in which you can create a DSN:

[1] using NT authentication (trusted connections)
[2] using a database username/password

For [1] a database username/password is not required but the process accessing
the DSN has to have the correct NT authentication. For [2] a database
username/password is required and must be passed to DBI->connect.

For MS Access, mdbs don't usually have any username/password associated with
them (although they can).

A similar situation exists for other ODBC drivers. Most only require a
username/password if the database they are going to have users defined.

Where the driver doesn't need a username/password don't pass one to
DBI->connect.

Martin
--
Martin J. Evans
Easysoft Ltd, UK
Development

Reply via email to