Episode 68 - Throttling in SQL Azure with Scott Klein
What can Ido for the throttling?
-Retry using enterprise library
-EntrpriseLibrary.WindowsAzure.TransientFaultHandling(can download from NuGet)
C#
usingMicrosoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling.SQLAzure;
usingMicrosoft.Practices.TransientFaultHandling;
usingSystem.Threading.Task;
usingSystem.Data.Sqlclient;
usingSystem.Data.EntityClient;
//DefaultRetry Policy
using(var conn=new ReliableSqlConnection(constring))
{
conn.Open();
using(var cmd=conn.CreateCommand())
{
cmd.CommandText="";
using(var rdr=cmd.ExecuteNonQueryWithRetry()
{
}
}
}
//CustomRetry Policy
RetryPolicymyPolicy=new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(...)
//wecan use retry event to get the information that why you retry
//oneretry policy for connection, one retry policy for command
using(ReliableSqlConnectionconn=new ReliableSqlConnection(connsring, myPolicy, myPolicy))
{
}
//usingSQLConnection with Retry
SqlConnectionconn=new SqlConnection();
conn.OpenWithRetry()
//EntityFramework
using(NorthwindEntities context =new NorthwindEntities(connstring))
{
RetryPolicymyPolicy=new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(...);
Employeee1 = myPolicy.ExecuteAction<Employee>(() =>
(fromx in dc.Employees
wherex.LastName == "King"
selectx).First());
}