Подключение к серверу MSSQL с помощью Cpanel

#sql #sql-server #laravel #cpanel

Вопрос:

В настоящее время я нахожусь в процессе переноса своего локального приложения laravel в Интернет. Я использую cpanel для общего хостинга. В настоящее время мое приложение использует три разные базы данных. Обычная база данных MySQL, база данных microsoft azure и база данных microsoft sql server. В настоящее время я могу подключиться к 2 из трех баз данных, так как я не могу подключиться к базе данных MSSQL. Когда я пытаюсь подключиться к базе данных, я получаю следующую ошибку:

 [ODBC Driver 17 for SQL Server]Login timeout expired (SQL: SELECT * FROM tblGlue)
 

Я знаю, что что-то идет не так, прежде чем он попытается аутентифицировать пользователя, так как я могу изменить свое имя пользователя или пароль на несуществующего пользователя, и я получаю ту же ошибку. Когда я подключился к своей базе данных azure, мне пришлось использовать хранимую процедуру sp_set_firewall_rule, чтобы разрешить IP-адресу моего веб-сайта доступ к базе данных. Есть ли что-то подобное, что я должен сделать для MSSQL, поскольку это единственное, что я могу придумать, что отличается. Вот конфигурация базы данных.

 'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DATABASE_URL'),
            'host' => "xxxx",
            'port' => "1433",
            'database' => "TEAM",
            'username' => "xxxx",
            'password' => "xxxxx",
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],
 

Также, когда я запускаю DB::connection(«sqlsrv»)->getDatabaseName (), я получаю хороший результат. Однако DB::соединение(«sqlsrv»)->getPdo() выдает ту же ошибку.
Я думаю, что сервер каким-то образом блокирует IP-адрес моего веб-сайта. Любые идеи о том, как я могу это исправить. Любая помощь будет очень признательна!

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

1. Просто убедитесь, что ваш локальный экземпляр SQL Server допускает проверку подлинности SQL.

2. @Zhorov, если бы это было не так, позволило бы мне подключиться локально. Потому что, пока я работал над приложением локально, я мог без проблем подключиться к базе данных

3. @Zhorov Я думаю, что это так. Как и при входе в MS SQL management studio, для входа в систему я использую проверку подлинности SQL Server

4. Избегайте неработающих подключений, перепроверьте логику повторных попыток и проверьте, правильно ли настроен DNS, исходящие порты, поставщик услуг интернет-провайдера, прокси-сервер или перенаправления

Ответ №1:

Избегайте использования Select * и возврата только необходимых строк. Попробуйте увеличить значение тайм-аута подключения. Я рекомендую использовать тайм-аут соединения не менее 30 секунд. Используйте параметр login_timeout .

 'mssql' => [
  'driver' => 'sqlsrv',
  'host' => 'CDBSQLSERVER',
  'database' => 'MyDatabase',
  'username' => 'XXXX',
  'password' => 'XXXX',
  'charset' => 'utf8',
  'prefix' => '',
  'login_timeout' => YOUR_TIMEOUT
]
 

Далее вы можете проверить или скопировать строку подключения для своей базы данных с портала Azure.

введите описание изображения здесь Используйте UID вместо имени пользователя.

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