<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Scott Klein</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/ScottKlein/Atom.aspx" />
    <subtitle type="html"> </subtitle>
    <id>http://geekswithblogs.net/ScottKlein/Default.aspx</id>
    <author>
        <name>ScottKlein</name>
        <uri>http://geekswithblogs.net/ScottKlein/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2012-01-27T13:08:29Z</updated>
    <entry>
        <title>Understanding SQL Azure Throttling and Implementing Retry Logic</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2012/01/27/understanding-sql-azure-throttling-and-implementing-retry-logic.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2012/01/27/understanding-sql-azure-throttling-and-implementing-retry-logic.aspx</id>
        <published>2012-01-27T13:04:29-05:00:00</published>
        <updated>2012-01-27T13:08:29Z</updated>
        <content type="html">&lt;p&gt;I have seen a number of questions lately regarding how SQL Azure handles throttling and how to determine why the throttling occurred. Sometimes those questions are followed by another question asking how to handle throttling conditions in their applications. &lt;/p&gt;  &lt;h4&gt;Troubleshooting SQL Azure Throttling&lt;/h4&gt;  &lt;p&gt;GREAT NEWS! There actually is a way to find out if you are throttled and why, and the results of the throttling. The key is to look at the error message coming back to you. You’ll typically see an error message such as:&lt;/p&gt;  &lt;p&gt;“The server is currently busy…”&lt;/p&gt;  &lt;p&gt;Or &lt;/p&gt;  &lt;p&gt;“The service has encountered an error...”&lt;/p&gt;  &lt;p&gt;Or&lt;/p&gt;  &lt;p&gt;“The service is experiencing a problem…”&lt;/p&gt;  &lt;p&gt;There a few more, but the key is to look at the END of these messages because there will be a Code at the end. For example:&lt;/p&gt;  &lt;p&gt;“The service is currently busy. Retry the request after 10 seconds. Code %d”. &lt;/p&gt;  &lt;p&gt;The code is a decimal value, and is the vital piece of information to tracking down the throttling issue. For example, 131075. Don’t confuse this code with the error code. You’ll actually see two codes in the error message; the actual error code, and the reason code. It is the reason code we are after; the code that follows the error message.&lt;/p&gt;  &lt;p&gt;So, before we dive into this reason code number, it is also important to understand the throttling &lt;i&gt;modes&lt;/i&gt;, and throttling &lt;i&gt;types&lt;/i&gt;. The &lt;i&gt;types&lt;/i&gt; explain why you are getting throttled, and the &lt;i&gt;modes&lt;/i&gt; explain how you are being throttled. Thus, it is this decimal code value at the end of the message that specifies the &lt;i&gt;mode&lt;/i&gt; and &lt;i&gt;type&lt;/i&gt; of throttling.&lt;/p&gt;  &lt;p&gt;The two tables below show the different throttling types and modes. Throttling &lt;i&gt;types&lt;/i&gt;, the reason you are being throttled, will fall into either a soft throttling category or a hard throttling category. This is because substantially exceeded types pose a much greater risk to the system and thus are handled more aggressively. Throttling &lt;i&gt;modes&lt;/i&gt; range from no throttling at all to completely rejecting all read and writes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Throttling Types&lt;/b&gt;     &lt;/p&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;Throttling type&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Soft Throttling limit exceeded&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Hard Throttling limit exceeded&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;Temporary disk space problem occurred&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x01&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x02&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;Temporary log space problem occurred&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x04&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x08&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;High-volume transaction/write/update activity exists&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x10&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x20&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;High-volume database input/output (I/O) activity exists&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x40&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x80&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;High-volume CPU activity exists&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x100&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x200&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;Database quota exceeded&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x400&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x800&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;Too many concurrent requests occurred&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x4000&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;0x8000&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;&lt;b&gt;Throttling Modes&lt;/b&gt;     &lt;/p&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;Throttling mode&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Types of statements disallowed&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Types of statements allowed&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;0x00&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;AllowAll&lt;/b&gt; - No throttling, all queries permitted.&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;No statements disallowed&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;All statements allowed&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;0x01&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;RejectUpsert&lt;/b&gt; - Updates and Inserts will fail.&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;INSERT, UPDATE, CREATE TABLE | INDEX&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;DELETE, DROP TABLE | INDEX, TRUNCATE&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;0x02&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;RejectAllWrites&lt;/b&gt; - All writes (including deletes) will fail.&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;INSERT, UPDATE, DELETE, CREATE, DROP&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;SELECT&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;0x03&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;RejectAll&lt;/b&gt; - All reads and writes will fail.&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;All statements disallowed&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;No statements allowed&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;&lt;a name="throt_types"&gt;&lt;/a&gt;&lt;a name="Throttling_Types"&gt;&lt;/a&gt;&lt;a name="Deciphering_SQL_reason_codes_with_Window"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With the error code in hand, open up Windows Calculator and from the View menu, select Programmer. We need the calculator to run in programmer mode because we are programmers. Not really, but because we need several keys that the Programmer mode supplies. &lt;/p&gt;  &lt;p&gt;With the Calculator in Programmer mode, make sure the Dec and Dword options are selected on the left side of the calculator. Next, enter the code from the error message, in this case 131075. Now we’re getting to the good part. Once you have entered the reason code, change the notation from Dec to Hex. The reason code will now show 20003.&lt;/p&gt;  &lt;p&gt;This number is the mode and type. How? The last two digits (03) are the throttling mode. The remaining digits, in this case the first three (200), are the throttling. We can then take these two numbers and look up in the two tables and determine that the throttling mode (03) is Reject All and the throttling type is High-volume CPU activity exists.&lt;/p&gt;  &lt;p&gt;Thus, in this example the throttling occurred because too much CPU activity was taking place and therefor it was determined that Hard Throttling needed to be imposed and thus all reads are writes will fail.&lt;/p&gt;  &lt;h4&gt;Transient Fault Handling Application Block&lt;/h4&gt;  &lt;p&gt;The next step in our quest for improved performance is to implement retry logic into the application. Building something like this on your own could take months, so it sure is a good thing that it has been included in the Microsoft Enterprise Library. Now it is almost plug-n-play. &lt;/p&gt;  &lt;p&gt;The retry logic built into the Enterprise library is called the Transient Fault Handling Application Block providing a set of reusable components for adding retry logic into your Windows Azure application. You can use these components against SQL Azure, Windows Azure Storage, and the Service Bus and Caching Service.&lt;/p&gt;  &lt;p&gt;It is easy to add to your applications via Nuget. With your application open, type and run the following command in the Package Manager Console (also highlighted in the image below).&lt;/p&gt;  &lt;p&gt;Install-Package EnterpriseLibrary.WindowsAzure.TransientFaultHandling&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/ScottKlein/Windows-Live-Writer/979c5d9243d2_8ABC/Nuget_1.jpg"&gt;&lt;img style="display: inline;" title="Nuget" alt="Nuget" src="http://geekswithblogs.net/images/geekswithblogs_net/ScottKlein/Windows-Live-Writer/979c5d9243d2_8ABC/Nuget_thumb_1.jpg" width="830" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Nuget package installs the Enterprise Library and adds all the necessary references to the project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/ScottKlein/Windows-Live-Writer/979c5d9243d2_8ABC/image_2.png"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/ScottKlein/Windows-Live-Writer/979c5d9243d2_8ABC/image_thumb.png" width="458" height="462" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m going to highlight three simple examples on how to implement retry logic into your application. However, before using the components, you need to add a few directives:&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandling.SqlAzure;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; Microsoft.Practices.TransientFaultHandling;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; System.Data.EntityClient;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; System.Data.SqlClient;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This first example uses the ReliableSqlConnection class, which looks very similar to the SqlConnection class of ADO.NET, but provides a set of value-add methods. These methods ensure that connections could be reliable established and commands reliably executed against a SQL Azure database. &lt;/p&gt;  &lt;p&gt;In the code below, the ReliableSqlConnection is used to establish a reliable connection and execute a query against that connection. &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; cnn = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;ReliableSqlConnection&lt;/font&gt;&lt;/span&gt;(connString))&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;cnn.Open();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; cmd = cnn.CreateCommand())&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;cmd.CommandText = &lt;span&gt;&lt;font color="#a31515"&gt;"SELECT * FROM HumanResources.Employee"&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; rdr = cmd.ExecuteReader())&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (rdr.Read())&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size: 9.5pt;" color="#008000"&gt;//&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;The previous example is pretty plain, and doesn’t really illustrate the flexibility of the retry components. This is because we haven’t defined a retry policy. Sure, we used the ReliableSqlConnection class as shown in the previous example, and as such will provide the built-in default policy as to how many times the retry will occur, and so on. But the real power comes from defining a custom policy, via the RetryPolicy class.&lt;/p&gt;  &lt;p&gt;The RetryPolicy class allows for creating different policies based on our needs. The RetryPolicy class contains several constructors that accepts input pertaining to the retry count, retry interval timespan, and delta backoff. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/ScottKlein/Windows-Live-Writer/979c5d9243d2_8ABC/RetryPolicy.jpg"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="RetryPolicy" border="0" alt="RetryPolicy" src="http://geekswithblogs.net/images/geekswithblogs_net/ScottKlein/Windows-Live-Writer/979c5d9243d2_8ABC/RetryPolicy_thumb.jpg" width="1202" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This next code example below illustrates creating a retry policy using the RetryPolicy class, specifying the retry attempts and the fixed time between retries. This policy is then applied to the ReliablSqlConnection as both a policy to the connection as well as the policy to the command.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 9.5pt;"&gt;RetryPolicy&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; myretrypolicy = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;RetryPolicy&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;SqlAzureTransientErrorDetectionStrategy&lt;/font&gt;&lt;/span&gt;&amp;gt;(3, &lt;span&gt;&lt;font color="#2b91af"&gt;TimeSpan&lt;/font&gt;&lt;/span&gt;.FromSeconds(30));&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;ReliableSqlConnection&lt;/font&gt;&lt;/span&gt; cnn = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;ReliableSqlConnection&lt;/font&gt;&lt;/span&gt;(connString, myretrypolicy, myretrypolicy))&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size: 9.5pt;" color="#0000ff"&gt;try&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;cnn.Open();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; cmd = cnn.CreateCommand())&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;cmd.CommandText = &lt;span&gt;&lt;font color="#a31515"&gt;"SELECT * FROM HumanResources.Employee"&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; rdr = cnn.ExecuteCommand&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;IDataReader&lt;/font&gt;&lt;/span&gt;&amp;gt;(cmd))&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;                &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size: 9.5pt;" color="#008000"&gt;//&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;catch&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;Exception&lt;/font&gt;&lt;/span&gt; ex)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;MessageBox&lt;/font&gt;&lt;/span&gt;.Show(ex.Message.ToString());&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The awesome thing is that retry logic just doesn’t exist for ADO.NET APIs, but the Entity Framework as well. The implementation of the retry policy model in the Transient Fault Handling Application Block makes it easy to wrap any user code into a the scope of a retry, and for the Entity Framework this is accomplished via the ExecuteAction and ExecuteAction&amp;lt;T&amp;gt; methods of the RetryPolicy class.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;font face="Consolas"&gt;&lt;span style="font-family: ;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.5pt;"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ;"&gt;&lt;font style="font-size: 9.5pt;"&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;NorthwindEntities&lt;/font&gt;&lt;/span&gt; dc = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;NorthwindEntities&lt;/font&gt;&lt;/span&gt;())&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;RetryPolicy&lt;/font&gt;&lt;/span&gt; myPolicy = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;RetryPolicy&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;SqlAzureTransientErrorDetectionStrategy&lt;/font&gt;&lt;/span&gt;&amp;gt;(3);&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Employee&lt;/font&gt;&lt;/span&gt; e1 = myPolicy.ExecuteAction&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Employee&lt;/font&gt;&lt;/span&gt;&amp;gt;(() =&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;(&lt;span&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/span&gt; x &lt;span&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; dc.Employees&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt;&lt;/span&gt; x.LastName == &lt;/font&gt;&lt;span&gt;&lt;font style="font-size: 9.5pt;" color="#a31515"&gt;"King"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;font style="font-size: 9.5pt;"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.5pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/span&gt; x).First());&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: ;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Now, there may be times when using the ReliableSqlConnection classes just aren’t feasible. Some developers are comfortable with the existing SqlConnection classes of ADO.NET and don’t want to 1) worry about replacing their existing database logic code with new code, or 2) may not trust a newer plug-in component. And this makes sense, as the ReliableSqlConnection classes are targeted more for new development than existing applications. &lt;/p&gt;  &lt;p&gt;However, the question then becomes how to implement retry logic in existing applications. The answer is an easy one as shown in the example below. The ADO.NET SqlConnection class comes with an OpenWithRetry method which takes the same retry policy. We simply define a retry policy and pass that to the OpenWithRetry method. Equally as important, the SqlCommand object has several retry methods that provide the ability to pass a retry policy as well, including ExecuteReaderWithRetry, ExecuteNonQueryWithRetry, ExecuteScalarWithRetry, and ExecuteXmlReaderWithRetry. The example below defines a retry policy and uses that as a parameter to both the OpenWithRetry on the connection as well on the ExecuteReaderWithRetry.&lt;/p&gt;&lt;p style="margin: 0in 0in 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="color: rgb(43, 145, 175); font-family: Consolas; font-size: 9.5pt;"&gt;RetryPolicy&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; myretrypolicy = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;RetryPolicy&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SqlAzureTransientErrorDetectionStrategy&lt;/span&gt;&amp;gt;(3, &lt;span style="color: rgb(43, 145, 175);"&gt;TimeSpan&lt;/span&gt;.FromSeconds(30));&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; (&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt; cnn = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connString))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;   
