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
