SQL Server PHP IIS - PullRequest
       19

SQL Server PHP IIS

3 голосов
/ 04 февраля 2011

Хорошо, у меня возникли проблемы с настройкой SQL Server 2005 с PHP 5.2.17 на IIS 6.0.

Я установил все драйверы и собственные клиенты в соответствии с указаниями, и мой вывод 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 и настроен для загрузки в php.ini.

Я не уверен, почему он говорит, что требует расширения, когда phpinfo говорит, что расширение загружено, и я также не уверен, почему он выдает ошибку ODBC Driver Manager.

Любое понимание будет с благодарностью.

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

Обновление / Edit: Я попытался использовать следующее для подключения, и это работало просто отлично:

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

Есть ли параметр, который я мог бы пропустить в php.ini, который мог бы препятствовать нормальной работе sqlsrv_connect?

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

sqlncli.dll является собственным клиентом SQL 2005. Попробуйте установить sqlncli10.dll (это SNAC 2008) и посмотрите, работает ли он. Вы можете скачать его здесь (примерно на 2/3 вниз по странице): http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c

-Брайан

0 голосов
/ 29 марта 2012

Похоже, у вас та же проблема, что и у меня на этой неделе.

Для меня проблема с правами доступа в реестре, где хранится путь к sqlncli.dll.

Я скачал Process Monitor и следовал инструкциям на этом посту

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

Потом я увидел, что процессу w3wp.exe отказано в доступе к этому ключу реестра

HKLM \ Software \ ODBC \ ODBCINST.INI \ Собственный клиент SQL 10.0

Я открыл RegEdit и пошел к этому ключу.

Я щелкнул правой кнопкой мыши -> Разрешения, добавил сетевую службу в список и дал ей разрешения на чтение.

Восстановлен пул приложений, и теперь он работает!

Надеюсь, это поможет!

Ура, Федя

0 голосов
/ 04 февраля 2011

Возможно, ваш SQL Server не настроен для аутентификации в смешанном режиме. В Enterprise Manager или Management Studio перейдите в свойства сервера> Безопасность и убедитесь, что включены оба режима аутентификации - SQL Server и Windows.

...