2016-03-04 69 views
2

我可以很容易地通過SQL Server 2014,但 訪問Azure的SQL數據庫,當我試圖通過連接我的PHP(Laravel)We​​b應用程序到Azure的SQL服務器對於SQL Server ODBC驅動程序11也試圖與SQL Native Client的11,這是給我的不同類型的異常以下無法通過ODBC驅動程序11連接到Azure數據庫的SQL Server和SQL Native Client的

  • [微軟] [ODBC SQL Server的驅動程序11]傳輸級錯誤 已給出在從服務器接收結果時發生(提供程序:TCP 提供程序,錯誤:0 - 信號量超時期限已過。)
  • [Microsoft] [用於SQL Server的ODBC驅動程序11]從服務器接收結果時發生傳輸級錯誤 。 (服務提供商:TCP 提供程序,error:0 - 一個現有的連接被強行關閉 遠程主機)
  • [微軟] [ODBC SQL對於服務器 驅動11] System.Data.SqlClient.SqlException:超時過期。在操作完成之前已經過去了 超時時間,或者 服務器沒有響應。該語句已終止。
  • [微軟] [ODBC SQL Server的驅動程序11]連接嘗試
    失敗,因爲連接的方沒有正確
    一段時間後響應或已建立的連接失敗,因爲連接
    主機沒有反應。
  • [微軟] [ODBC SQL Server的驅動程序11]命名管道提供商:無法 無法打開到SQL Server [53]的連接。 ,SQL狀態08001在 的SQLConnect

我曾經使用過此的Technet Article走了,跟着所有的步驟順利,直到第3步

但是,當我traceroute程序服務器它給我下面的結果

traceroute result

所以,這是我現在面臨這個問題是由於我收到請求超時的原因。我已經配置了服務器防火牆並添加了客戶端IP。

+0

似乎您遇到連接失敗。你的應用程序內置了重試邏輯嗎?當您通過另一個客戶端驅動程序/ SSMS連接時,您會遇到同樣的錯誤嗎? –

+0

@KapilFQ,你可以試試看這些教程:https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-php-simple-windows/並使用SQLSRV擴展(https: //www.microsoft.com/en-us/download/details.aspx?id=20098)? –

+0

@ WillShao-MSFT我也試過這個,但仍然有同樣的錯誤。 昨天我從azure sql server取得備份,並在本地sql server中恢復它,並通過創建ODBC連接來連接到我的laravel項目,這次我可以訪問數據庫。 我真的不明白爲什麼我在從Azure訪問數據庫時遇到問題 –

回答

0

解決了這個問題。

問題在於我選擇的計劃,這不足以滿足我的需求。

我選擇了更高配置的計劃,幸運的是它工作。

0

我覺得你可以參考文章A transport-level error has occurred when receiving results from the server。人們得到了同樣的錯誤。

可能的解決方案是

1)檢查該鏈接服務器的提供者。

2)啓用「允許進程內」針對特定供應商的選擇來解決該問題在供應商的屬性。

3)對於連接字符串「數據包大小= XXXXX」,儘量讓這「爲XXXXX」短。

4)嘗試禁用網絡接口上的「IP卸載」。

5)重新啓動Virsual Stdio。

6)停止IIS Express並重新運行您的應用程序。

希望這會有所幫助。

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,並嘗試從本地腳本連接到這個新的?

如果您仍然遇到此問題,則說明您的本地環境可能存在問題。您可能會檢查您的網絡,因爲您的日誌顯示超時異常。

相關問題