Не удается подключиться к SQL server через внешнее соединение, но нормально подключается через внутреннее соединение

#php #sql-server

#php #sql-server

Вопрос:

При внутреннем соединении в той же сети, что и SQL server, я могу подключиться нормально, используя следующую строку подключения:

 $servername = "1.1.1.1namedinstance";
$loguser = "user";
$logpassword = "password";
$database = "dbname";

$odbc="odbc:Driver={SQL Server};Server=$servername;Database=$database;";
$db = new PDO( $odbc , $loguser, $logpassword);
  

Однако с внешнего сервера я получаю следующее сообщение об ошибке:

«Неустранимая ошибка: неперехваченное исключение PDOException: SQLSTATE [HYT00] SQLDriverConnect: 0 [Microsoft] [Драйвер ODBC 17 для SQL Server] Время ожидания входа истекло в …»

Я также могу подключаться извне к нашему старому SQL server, единственное различие между этой строкой подключения и новой, приведенной выше, заключается в добавлении именованного экземпляра (предыдущая рабочая версия подключается только через IP-адрес).

Есть идеи, почему я не могу подключиться извне?

Комментарии:

1. Посмотрите в журнале ОШИБОК SQL, чтобы узнать, есть ли еще какая-либо информация об ошибке. И убедитесь, что у вас есть UDP-соединение с портом 1343 и TCP с любым портом, который фактически прослушивает этот именованный экземпляр. Может быть просто проблема с брандмауэром. Возможно, вам потребуется перенастроить именованный экземпляр для прослушивания фиксированного порта и настроить его в вашем брандмауэре.

2. @DavidBrowne-Microsoft ок, так что, скорее всего, проблема с конфигурацией sql / port / firewall? Я попрошу нашего системного администратора просмотреть настройки. спасибо за ответ.

Ответ №1:

Разрешите TCP-порт 1433 на вашем внешнем брандмауэре, вам необходимо связаться с командой брандмауэра.

Источник: ваш IP-адрес сервера приложений. Назначение: ваш IP-адрес SQL Server. Порт: 1433 (если вы не изменили порт по умолчанию, если он изменен, попросите команду брандмауэра разрешить этот порт)