Невозможно соединить SQLEXPRESS с Laravel 5.6

Я пытаюсь подключить Laravel 5.6 к своему SQLEXPRESS.

Когда я пытаюсь перенести таблицы из Laravel в SQL, я получаю эту ошибку:

SQLSTATE [08001]: [Microsoft] [Драйвер ODBC 13 для SQL Server] TCP
Поставщик: Соединение не может быть установлено, потому что целевой компьютер активно отказался от него. (SQL: выберите * из системных объектов, где type = ‘U’ и name = migrations)

Я установил расширение sqlsrv для php и протестировал его:

<?php
$serverName = "MYNAME\\SQLEXPRESS";

$connectionInfo = array( "Database"=>"Portal", "UID"=>"sa", "PWD"=>"mySecretPwd");
$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));
}
?>

Соединение успешно установлено.

Я также вижу расширение в phpinfo ();

Но если перейти на LAravel 5.6 с этими настройками:

мой env:

DB_CONNECTION=sqlsrv
DB_HOST=MYNAME\\SQLEXPRESS
DB_PORT=1433
DB_DATABASE=Portal
DB_USERNAME=sa
DB_PASSWORD=mySecredPwd

моя конфигурация / база данных:

'default' => env('DB_CONNECTION', 'sqlsrv'),

'connections' => [

.....

'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'MYNAME\\SQLEXPRESS'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],

],

Я получаю ошибку.
Мой менеджер конфигураций сервера выглядит так:

введите описание изображения здесь

Я также могу подключиться к SQL Server Management Studio 2017.

1

Решение

Сначала найдите номер порта экземпляра по умолчанию:

  • проверьте номер порта. Если у вас есть MS SQL Server Management Studio, выполните: xp_readerrorlog 0, 1, N'Server is listening on' в основной базе данных

  • с командной строкой (будет много строк, но вы должны проанализировать): netstat -ano

Возможные решения:

  • остановите службу браузера SQL Server и повторите тестирование, всегда с номером порта. Вы можете подключиться к экземпляру SQL Server по умолчанию с TCP / IP, если он работает через порт 1433
  • настроить SQL Server не использовать динамические порты и установить номер порта экземпляра по умолчанию.
  • измените config / database в Laravel, чтобы найти способ пропустить номер порта. У меня нет опыта с Laravel, но я думаю, что вы можете попробовать с 'port' => env('DB_PORT', null),

Как настроить сервер для прослушивания определенного порта:

  • Откройте «Управление компьютером \ Службы \ Диспетчер конфигурации SQL Server».
  • Разверните «Конфигурация сети SQL Server \ Протоколы для [имя экземпляра]» и дважды щелкните «TCP / IP». В диалоговом окне «Свойства TCP / IP» на вкладке «IP-адреса» перейдите к IPAll. Оставьте «TCP Dynamci port» пустым. Установите «Порт TCP» на желаемый номер порта (может быть по умолчанию 1433).
  • В «Службах SQL Server» дважды щелкните Обозреватель SQL Server. На вкладке «Сервис» установите «Режим запуска» на «Ручной».
  • В «Службах SQL Server» дважды щелкните Обозреватель SQL Server. В разделе «Вход в систему» ​​остановите службу.
  • В «Службах SQL Server» дважды щелкните SQL Server ([имя экземпляра]). В разделе «Вход в систему» ​​перезапустите службу.
  • Установите строку подключения клиента в формате «сервер \ экземпляр, порт».

Хорошие отправные точки:
Служба браузера SQL Server а также Настройте сервер для прослушивания через определенный порт TCP

Я надеюсь это тебе поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]