无法从CGI脚本连接到ODBC

时间:2013-12-26 15:26:42

标签: sql-server perl apache cgi

我正在尝试网站脚本。客户端使用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.

0 个答案:

没有答案