Я использую SQL Server 2014, и у меня есть этот код для подключения к моему серверу SQL:
<?php
$serverName = "DESKTOP-P87SVPI\MSSQLSERVER";
$connectionInfo = array("Database"=>"map2");
$conn = sqlsrv_connect($serverName,$connectionInfo);
if ($conn){
echo "finally";
}
else {
print_r( sqlsrv_errors());
}
?>
Я получил эту ошибку:
Массив ([0] => Массив ([0] => 08001 [SQLSTATE] => 08001 1 => 87
[code] => 87 2 => [Microsoft] [Драйвер ODBC 11 для SQL Server] SQL
Сетевые интерфейсы сервера: недопустимая строка подключения [87].
[message] => [Microsoft] [Драйвер ODBC 11 для SQL Server] SQL Server
Сетевые интерфейсы: строка подключения недопустима [87]. ) 1 =>
Массив ([0] => HYT00 [SQLSTATE] => HYT00 1 => 0 [код] => 0 2 =>
[Microsoft] [Драйвер ODBC 11 для SQL Server] Истекло время ожидания входа
[message] => [Microsoft] [Драйвер ODBC 11 для SQL Server] Тайм-аут входа в систему
истекший ) 2 => Массив ([0] => 08001 [SQLSTATE] => 08001 1 => 87
[code] => 87 2 => [Microsoft] [Драйвер ODBC 11 для SQL Server] A
ошибка, связанная с сетью или экземпляром, произошла во время
установление соединения с SQL Server. Сервер не найден или нет
доступны. Проверьте правильность имени экземпляра и если SQL Server
настроен для разрешения удаленных подключений. Для получения дополнительной информации см. SQL
Сервер Книги Онлайн. [message] => [Microsoft] [Драйвер ODBC 11 для SQL
Сервер] Ошибка сети или экземпляра
установление соединения с SQL Server. Сервер не найден или нет
доступны. Проверьте правильность имени экземпляра и если SQL Server
настроен для разрешения удаленных подключений. Для получения дополнительной информации см. SQL
Сервер Книги Онлайн. ))
Я проверил это в MSSQL:
select @@servername + '\' + @@servicename
И это то же самое:
DESKTOP-P87SVPI\MSSQLSERVER
И вот драйверы, которые у меня есть в phpInfo ():
Также я проверил удаленное соединение в MSSQL, и это разрешено.
Как это исправить?
Вы уверены, что ваш сервер не использует пароль?
Попробуйте подключиться к PDO:
<?php
try {
$hostname = "localhost/MSSQLSERVER";
$port = 10060;
$dbname = "dbname";
$username = "dbuser";
$pw = "password";
$dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}
$stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()");
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r($row);
}
unset($dbh); unset($stmt);
?>
Надеюсь это поможет.
Это должно делать задание, если нет, оно как-то связано с настройкой вашего SQL-сервера!
Я использовал этот код для подключения, но также возникли проблемы, поэтому я добавил ConnectionPooling=0
в связи то и сработало!
try {$conn = new PDO("sqlsrv:server=serverName\serverInstance,1433;Database=db;ConnectionPooling=0", "user", "pass");
} catch (PDOException $e) {
echo $e->getMessage();
}