&lt;/span&gt;cnn.OpenWithRetry(myretrypolicy);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: blue;"&gt;var&lt;/span&gt; cmd =
cnn.CreateCommand())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;       
&lt;/span&gt;cmd.CommandText = &lt;span style="color: rgb(163, 21, 21);"&gt;"SELECT * FROM
HumanResources.Employee"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: blue;"&gt;var&lt;/span&gt; rdr =
cmd.ExecuteReaderWithRetry(myretrypolicy))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (rdr.Read())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;               
&lt;/span&gt;&lt;span style="color: green;"&gt;//&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;

 You have several options, but the point is that you don’t need to build retry logic yourself. The Transient Fault Handling Application Block makes it very easy to implement retry logic into new or existing applications. Plus, with your trusty calculator (in Programmer mode) you can now determine why throttling might be happening and handles those situations gracefully.&lt;/p&gt;  &lt;p&gt;Happy coding!&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/148506.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/148506.aspx</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/148506.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/148506.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Enzo Backup for SQL Azure Released!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/10/14/enzo-backup-for-sql-azure-released.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/10/14/enzo-backup-for-sql-azure-released.aspx</id>
        <published>2011-10-14T16:57:09-04:00:00</published>
        <updated>2011-10-14T16:57:09Z</updated>
        <content type="html">&lt;p&gt;Blue Syntax is pleased, and very excited, to announce the general availability of Enzo Backup for SQL Azure. It took a monumental effort to put this product together. The hardest part was designing the backup and restore routines in a way that would not constently trigger the throttling safegaurds in SQL Azure. In addition to the typical retry logic, adaptive loading algorithms that know how to "slow down" the data read/load based on specific error conditions was also incorporated, while keeping its internal operations in parallel.&lt;/p&gt;
