2013-09-24 40 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