銷售: 1-800-867-1380

Azure SQL Database 避免發生拒絕要求或連接終止的最佳作法

更新日期: 2015年7月

若要在 Azure SQL 資料庫 中避免要求被拒絕或連接終止,您必須在 SQL Database 應用程式中適當地管理應用程式資源。為了在連接關閉時提供順暢的使用者體驗,請重新建立連接,然後重新執行失敗的命令或查詢。下列章節會提供連接到 SQL Database 時的建議編碼方式清單。這些建議的編碼方式與套用至內部部署 SQL Server 的編碼方式差異不大。

SQL Database TDS 閘道在報告失敗之前重試連接大約 30 秒。如果您預期應用程式流量很高,請在您的應用程式中建立重試邏輯。如果連接失敗,請執行下列步驟:

  • 處理閒置和暫時性中斷連接。

    note附註
    安裝 .NET Framework 4.0 的可靠性更新 1,以修復 SqlClient 傳回與應用程式之間的無效連接問題。有了這項更新,SqlClient 會先檢查集區中的連接是否無效,然後再將它傳回應用程式。如果連接無效,SqlClient 會先重新連接,再將它傳回應用程式。如需有關此問題的詳細資訊,請參閱將 SQL Database 中的連接集區錯誤最小化

  • 在 10 秒的間隔內重試連接 SQL Database,直到資源可供使用且再次建立您的連接為止。根據您的應用程式、資料庫和網路工作負載,您必須視需要增加延遲時間。

  • 如果連接再次終止,請變更您的工作負載。如果連接再次終止,請查閱錯誤碼、查明真正的問題所在,然後嘗試變更您的工作負載。您可以在用戶端應用程式中實作佇列或延遲機制,以降低您的工作負載。

    另一個解決方案可能是重新設計您的應用程式和資料庫,以移除資源瓶頸。請確定您的應用程式不會經由過多的 DDL 或 DML 作業而多載 tempdb。此外,請確定交易不會封鎖任何資源。請在適當的情況下,考慮將您的資料庫分割成多個資料庫。

  • 確定您的程式碼可以從節流情況中復原。使用者應該假設,連接可以隨時在應用程式內中斷連接。因此,請盡可能在單一交易中進行批次要求。如此會讓批次可能部分完成並將資料庫置於非預期/非測試狀態的情況降到最低。若要這樣做,您可能會想要針對每個隨選批次及每個預存程序的開頭/結尾執行 BEGIN TRANS/COMMIT TRANS。

  • 了解重試邏輯如何影響應用程式 (等冪) 的正確性。當執行更新或插入時,請務必了解傳回成功之前,中斷連接時會發生什麼事。如果交易中止,則重試連接是正確的步驟。如果交易實際上已認可,則再次執行交易可能不正確。執行非等冪性之變更的使用者可能需要修改其邏輯資料庫結構描述,以便能夠根據使用的重試邏輯來偵測重複的交易認可,以避免中斷連接。

使用重試程式碼來記錄節流錯誤,以區分暫時性連接、節流和嚴重失敗語法、遺漏預存程序等等。如果您無法連接到 SQL Database,這對於疑難排解案例特別實用。在此情況下,疑難排解工作將會著重於記錄的資訊,而且有效疑難排解的能力將會與已記錄之資訊的品質相關聯。如需有關實作 SQL Database 應用程式中記錄的詳細資訊,請參閱實作 Azure SQL Database 應用程式的記錄

另請參閱

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見
顯示:
© 2015 Microsoft