2

正如标题所说,我在从 PHP 脚本连接到 MSSQL 时遇到问题。

设置: -

  • PHP 在 Apache Linux 服务器上运行。
  • Microsoft SQL Server 2008 在 XP 机器上。
  • 我在 MSSQL Server 中打开了远程连接。
  • 数据库 bggs 确实存在。
  • 数据库正在运行(我可以看到一个绿色箭头)。
  • 我在 XP 机器上没有防火墙。

如果您有任何调试问题,请随时提出。

我正在使用以下测试脚本。

<?php
    include('adodb5/adodb.inc.php');
    $db =& ADONewConnection('odbc_mssql');
    $db->debug = true;
    $dsn = "Driver={SQL Server};Server=ozmodiar;Database=bggs;";
    $db->Connect($dsn,'user','password');
    $rs = $db->Execute('select * from admin_users');
    print "<pre>";
    print_r($rs->GetRows());
    print "</pre>";
?>

得到以下结果。

警告:odbc_connect() [function.odbc-connect]: SQL 错误:[unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL 状态 IM002 in SQLConnect in /mnt/filestore/vhost/bggs/ hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php 在第 60 行 (odbc_mssql):SET CONCAT_NULL_YIELDS_NULL OFF
警告:odbc_exec():提供的参数不是 /mnt/filestore/vhost 中的有效 ODBC-Link 资源/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php on line 530 IM002: [unixODBC][Driver Manager]Data source name not found, and no default driver specified

ADOConnection._Execute(SET CONCAT_NULL_YIELDS_NULL OFF, false) % 第 1017 行,文件:adodb.inc.php ADOConnection.Execute(SET CONCAT_NULL_YIELDS_NULL OFF) % 第 62 行,文件:adodb-odbc.inc.php ADODB_odbc._connect(Driver={SQL Server};Server=192.168.70.130;Database=bggs;, sa, knd121, ) % line 524, file: adodb.inc.php ADOConnection.Connect(Driver={SQL Server};Server=192.168.70.130;Database=bggs ;, sa, knd121) % 第 9 行,文件:test_db.php

Driver={SQL Server};Server=192.168.70.130;Database=bggs;: [unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序 (odbc_mssql): select * from admin_users
警告: odbc_exec():提供的参数不是 /mnt/filestore/vhost/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php 中的有效 ODBC 链接资源 530 IM002:[unixODBC][Driver Manager]Data未找到源名称,并且未指定默认驱动程序

ADOConnection._Execute(select * from admin_users, false) % line 1017, file: adodb.inc.php ADOConnection.Execute(select * from admin_users) % line 10, file: test_db.php

致命错误:在第 12 行的 /mnt/filestore/vhost/bggs/hr_database/Dev/includes/test_db.php 中的非对象上调用成员函数 GetRows()

4

1 回答 1

3

免责声明:我只从 Microsoft SQL Server 2000 查询数据,但通过 PDO_DBLIB 查询数据,尽管我相信为 ADODB 或 PDO_DBLIB 提供 freetds 驱动程序的先决条件是肯定的。

从最初的错误消息来看,您没有安装必要的驱动程序。为了让您的应用程序能够访问服务器,您需要安装 freetds,它将安装必要的驱动程序并允许您设置 ODBC 连接。查看:http ://www.linuxjournal.com/article/6636

请务必注意,您需要tds version = x.x在 freetds 全局配置或特定 OBDC 连接(debian 上默认为 /etc/freetds/freetds.conf)中正确设置“”,否则 freedtds 与您的服务器使用的协议将不正确脚本会爆炸。

于 2009-02-06T05:45:26.853 回答