Невозможно соединить SQLEXPRESS с Laravel 5.6 - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь подключить 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 с этими настройками:

my 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' => '',
        ],

    ],

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

enter image description here

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

1 Ответ

0 голосов
/ 01 июня 2018

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

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

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

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

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

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

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

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

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

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