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 state 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 リンク リソースではありません/bggs/hr_database/Dev/includes/adodb5/drivers/adodb-odbc.inc.php 行 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, ) % 524 行目、ファイル: 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 行 530 の有効な ODBC-Link リソースではありません IM002: [unixODBC][Driver Manager]Dataソース名が見つからず、デフォルトのドライバーが指定されていません

ADOConnection._Execute(select * from admin_users, false) % 1017 行目、ファイル: adodb.inc.php ADOConnection.Execute(select * from admin_users) % 10 行目、ファイル: test_db.php

致命的なエラー: 12 行目の /mnt/filestore/vhost/bggs/hr_database/Dev/includes/test_db.php の非オブジェクトに対するメンバー関数 GetRows() の呼び出し

4

1 に答える 1

3

免責事項:私は Microsoft SQL Server 2000 からのデータのみをクエリしましたが、ADODB または PDO_DBLIB のいずれかの freetds ドライバーを持っているという前提条件は確実だと思いますが、PDO_DBLIB を介してクエリを実行しました。

最初のエラー メッセージから判断すると、必要なドライバーがインストールされていません。アプリケーションがサーバーにアクセスするには、freetds をインストールする必要があります。これにより、必要なドライバーがインストールされ、ODBC 接続をセットアップできるようになります。チェックアウト: http://www.linuxjournal.com/article/6636

tds version = x.xfreetds グローバル設定または特定の OBDC 接続 (debian ではデフォルトで /etc/freetds/freetds.conf) で" " を正確に設定する必要があることに注意することが重要です。そうしないと、freedtds がサーバーで使用するプロトコルが正しくなくなります。そしてスクリプトは爆撃します。

于 2009-02-06T05:45:26.853 に答える