&lt;p&gt;Microsoft MVP's will have access to this backup utility at no charge. You'll quickly see that the tool is very easy to use and user-friendly, and no question the most complete backup utility available to date for SQL Azure. To get a free license, simply email &lt;a href="mailto:info@bluesyntax.net"&gt;info@bluesyntax.net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Take a look and download Enzo Backup at &lt;a href="http://www.bluesyntax.net/backup.aspx"&gt;http://www.bluesyntax.net/backup.aspx&lt;/a&gt;, which also includes the technical overview of the tool for quick reference.&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/147312.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/147312.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/147312.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/147312.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Honolulu Hawaii Azure Boot Camp Dates</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/10/07/honolulu-hawaii-azure-boot-camp-dates.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/10/07/honolulu-hawaii-azure-boot-camp-dates.aspx</id>
        <published>2011-10-07T22:02:08-04:00:00</published>
        <updated>2011-10-07T22:02:08Z</updated>
        <content type="html">&lt;p&gt;Just confirmed the Azure Boot Camp dates for Honolulu Hawaii. November 14th and 15th. See &lt;a href="http://www.azurebootcamp.com/city/Honolulu"&gt;http://www.azurebootcamp.com/city/Honolulu&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/147219.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/147219.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/147219.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/147219.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Registration links are up for Charlotte and Mountain View Azure Boot Camps</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/09/22/registration-links-are-up-for-charlotte-and-mountain-view-azure.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/09/22/registration-links-are-up-for-charlotte-and-mountain-view-azure.aspx</id>
        <published>2011-09-22T12:31:45-04:00:00</published>
        <updated>2011-09-22T12:31:45Z</updated>
        <content type="html">&lt;p&gt;The Registration links for the Charlotte, NC and Mountain View, CA Azure Boot Camps are now up on the Azure Boot Camp site:  &lt;a href="http://www.azurebootcamp.com/schedule"&gt;&lt;font color="#000080"&gt;http://www.azurebootcamp.com/schedule&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See you there!&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/147000.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/147000.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/147000.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/147000.aspx</trackback:ping>
    </entry>
    <entry>
        <title>New Azure Boot Camp Dates and Locations</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/09/19/new-azure-boot-camp-dates-and-locations.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/09/19/new-azure-boot-camp-dates-and-locations.aspx</id>
        <published>2011-09-19T21:12:24-04:00:00</published>
        <updated>2011-09-19T21:12:24Z</updated>
        <content type="html">&lt;div class="postText"&gt;
