2013-09-24 39 views
0

我們在使用Sql Azure時遇到問題。我們在Azure上部署了一個古老的基於.NET 4.0/C#的網站。這一切都很好,除了我們在這裏和那裏開始獲取Timeout或與數據庫相關的任何事情開始給出錯誤。幾次它停止插入,DataSet.Fill函數失敗,超時或「未找到列」。SQL Azure:頻繁錯誤

據我所知,當SQL Azure可能忙於響應我們的請求並中斷連接時,可能重新啓動或切換節點時發生。但是,如果出現這種錯誤,它在最終客戶端看起來很糟糕。我們的數據庫的大小不到1GB,我們一次只有10-15個。所以我認爲我們沒有沉重的負擔[因爲Azure已經準備好了150 GB的數據庫,我們的數據還不到它的1%]。

任何人都建議我們應該做什麼來避免這種錯誤,我們可以檢測到即將發生的錯誤嗎?

+2

你實現瞬時故障處理? – Arran

+0

nope,因爲我從來沒有聽說過它:(但我很新的Azure,並不知道它的錯誤處理 –

+0

不用擔心,我懷疑它可能有幫助,但我會搜索它,現在你知道它叫什麼;)當我第一次設置它,我使用這個WordPress的博客,但它現在有點過時了,但它應該讓你繼續下去:http://convective.wordpress.com/2011/09/ 28/handling-transient-connection-failures-in-sql-azure/ – Arran

回答

1

您將需要使用瞬態Fauly處理,The Transient Fault Handling Application Block是開始的好地方。當與傳統的代碼重構爲SQL Azure的,我發現它更容易使用SqlConnection和SqlCommand的擴展方法:

的SqlConnection extions的例子:

var retryPolicy = RetryPolicyFactory.GetDefaultSqlConnectionRetryPolicy() 
using(var connection = new SqlConnection(connectingString)) 
{ 
     connection.OpenWithRetry(retryPolicy); 
     ///Do usual stuff with connection 
} 
+0

那麼我們的代碼根本不使用MS模式和練習代碼,而且不幸的是我不知道這段代碼基地。你能否給初學者提供更多的細節。謝謝。否則,我正在使用Google搜索。 –

+0

是的,你需要做一些谷歌搜索來首先了解問題! – pateketu