Мне нужно подключиться к 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, за исключением нескольких основ.
Ошибка вызвана проблемой разрешения в реестре. Существует ключ, в котором хранится путь к собственному клиенту, и личность, которую вы используете в пуле приложений, получает отказ в доступе.
Найдите раздел реестра, где процессу w3wp.exe
будет отказано в доступе. Это в случае IIS, не уверен, что имя процесса в WAMP, но процедура такая же. В моем случае:
HKLM\Software\ODBC\ODBCINST.INI\SQL Native Client 10.0
Руководство пользователя 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 установить, чтобы пользователь имел доступ к используемой вами базе данных. Затем вы установили учетную запись и пароль и знаете, что они собой представляют. Если у вас возникли проблемы с учетной записью пользователя, вы можете попробовать computerName\userName
.
Если вы не администратор, вам нужно получить от них соответствующую информацию.