我正在尝试网站脚本。客户端使用dojo,服务器端使用Perl。我编写了一个Perl脚本getdb.pl来读取SQL服务器数据库,它可以在我测试的命令提示符下逐行打印,但是当它从Web服务器运行时,它无法连接到数据库。
这可以通过Web服务器返回500错误以及Web服务器错误日志的以下内容来证明:
Premature end of script headers: getdb.pl, referer: http://localhost/
DBI connect('DSNsqlservr','sa',...) failed: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/getdb.pl line 11\r, referer: http://localhost/
Can't call method "prepare" on an undefined value at C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/getdb.pl line 19.\r, referer: http://localhost/
我使用DBI->connect ('dbi:ODBC:DSNsqlservr', 'sa', 'password');
,其中'DSNsqlservr'是我在Windows ODBC数据源管理员中创建的名称。我可以在命令行上正确运行getdb.pl。
我刚刚使用错误消息在网上搜索过。 http://www.perlmonks.org/?node_id=838393不确定两者是否有关系。但我确实尝试过使用DSNless连接到DB的方法,如下所示。
my $connection
= 'dbi:ODBC:driver={SQL Server};'
. 'Server=127.0.0.1,1433;'
. 'Database=MyDatabaseName;'
;
my $dbh = DBI->connect(
$connection,
'sa',
'password',
{ RaiseError => 1 }
);
我再次在命令行上运行getdb.pl并收到错误:[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.