#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 (если вы не изменили порт по умолчанию, если он изменен, попросите команду брандмауэра разрешить этот порт)