2011-02-04 11 views
3

[OK]をIIS 6.0でPHP 5.2.17でSQL Server 2005をセットアップするときに問題があります。SQL Server PHP IIS

すべてのドライバとネイティブクライアントが指示どおりにインストールされ、phpinfo()出力にsqlsrvとその適切な設定が含まれています。

しかし、私は、このコマンドを使用して接続しよう:

sqlsrv_connect("address,port", array("UID"=>"un", "PWD"=>"pw", "Database"=>"db")); 

私は、次のエラー出力を得る:

Array 
(
    [0] => Array 
     (
      [0] => IMSSP 
      [SQLSTATE] => IMSSP 
      [1] => -49 
      [code] => -49 
      [2] => This extension requires either the Microsoft SQL Server 2008 
Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Client O 
DBC Driver to communicate with SQL Server. Neither of those ODBC Drivers are cu 
rrently installed. Access the following URL to download the Microsoft SQL Server 
2008 R2 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?Link 
Id=163712 
      [message] => This extension requires either the Microsoft SQL Server 
2008 Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Cl 
ient ODBC Driver to communicate with SQL Server. Neither of those ODBC Drivers 
are currently installed. Access the following URL to download the Microsoft SQL 
Server 2008 R2 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink 
/?LinkId=163712 
     ) 

    [1] => Array 
     (
      [0] => IM002 
      [SQLSTATE] => IM002 
      [1] => 0 
      [code] => 0 
      [2] => [Microsoft][ODBC Driver Manager] Data source name not found a 
nd no default driver specified 
      [message] => [Microsoft][ODBC Driver Manager] Data source name not f 
ound and no default driver specified 
     ) 

) 

フォーSqlncli.dllは、Windows/system32フォルダとphp_sqlsrv_52_ts_vc6です。 dllはphp extensionsフォルダにあり、php.iniにロードするように設定されています。

phpinfoに拡張機能がロードされているとの理由がわかりません。また、なぜODBCドライバマネージャのエラーが出ているのかわかりません。

洞察力があれば幸いです。

========================================

更新/編集: 私は接続するには、以下の使用してみました、それがうまく働いた:

odbc_connect("Driver={SQL Native Client};Server=servername;Database=db", "un", "pw"); 

私は正常に動作sqlsrv_connectを防止することができ、php.iniで不足していることができ、設定はありますか?

答えて

1

sqlncli.dllはSQLネイティブクライアント2005です.SNNAC 2008であるsqlncli10.dllをインストールして、それが動作するかどうかを確認してください。あなたは(2/3ページダウン)ここでそれをダウンロードすることができます。http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c

-Brian

+0

[MDSN sqlsrvのシステム要件](http://msdn.microsoft.com/en-us/library/cc296170.aspx)ページに直接リンクがあります – icc97

0

SQL Serverが混在モード認証用に構成されていない可能性があります。 Enterprise ManagerまたはManagement Studioで、サーバーのプロパティ>セキュリティに移動し、SQL ServerとWindows認証の両方のモードを有効にします。

+0

これは確かに一般的な問題です。 – zanlok

+0

混在モードが有効になっていて、管理ツールでデータソースをダブルチェックして、SQL ServerとSQLネイティブクライアントの両方があることを確認しました。 – Wolftousen

0

あなたが私は今週持っていた同じ問題を抱えているようです。

私にとっては、sqlncli.dllへのパスが格納されているレジストリのアクセス権の問題であることが判明しました。

私は\それから私は、プロセスw3wp.exeのは、このレジストリキー

HKLM \ SOFTWARE \ ODBCでアクセス拒否を得ていた見たプロセスモニタをダウンロードし、この記事の手順

http://www.iislogs.com/articles/processmonitorw3wp/

を追いましたODBCINST.INI \ SQLネイティブクライアント10.0

私はRegEditを開いて、そのキーに行きました。

[権限]を右クリックし、[ネットワークサービス]をリストに追加して読み取り権限を与えました。

アプリプールをリサイクルしています。現在は機能しています!

希望すると助かります!

乾杯、 フェデ

関連する問題