Подключение к SQL Server 2008 через PHP

мне нужно подключиться к SQL Server 2008 через PHP (WAMP, последняя версия). У меня установлены и настроены драйверы sqlsrv, и они появляются в phpinfo().

Я использую следующие строки для подключения к моей БД, используя аутентификацию Windows:

$serverName = "(local)";
$connectionOptions = array("Database"=>"MyTestDatabase");
$conn = sqlsrv_connect( $serverName, $connectionOptions) or die("Error!");

и я получаю следующую ошибку:

Array 
( 
    [0] => Array 
    ( 
        [0] => IMSSP 
        [SQLSTATE] => IMSSP 
        [1] => -49
        [code] => -49 
        [2] => This extension requires the Microsoft SQL Server 2011 Native Client. Access the following URL to download the Microsoft SQL Server 2011 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712 
        [message] => This extension requires the Microsoft SQL Server 2011 Native Client. Access the following URL to download the Microsoft SQL Server 2011 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 and no default driver specified 
        [message] => [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    )
)

любая помощь была бы отличной, но, пожалуйста, будьте конкретны, так как я действительно не знаю свой путь вокруг WAMP, за исключением нескольких основ.

3 ответов


ошибка вызвана проблемой разрешения в реестре. Существует ключ, в котором хранится путь к родному клиенту, а удостоверение, используемое в пуле приложений, получает отказ в доступе.

  • скачать Process Monitor и следуйте инструкциям на этом посту: http://www.iislogs.com/articles/processmonitorw3wp/ (в этом уроке показано, как это сделать на IIS, с WAMP вам нужно будет найти.exe процесс, который работает на память)
  • найти раздел реестра, где процесс w3wp.exe отказано в доступе. Что в случае IIS, не уверен, каково имя процесса в WAMP, но процедура такая же. В моем случае:

    HKLM\Software\ODBC\ODBCINST.INI\SQL Native Client 10.0
    
  • запустите regedit и найдите ключ
  • щелкните правой кнопкой мыши и перейдите к разрешениям
  • добавить сетевой сервис в список и дать ему права на чтение.
  • утилизация пула приложений, и он должен работать

sqlsrv_connect PHP руководство

попробуйте этот подход, чтобы увидеть, что ошибка на самом деле:

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
} else {
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}

на основе вашей настройки вам может потребоваться вернуться к mssql_connect и соответствующих функций. Это отлично работает с mssql 2008, и вы обычно не теряете значимую функциональность.

вот пример настройки подключения к базе данных. В зависимости от конфигурации вы можете добавить информацию о порте и т. д.

$hostname = "server.domain.com";
$database = "DatabaseName";
$username = "LocalSQLUserName";
$password = "P@ssw0rd";
$Connection = mssql_connect($hostname, $username, $password);

если вы работаете в среде XAMP, то было бы разумно, что вы используете все локально. Если это случай, ваш сервер будет localhost или 127.0.0.1 и вы можете определить свои собственные учетные записи в SQL. Как я уже сказал, Я сам не использую учетные записи Windows, но вы можете добавить учетную запись NT на свой "сервер", а затем в SQL Server Management tool установить, что пользователь имеет доступ к используемой БД. Затем вы установили учетную запись и пароль и знаете, что они собой представляют. Если у вас возникли проблемы с учетной записью пользователя, вы можете попробовать computerName\userName.

если вы не являетесь администратором, вам нужно будет получить соответствующий информация от них.