&lt;p&gt;We are happy to announce two new Azure Boot Camp dates:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Charlotte, NC - October 27th and 28th&lt;/li&gt;
    &lt;li&gt;Mountain View, CA - November 7th and 8th&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These boot camps are a FREE two day deep dive class to get you up to speed on developing for Windows Azure.&lt;/p&gt;
&lt;p&gt;Stay tuned for dates in the following locations:&lt;/p&gt;
&lt;p&gt;Hawaii, Irvine CA, Denver CO, New York NY, Portland OR, and Seattle WA.&lt;/p&gt;
&lt;p&gt;Information and Registration information about all Azure Boot Camps can be found here: &lt;a href="http://www.azurebootcamp.com/schedule"&gt;&lt;font color="#000080"&gt;http://www.azurebootcamp.com/schedule&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scott&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/146948.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/146948.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/146948.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/146948.aspx</trackback:ping>
    </entry>
    <entry>
        <title>3rd Annual South Florida SQL Saturday - August 13th!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/06/27/3rd-annual-south-florida-sql-saturday---august-13th.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/06/27/3rd-annual-south-florida-sql-saturday---august-13th.aspx</id>
        <published>2011-06-27T13:10:27-04:00:00</published>
        <updated>2011-06-27T13:10:27Z</updated>
        <content type="html">&lt;p&gt;The 3rd annual South Florida SQL Saturday event will be help August 13th, 2011 at Nova Southeastern University in Davie, FL. This is a change in venue from last year as DeVry is in the middle of a major remodling project.&lt;/p&gt;
