Как исправить SQLSTATE[08001] Код ошибки 0x2746 при получении данных с SQL Server на сервере Ubuntu

Убунту 12

Если вы запускаете приложение PHP Laravel на сервере Ubuntu и пытаетесь подключиться к базе данных SQL Server, вы можете столкнуться с сообщением об ошибке «SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server] Поставщик TCP: код ошибки 0x2746». Эта ошибка связана с проблемой соединения TLS 1.2 между сервером Ubuntu и сервером Windows, на котором размещен SQL Server. В этой статье вы узнаете, как исправить эту ошибку.

Подтвердите настройки брандмауэра

Во-первых, важно убедиться, что IP-адрес сервера Ubuntu разрешен через брандмауэр на сервере Windows, на котором работает SQL Server. Следующие порты должны быть открыты: TCP 1433, 4022, 135, 1434 и UDP 1434. Эти порты необходимы для работы SQL Server.

Вы можете проверить настройки брандмауэра на сервере Windows, выбрав «Панель управления» > «Система и безопасность» > «Брандмауэр Защитника Windows» > «Дополнительные настройки».

Настройка параметров протоколов TLS и SSL

Сообщение об ошибке предполагает, что наборы шифров, поддерживаемые сервером Ubuntu, несовместимы с SQL Server. Вам необходимо настроить параметры протоколов TLS и SSL на сервере Windows.

Microsoft предоставляет подробную документацию по настройке этих параметров здесь.

Вкратце, вам нужно:

  • Откройте редактор реестра (regedit.exe)
  • Перейдите к соответствующему подразделу реестра, который зависит от вашей версии Windows.
  • Измените или создайте новые значения DWORD для Enabled, DisabledByDefault и DisabledByDefault.

Не забудьте создать резервную копию реестра перед внесением каких-либо изменений, поскольку неправильные изменения могут вызвать серьезные проблемы.

Проверьте имя пользователя и пароль

Поскольку соединение работает с вашего локального компьютера, вполне вероятно, что имя пользователя и пароль верны. Однако всегда полезно перепроверить. Убедитесь, что учетные данные, которые вы используете в своем приложении Laravel, соответствуют учетным данным, установленным для базы данных SQL Server.

Проверьте версию драйвера ODBC

Убедитесь, что на вашем сервере Ubuntu установлена ​​последняя версия драйвера ODBC. Скачать драйвер можно с сайта Microsoft.

Чтобы проверить текущую версию, выполните в терминале следующую команду:

одбцинст -j

Будет отображена информация о драйвере ODBC, включая номер версии.

Проверка расширения PHP ODBC

Убедитесь, что расширение PHP ODBC установлено и включено на вашем сервере Ubuntu. Это расширение предоставляет функции для доступа к базам данных через драйверы ODBC (Open Database Connectivity).

Чтобы проверить, включено ли расширение, выполните в терминале следующую команду:

php -м

Эта команда выводит список всех модулей, скомпилированных в PHP, и вы должны увидеть в списке «odbc».

Если расширение не включено, вы можете установить его с помощью следующей команды:

sudo apt-get установить php-odbc

После выполнения этих шагов ваше соединение с базой данных SQL Server из вашего приложения PHP Laravel, работающего в Ubuntu, должно работать без каких-либо проблем. Если проблема не устранена, рассмотрите возможность обращения за помощью к сообществу Laravel или ознакомьтесь с документацией Laravel для дальнейшего устранения неполадок.

Чтобы проверить, разрешен ли IP-адрес вашего сервера Ubuntu через брандмауэр на сервере Windows, на котором работает SQL Server, вы можете перейти в Панель управления > Система и безопасность > Брандмауэр Защитника Windows > Дополнительные параметры на сервере Windows. В дополнительных настройках вы можете проверить правила входящего и исходящего трафика, чтобы узнать, существуют ли какие-либо правила, разрешающие или блокирующие IP-адрес вашего сервера Ubuntu.

Чтобы настроить параметры протоколов TLS и SSL на сервере Windows, вам необходимо открыть редактор реестра (regedit.exe) и перейти к соответствующему подразделу реестра. Конкретный подраздел будет зависеть от вашей версии Windows. Найдя правильный подраздел, вы можете изменить или создать новые значения DWORD для Enabled, DisabledByDefault и DisabledByDefault в соответствии с документацией Microsoft. Не забудьте сделать резервную копию реестра перед внесением каких-либо изменений.

Чтобы проверить правильность имени пользователя и пароля, которые вы используете в своем приложении Laravel, вы можете сравнить их с учетными данными, установленными для базы данных SQL Server. Дважды проверьте, что имя пользователя и пароль в вашем приложении Laravel совпадают с теми, которые указаны для базы данных SQL Server.

Чтобы проверить версию драйвера ODBC, установленного на вашем сервере Ubuntu, вы можете запустить в терминале следующую команду: odbcinst -j. Эта команда отобразит информацию о драйвере ODBC, включая номер версии.

Чтобы проверить, включено ли расширение PHP ODBC на вашем сервере Ubuntu, вы можете запустить в терминале следующую команду: php -m. Эта команда выводит список всех модулей, скомпилированных в PHP, и вы должны увидеть в списке «odbc», если расширение включено. Если расширение не включено, вы можете установить его с помощью команды sudo apt-get install php-odbc.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *