无法通过ODBC驱动程序11为SQL Server和SQL Native Client连接到Azure数据库

时间:2016-03-04 06:43:25

标签: php laravel odbc azure-sql-database

我可以通过SQL Server 2014轻松访问Azure SQL数据库 当我尝试通过用于SQL Server的ODBC驱动程序11将我的PHP(Laravel)We​​b应用程序连接到Azure SQL Server并尝试使用SQL Native Client 11时,它给了我不同类型的例外,如下所示

  • [Microsoft] [SQL Server的ODBC驱动程序11]传输级错误 从服务器接收结果时发生(提供者:TCP 提供者,错误:0 - 信号量超时期限已过期。)
  • [Microsoft] [SQL Server的ODBC驱动程序11]传输级错误 从服务器接收结果时发生。 (提供者:TCP 提供者,错误:0 - 强制关闭现有连接 远程主机。)
  • [Microsoft] [用于SQL的ODBC驱动程序11 Server] System.Data.SqlClient.SqlException:超时已过期。该 在完成操作或之前经过的超时时间 服务器没有响应。该语句已终止。
  • [Microsoft] [SQL Server的ODBC驱动程序11]连接尝试
    失败,因为关联方没有正确回应 一段时间,或建立的连接因连接而失败 主持人没有回复。
  • [Microsoft] [SQL Server的ODBC驱动程序11]命名管道提供程序:可以 没有打开到SQL Server的连接[53]。 ,SQL状态08001 in 的SQLConnect

我已经通过了这个Technet Article并成功完成了所有步骤,直到第3步。

但当我追踪到服务器时,它给了我以下结果

traceroute result

所以,我面临的问题是由于我收到请求超时的原因。我已经配置了服务器防火墙并添加了客户端IP。

3 个答案:

答案 0 :(得分:0)

我认为你可以参考文章A transport-level error has occurred when receiving results from the server。人们也犯了同样的错误。

可能的解决方案是

1)检查该链接服务器的提供者。

2)为该特定提供商启用“允许进程内”选项,以解决提供程序属性中的问题。

3)对于连接字符串中的“Packet Size = xxxxx”,请尝试缩短“xxxxx”。

4)尝试禁用网络接口上的“IP Offloading”。

5)重启Virsual Stdio。

6)停止IIS Express并重新运行您的应用程序。

希望这会有所帮助。

答案 1 :(得分:0)

我有一个利用odbc_connect的快速测试,如:

odbc_connect("Driver={SQL Server Native Client 11.0};Server=tcp:<sqlsrv_name>.database.windows.net,1433;Database=<database>;Uid=<user>@<sqlsrv_name>;Pwd=<password>;Encrypt=yes;Connection Timeout=30;", "<user>@<sqlsrv_name>", "<password>");

但是我不能重现你的问题。您能否创建一个新的Azure SQL Server,并尝试从本地脚本连接到这个新的?

如果您仍然遇到此问题,则可能是您的本地环境存在问题。您可以检查网络,因为您的日志已显示超时异常。

答案 2 :(得分:0)

解决了这个问题。

我选择的计划存在问题,但这还不足以满足我的需求。

我选择了更高配置的计划,幸运的是它有效。