&lt;p&gt;We has almost 450 last year, and we expect to have over 500 this year with great speakers such as Andy Warren, Herve Roggero, and more! As always, we our goal is to feed you well, so we are shooting for some hot lunch food this year. We are working on that now and will update you as soon as we firm it up.&lt;/p&gt;
&lt;p&gt;One of the things we will be trying this year is 90-100 minute sessions on a couple of tracks. We strongly feel that several topics are just getting warmed up in 45 minutes, so we are going to experiment with 90-100 minute sessions on some of the BI topics.&lt;/p&gt;
&lt;p&gt;We would love to see you there!&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/145991.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/145991.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/145991.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/145991.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Enzo Backup for SQL Azure Beta Released!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/06/27/enzo-backup-for-sql-azure-beta-released.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/06/27/enzo-backup-for-sql-azure-beta-released.aspx</id>
        <published>2011-06-27T13:02:33-04:00:00</published>
        <updated>2011-06-27T13:02:33Z</updated>
        <content type="html">&lt;p&gt;Blue Syntax is happy to announce the release of their SQL Azure database backup product! Enzo Backup for SQL Azure offers unparalleled backup and restored functionlity and flexibility of a SQL Azure database. You can download the beta release here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bluesyntax.net/backup.aspx"&gt;http://www.bluesyntax.net/backup.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With Enzo Backup for SQL Azure, you can:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create a backup blob, or a backup file from a SQL Azure database&lt;/li&gt;
    &lt;li&gt;Restore a SQL Azure database from a backup blob, or a backup file&lt;/li&gt;
    &lt;li&gt;Perform limited backup and restore of SQL Server databases (see details)&lt;/li&gt;
    &lt;li&gt;Run backups entirely in the cloud using a remote agent&lt;/li&gt;
    &lt;li&gt;Backup a single schema of a database&lt;/li&gt;
    &lt;li&gt;Restore specific tables only&lt;/li&gt;
    &lt;li&gt;Copy backup devices from on-premise to the cloud&lt;/li&gt;
    &lt;li&gt;Use a command-line utility to perform backup operations&lt;/li&gt;
    &lt;li&gt;Perform transactionally consistent backups for SQL Azure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please download it and provide us your feed back!&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/145990.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/145990.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/145990.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/145990.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Phoenix and Las Vegas Azure Boot Camp Dates Finalized</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/06/14/phoenix-and-las-vegas-azure-boot-camp-dates-finalized.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/06/14/phoenix-and-las-vegas-azure-boot-camp-dates-finalized.aspx</id>
        <published>2011-06-14T23:22:49-04:00:00</published>
        <updated>2011-06-14T23:22:49Z</updated>
        <content type="html">&lt;div class="postText"&gt;
