【问题标题】:Connecting to MSSQL server using Cpanel使用 Cpanel 连接到 MSSQL 服务器
【发布时间】:2021-09-24 09:53:45
【问题描述】:

我目前正在将本地制作的 laravel 应用程序转移到网络上。我正在使用 cpanel 进行共享主机。目前我的应用程序使用了三个不同的数据库。普通的 MySQL 数据库、microsoft azure 数据库和 microsoft sql server 数据库。目前我能够连接到三个数据库中的两个,因为我无法连接到 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::connection("sqlsrv")->getPdo() 给出了同样的错误。 我在想服务器以某种方式阻止了我网站的 IP。关于如何解决这个问题的任何想法。非常感谢任何帮助!

【问题讨论】:

  • 只要确保您的本地 SQL Server 实例允许 SQL 身份验证。
  • @Zhorov 如果它不允许我在本地连接。因为当我在本地开发应用程序时,我可以毫无问题地连接到数据库
  • @Zhorov 我认为确实如此。当我登录 MS SQL 管理工作室时,我使用 SQL Server 身份验证登录
  • 避免空闲连接,重新检查重试逻辑并检查是否配置了错误的 DNS、出站端口、ISP 提供商、代理或重定向

标签: sql sql-server laravel cpanel


【解决方案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 数据库在内部记录的错误数据相关联。

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多