&lt;p&gt;The dates for the Las Vegas and Phoenix Azure Boot Camps have been finalized.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Las Vegas - August 17 and 18&lt;/li&gt;
    &lt;li&gt;Phoenix - August 24 and 25&lt;/li&gt;
    &lt;li&gt;Salt Lake City - September 23 and 24&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These boot camps are a FREE two day deep dive class to get you up to speed on developing for Windows Azure.&lt;/p&gt;
&lt;p&gt;Information and Registration information about all Azure Boot Camps can be found here: &lt;a href="http://www.azurebootcamp.com/schedule"&gt;&lt;font color="#000080"&gt;http://www.azurebootcamp.com/schedule&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scott&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/145866.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/145866.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/145866.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/145866.aspx</trackback:ping>
    </entry>
    <entry>
        <title>Azure Boot Camps on the West Coast</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2011/05/30/azure-boot-camps-on-the-west-coast.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2011/05/30/azure-boot-camps-on-the-west-coast.aspx</id>
        <published>2011-05-30T20:21:40-04:00:00</published>
        <updated>2011-05-30T20:49:14Z</updated>
        <content type="html">&lt;p&gt;Blue Syntax has been working with Microsoft and the Central Region DPE's to help train at many of the Azure Boot Camps throughout the Central Region, including Dallas, St. Louis, Nashville, and Indianapolis. Blue Syntax is proud to announce that they are holding Azure Boot Camps on the West Coast starting in June. The cities and dates are as follows:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;San Francisco - June 13 and 14&lt;/li&gt;
    &lt;li&gt;Phoenix - TBD&lt;/li&gt;
    &lt;li&gt;Las Vegas - TBD&lt;/li&gt;
    &lt;li&gt;Salt Lake City - September 23 and 24&lt;/li&gt;
    &lt;li&gt;Irvine - TBD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phoenix, Las Vegas, and Irvine dates will be confirmed within the next week. Once I have those dates I will post here.&lt;/p&gt;
&lt;p&gt;Information and Registration information about all Azure Boot Camps can be found here: &lt;a href="http://www.azurebootcamp.com/schedule"&gt;http://www.azurebootcamp.com/schedule&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scott&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/145637.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/145637.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/145637.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/145637.aspx</trackback:ping>
    </entry>
    <entry>
        <title>2011 SQL Cruises Announced!</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/ScottKlein/archive/2010/11/04/2011-sql-cruises-announced.aspx" />
        <id>http://geekswithblogs.net/ScottKlein/archive/2010/11/04/2011-sql-cruises-announced.aspx</id>
        <published>2010-11-04T18:49:29-04:00:00</published>
        <updated>2010-11-04T18:49:29Z</updated>
        <content type="html">&lt;p&gt;Brent Ozar and Tim Ford announced today they have two SQL Cruises planned for 2011. If you don't know what a SQL Cruise is, you are missing out. Hop on over to their SQL &lt;a href="http://sqlcruise.com/"&gt;Cruise&lt;/a&gt; site for information, but I'll briefly tell you that Brent and Tim have found themselves a niche. Brent and Tim simply reserved some space on a cruise ship, and for a low price for the cruise and a VERY low price for quality training, you are enjoying quality time with fellow SQL folks as well as relaxing as you travel to great destinations! How can you beat cruising to great places while learning SQL at the same time, from two stalwart SQL Server gurus?!?!&lt;/p&gt;
&lt;p&gt;For 2011 they have two cruises planned:&lt;/p&gt;
&lt;p&gt;A 5-day cruise leaving March 6th out of Miami to Grand Cayman and Cozumel. This cruise is geared toward entry-level and beginner SQL Server professionals who have 1-3 years of experience working with SQL Server.&lt;/p&gt;
&lt;p&gt;A 7-day cruise leaving May 29th out of Seattle to Alaska. This cruise is aimed at the moderate and advanced SQL Server Professionals, with Buck Woody as a guest speaker!&lt;/p&gt;
&lt;p&gt;Sign up today! Seats go fast.&lt;/p&gt;&lt;img src="http://geekswithblogs.net/ScottKlein/aggbug/142598.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/ScottKlein/comments/142598.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/ScottKlein/comments/commentRss/142598.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/ScottKlein/services/trackbacks/142598.aspx</trackback:ping>
    </entry>
</feed>
