<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'sql server' and 'Database Testing'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=sql+server,Database+Testing&amp;orTags=0</link><description>Search results matching tags 'sql server' and 'Database Testing'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Quick Database Connectivity Testing</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2011/08/26/quick-database-connectivity-testing.aspx</link><pubDate>Fri, 26 Aug 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:38079</guid><dc:creator>andyleonard</dc:creator><description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ever find yourself needing to test connectivity, but you’re on a machine with no client tools? It happens to me occasionally. Here’s one trick to help: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UDL files&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Right-click on the Windows Desktop, hover over New, and click Text Document:&lt;/p&gt;  &lt;p&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;background-image:none;" border="0" src="http://vsteamsystemcentral.com/images/ext/UDL0.jpg"&gt;&lt;/p&gt;  &lt;p&gt;Rename the file to test.udl:&lt;/p&gt;  &lt;p&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;background-image:none;" border="0" src="http://vsteamsystemcentral.com/images/ext/UDL1.jpg"&gt;&lt;/p&gt;  &lt;p&gt;Because you are changing the extension, you will be prompted:&lt;/p&gt;  &lt;p&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;background-image:none;" border="0" src="http://vsteamsystemcentral.com/images/ext/UDL2.jpg"&gt;&lt;/p&gt;  &lt;p&gt;Click Yes. Double-click the test.udl file to open the Data Link Properties window. Enter (or select) the server name, select integrated security or SQL Login and provide credentials, then select or enter a database name:&lt;/p&gt;  &lt;p&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;background-image:none;" border="0" src="http://vsteamsystemcentral.com/images/ext/UDL3.jpg"&gt;&lt;/p&gt;  &lt;p&gt;Click the Test Connection button to test connectivity:&lt;/p&gt;  &lt;p&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;background-image:none;" border="0" src="http://vsteamsystemcentral.com/images/ext/UDL4.jpg"&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There you have it – a way to test connectivity without database client tools installed!&lt;/p&gt;  &lt;p&gt;:{&amp;gt;&lt;/p&gt;</description></item><item><title>Stress testing UPSERTs</title><link>http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/12/14/stress-testing-upserts.aspx</link><pubDate>Mon, 15 Dec 2008 01:30:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:10522</guid><dc:creator>Alexander Kuznetsov</dc:creator><description>&lt;p class="MsoNormal"&gt;Suppose that you need to implement the following logic:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;IF(row exists)&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;Update the row&lt;/p&gt;

&lt;p class="MsoNormal"&gt;ELSE&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Insert a new row.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;If you already are on 2008, you should use MERGE command,
and you don’t need to read this post. Prior to 2008 this logic has to be
implemented using UPDATE and INSERT commands. I will stress test several UPSERT
implementations in a high concurrency environment. I will demonstrate that
under most circumstances the best approach is to serialize your modifications.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Prerequisites&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;The following tables are used in this post:&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTs]&lt;span style="color:gray;"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[ID] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[i1] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[i2] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[i3] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[ID] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[i1] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[i2] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[error] [int] &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:gray;"&gt;);&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p style="font-weight:bold;" class="MsoNormal"&gt;Implementing optimistic approach&lt;/p&gt;
&lt;p style="font-weight:bold;" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Optimistic approach means that the procedure does not
prevent any race conditions up front – it handles errors caused by concurrency
as they occur. The following procedure implements optimistic approach and logs
all the errors:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;SaveTwoINTs&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;NOCOUNT&lt;/span&gt;
&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;XACT_ABORT&lt;/span&gt;
&lt;span style="color:blue;"&gt;OFF&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;
&lt;span style="color:blue;"&gt;ISOLATION&lt;/span&gt; &lt;span style="color:blue;"&gt;LEVEL&lt;/span&gt;
&lt;span style="color:blue;"&gt;READ&lt;/span&gt; COMMITTED&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt; @ret &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:blue;"&gt;TRAN&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt;
dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoINTs&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; i3&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;2601
&lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; error&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;UPDATE&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoINTs &lt;span style="color:blue;"&gt;SET&lt;/span&gt; i1&lt;span style="color:gray;"&gt;=&lt;/span&gt;i1&lt;span style="color:gray;"&gt;+&lt;/span&gt;@i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;=&lt;/span&gt;i2&lt;span style="color:gray;"&gt;+&lt;/span&gt;@i2 &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; ID&lt;span style="color:gray;"&gt;=&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;0 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; error&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt; &lt;span style="color:blue;"&gt;ELSE&lt;/span&gt;
&lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;0 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; error&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;COMMIT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;RETURN&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Stress testing optimistic approach&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;The following two procedures upsert 50K values each, the
first one into column i1, and the second one into column i2:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; Testers&lt;span style="color:gray;"&gt;.&lt;/span&gt;UpsertLoop1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @ID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @count &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @count &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;WHILE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @count&lt;span style="color:gray;"&gt;&amp;lt;&lt;/span&gt;50000 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; @ID &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;),&lt;/span&gt;0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; 1 &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoInts&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;SaveTwoINTs @ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1&lt;span style="color:gray;"&gt;,&lt;/span&gt; 0&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @count &lt;span style="color:gray;"&gt;=&lt;/span&gt; @count &lt;span style="color:gray;"&gt;+&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; Testers&lt;span style="color:gray;"&gt;.&lt;/span&gt;UpsertLoop2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @ID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @count &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;SET&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @count &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;WHILE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; @count&lt;span style="color:gray;"&gt;&amp;lt;&lt;/span&gt;50000 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; @ID &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;),&lt;/span&gt;0&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;+&lt;/span&gt; 1 &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoInts&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;SaveTwoINTs @ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; 0&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @count &lt;span style="color:gray;"&gt;=&lt;/span&gt; @count &lt;span style="color:gray;"&gt;+&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;When I simultaneously ran these two test procedures from two
connections, all values were saved, and in more than 90% cases a row was
actually updated from both connections:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;i1&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;i2&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTs]&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;i1&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;i2&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTs] &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; i1&lt;span style="color:gray;"&gt;+&lt;/span&gt;i2&lt;span style="color:gray;"&gt;=&lt;/span&gt;2&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;----------- -----------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;50000&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;50000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;----------- -----------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;46030&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;46030&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;As you have seen, all values were saved. Was it because the
procedure actually works in high concurrency environments, or was it just because
the stress test harness was too weak to expose problems?&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Does this test harness actually work?
&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Whenever you do stress testing, you need to demonstrate that
your harness actually works. You need to come up with a procedure which work
without concurrency, and have your harness expose problems in it. Here is a
faulty implementation:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;ALTER&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;SaveTwoINTs&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;NOCOUNT&lt;/span&gt;
&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;
&lt;span style="color:blue;"&gt;ISOLATION&lt;/span&gt; &lt;span style="color:blue;"&gt;LEVEL&lt;/span&gt;
&lt;span style="color:blue;"&gt;READ&lt;/span&gt; COMMITTED&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt; @ret &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:blue;"&gt;TRAN&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;UPDATE&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoINTs &lt;span style="color:blue;"&gt;SET&lt;/span&gt; i1&lt;span style="color:gray;"&gt;=&lt;/span&gt;i1&lt;span style="color:gray;"&gt;+&lt;/span&gt;@i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;=&lt;/span&gt;i2&lt;span style="color:gray;"&gt;+&lt;/span&gt;@i2 &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; ID&lt;span style="color:gray;"&gt;=&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@ROWCOUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;0 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoINTs&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; i3&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;0 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; error&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;COMMIT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;RETURN&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Set up a fresh start before you rerun the loop tests:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;TRUNCATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;TRUNCATE&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTs]&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Rerun the loop tests. Clearly the faulty procedure does not
work under high concurrency:&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;i1&lt;span style="color:gray;"&gt;),&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;i2&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTs]&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;----------- -----------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;46433&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;39017&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;If it worked, I would get 50000 in both cases.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Implementing and stress testing pessimistic
approach.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Pessimistic approach means that you acquire some kind of
exclusive lock before you start modifications and hold it until you commit – once
the lock is acquired, this eliminates all concurrency. Let us reuse the technique
published by SQL Server MVP Tony Rogerson in his blog:&lt;/p&gt;

&lt;a href="http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/06/30/855.aspx"&gt;here&lt;/a&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;ALTER&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;SaveTwoINTs&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2 &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;NOCOUNT&lt;/span&gt;
&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;
&lt;span style="color:blue;"&gt;ISOLATION&lt;/span&gt; &lt;span style="color:blue;"&gt;LEVEL&lt;/span&gt;
&lt;span style="color:blue;"&gt;READ&lt;/span&gt; COMMITTED&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt; @ret &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;=&lt;/span&gt;0&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:blue;"&gt;TRAN&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt;
@result &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;
@iteration &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;
@resourceName &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;
@result &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:gray;"&gt;-&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @iteration &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;span style="color:gray;"&gt;,&lt;/span&gt; @resourceName &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;'dbo.TwoINTs '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID &lt;span style="color:blue;"&gt;AS&lt;/span&gt; &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHILE&lt;/span&gt;
@result &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;IN&lt;/span&gt; &lt;span style="color:gray;"&gt;(&lt;/span&gt; 0&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1 &lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;-- Only successful
return codes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt;
@result &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:maroon;"&gt;sp_getapplock&lt;/span&gt;
@Resource &lt;span style="color:gray;"&gt;=&lt;/span&gt; @resourceName&lt;span style="color:gray;"&gt;,&lt;/span&gt; @LockMode &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;'Exclusive'&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;
@iteration &lt;span style="color:gray;"&gt;=&lt;/span&gt; @iteration &lt;span style="color:gray;"&gt;+&lt;/span&gt;1&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt;
@iteration&lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;1000 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;RAISERROR&lt;/span&gt;
&lt;span style="color:gray;"&gt;(&lt;/span&gt; &lt;span style="color:red;"&gt;'Lock failed to
acquire.'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; 16&lt;span style="color:gray;"&gt;,&lt;/span&gt;
1 &lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ROLLBACK&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;RETURN&lt;/span&gt; &lt;span style="color:gray;"&gt;-&lt;/span&gt;1&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;UPDATE&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoINTs &lt;span style="color:blue;"&gt;SET&lt;/span&gt; i1&lt;span style="color:gray;"&gt;=&lt;/span&gt;i1&lt;span style="color:gray;"&gt;+&lt;/span&gt;@i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;=&lt;/span&gt;i2&lt;span style="color:gray;"&gt;+&lt;/span&gt;@i2 &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; ID&lt;span style="color:gray;"&gt;=&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@ROWCOUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;0 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;TwoINTs&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; i3&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; @ret &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;@@ERROR&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;0 &lt;span style="color:blue;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; [dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[TwoINTsErrorLog]&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; error&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@ID&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i1&lt;span style="color:gray;"&gt;,&lt;/span&gt; @i2&lt;span style="color:gray;"&gt;,&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;COMMIT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;RETURN&lt;/span&gt; @ret&lt;span style="color:gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;END&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;If you stress test this procedure in the same way as before,
you will see that no saves are lost and no errors are raised.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Performance considerations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Under high concurrency, the pessimistic approach repeatedly
runs noticeably faster. Typical costs on my laptop are as follows:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Pessimistic: CPU – 12600, duration - 35500&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Optimistic: CPU – 16400, duration – 50800&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Without any concurrency, the optimistic approach repeatedly
runs slightly faster. Typical costs on my laptop are as follows:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Pessimistic: CPU – 12200, duration - 29500&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Optimistic: CPU – 10900, duration – 26800&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Note that for this benchmarking I commented out logging
errors into a table, which made very little difference.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Isolation level considerations&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;As usual in such cases, if you up isolation level to
REPEATABLE READ or to SERILIZABLE, you will get a lot of deadlocks.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;This post continues my series on defensive database programming.The next post is:&lt;/p&gt;&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/01/25/defensive-database-programming-set-vs-select.aspx"&gt;Defensive database programming: SET vs. SELECT.&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here are the previous posts&amp;nbsp; from the series:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/12/08/defensive-database-programming-fun-with-update.aspx"&gt;Defensive database programming: fun with UPDATE.&lt;/a&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/11/27/defensive-database-programming-if-statement-vs-where-clause.aspx"&gt;Defensive database programming: eliminating IF statements.&lt;/a&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/11/19/defensive-database-programming-fun-with-changing-column-widths.aspx"&gt;Defensive database programming: fun with changing column widths.&lt;/a&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/11/15/avoid-mixing-old-and-new-styles-of-error-handling.aspx"&gt;Avoid mixing old and new styles of error handling.&lt;/a&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/11/08/defensive-database-programming-adding-escape-clauses.aspx"&gt;Defensive database programming: adding ESCAPE clauses.&lt;/a&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/10/25/defensive-database-programming-qualifying-column-names.aspx"&gt;Defensive database programming: qualifying column names.&lt;/a&gt;
&lt;a href="http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/10/21/defensive-database-programming-rewriting-queries-with-not-in.aspx"&gt;Defensive database programming: rewriting queries with NOT IN().&lt;/a&gt;</description></item><item><title>Fun with DBCC CHECKIDENT</title><link>http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/06/26/fun-with-dbcc-chekident.aspx</link><pubDate>Thu, 26 Jun 2008 21:51:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7531</guid><dc:creator>Alexander Kuznetsov</dc:creator><description>
&lt;p class="MsoNormal"&gt;&amp;lt;Denis Gobo’s mode on&amp;gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Suppose you have an empty table:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;COUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;(*)&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; SampleTable&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;---&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;What would be the result of the following query:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;DBCC&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; CHECKIDENT&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'SampleTable'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; RESEED&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;INSERT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; SampleTable&lt;span style="color:gray;"&gt;(&lt;/span&gt;j&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; 1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;SCOPE_IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:14pt;font-family:'Courier New';"&gt;&lt;span style="color:gray;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:14pt;font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&amp;lt;Denis Gobo’s mode off&amp;gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Surprisingly enough, the answer is “it depends”. If the
table is brand new, you’ll get one, if there have been inserts into the table,
the answer is 2. See for yourself:&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt;
SampleTable&lt;span style="color:gray;"&gt;(&lt;/span&gt;i &lt;span style="color:blue;"&gt;INT&lt;/span&gt;
&lt;span style="color:blue;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; j &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;COUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;(*)&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; SampleTable&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;---&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;0&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;DBCC&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; CHECKIDENT&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'SampleTable'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; RESEED&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;INSERT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; SampleTable&lt;span style="color:gray;"&gt;(&lt;/span&gt;j&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; 1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;SCOPE_IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;---&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;DELETE&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt;
SampleTable&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;DBCC&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; CHECKIDENT&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'SampleTable'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; RESEED&lt;span style="color:gray;"&gt;,&lt;/span&gt; 1&lt;span style="color:gray;"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;INSERT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; SampleTable&lt;span style="color:gray;"&gt;(&lt;/span&gt;j&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:fuchsia;"&gt;SCOPE_IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;---&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:green;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;2&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Even more surprising is the fact that this inconsistent behavior
is by design – it has been documented in MSDN:&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa258817%28SQL.80%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa258817(SQL.80).aspx&lt;/a&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;quoting from this MSDN article: “If no rows have been
inserted to the table since it was created, the first row inserted after
executing DBCC CHECKIDENT will use &lt;i&gt;new_reseed_value&lt;/i&gt; as the identity.
Otherwise, the next row inserted will use &lt;i&gt;new_reseed_value&lt;/i&gt; + 1.”&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;So far I cannot come up
with a reason why such inconsistent behavior could be required. Any feedback is
welcome. &lt;/p&gt;

&lt;p class="MsoNormal"&gt;Anyway, if you are unit testing a stored procedure inserting
into a table with identity, this feature of DBCC CHECKIDENT may break your unit
tests. The workaround that I am using in my database unit testing is simple –
when I set up my test fixture, I run the following script against all the
tables with identities:&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;BEGIN &lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;TRY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;INSERT INTO &lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;MySchema.MyTable &lt;span style="color:blue;"&gt;DEFAULT VALUES&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;END &lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;TRY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;BEGIN &lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;CATCH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;PRINT &lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;'1'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;END &lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;CATCH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;</description></item><item><title>Database Unit Testing: Impersonation</title><link>http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/06/18/database-unit-testing-impersonation.aspx</link><pubDate>Wed, 18 Jun 2008 16:19:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7367</guid><dc:creator>Alexander Kuznetsov</dc:creator><description>

&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;When you run NUnit/C# unit tests against your local
instance, you are a dbo. As such, you are not getting any errors caused by
missing permissions. However, you can impersonate another user, and run your
unit tests in the context of that other user. The following test harness demonstrates
the technique:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
System.Data;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
System.Data.SqlClient;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
NUnit.Framework;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;namespace&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; MyDB.Tests&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;TestFixture&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;class&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;ImpersonatorTests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;SqlConnection&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; connection = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;null&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Impersonator&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; realUser;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#region&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; constants&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; userName =
&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"me"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; domainName
= &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"myDomain"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#region&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; hide me&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; pwd = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"myPassword"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#endregion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#endregion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;TestFixtureSetUp&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
TestFixtureSetUp()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;realUser = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;new&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Impersonator&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(userName, domainName, pwd);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;connection = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;new&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;SqlConnection&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"server=(local);trusted_connection=true;database=FinancialDW;"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;connection.Open();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;TestFixtureTearDown&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
TestFixtureTearDown()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; (realUser
!= &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;null&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;) realUser.Dispose();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Test&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
ImpersonationSucceededTest()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;SqlCommand&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; reader =
connection.CreateCommand();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;reader.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"SELECT SUSER_NAME()"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;reader.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; suserName
= reader.ExecuteScalar().ToString();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Assert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.AreEqual(&lt;span&gt;@"myDomain\me"&lt;/span&gt;&lt;b&gt;, suserName);&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:green;"&gt;//Console.WriteLine(suserName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Test&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
CanSelectFromSalesTest()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;SqlCommand&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; reader =
connection.CreateCommand();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;reader.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"SELECT COUNT(*) FROM Data.Sales"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;reader.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; numRows = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Parse(reader.ExecuteScalar().ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Assert&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.IsTrue(numRows
&amp;gt;= 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;So, if the myDomain\me user does not have the SELECT
permission on Data.Sales, I am getting an exception:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.5pt;line-height:115%;font-family:'Courier New';"&gt;System.Data.SqlClient.SqlException:&amp;nbsp;SELECT&amp;nbsp;permission&amp;nbsp;denied&amp;nbsp;on&amp;nbsp;object&amp;nbsp;'Sales',&amp;nbsp;database&amp;nbsp;'MyDb',&amp;nbsp;schema&amp;nbsp;'data'&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;The code that I used to implement the Impersonator class is
mostly copied and pasted from &lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';color:green;"&gt;&lt;a href="http://support.microsoft.com/?scid=306158"&gt;http://support.microsoft.com/?scid=306158&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;, and here it is:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; System;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
System.Runtime.InteropServices;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
System.Security.Principal;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;namespace&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; MyDB.Tests&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;class&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Impersonator&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IDisposable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:green;"&gt;/* code taken from&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:green;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;http://support.microsoft.com/?scid=306158&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:green;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:green;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
LOGON32_LOGON_INTERACTIVE = 2;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
LOGON32_PROVIDER_DEFAULT = 0;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;WindowsImpersonationContext&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
impersonationContext;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;DllImport&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"advapi32.dll"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;)]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;static&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;extern&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
LogonUserA(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; lpszUserName,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
lpszDomain,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
lpszPassword,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
dwLogonType,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
dwLogonProvider,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;ref&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; phToken);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;DllImport&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"advapi32.dll"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;, CharSet = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;CharSet&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Auto, SetLastError = &lt;span style="color:blue;"&gt;true&lt;/span&gt;&lt;b&gt;)]&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;static&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;extern&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
DuplicateToken(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; hToken,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
impersonationLevel,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;ref&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; hNewToken);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;DllImport&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"advapi32.dll"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;, CharSet = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;CharSet&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Auto, SetLastError = &lt;span style="color:blue;"&gt;true&lt;/span&gt;&lt;b&gt;)]&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;static&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;extern&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
RevertToSelf();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;DllImport&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"kernel32.dll"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;, CharSet = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;CharSet&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Auto)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;static&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;extern&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
CloseHandle(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; handle);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
Impersonator(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; user, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; domain, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; password)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(!ImpersonateValidUser(user,
domain, password))&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;throw&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;new&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Exception&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Format(&lt;span&gt;@"Logon
failed for {0}\{1}"&lt;/span&gt;&lt;b&gt;, domain, user));&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
ImpersonateValidUser(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; userName, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; domain, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;String&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; password)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;WindowsIdentity&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
tempWindowsIdentity;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; token = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Zero;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
tokenDuplicate = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Zero;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; (RevertToSelf())&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
(LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE,&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;LOGON32_PROVIDER_DEFAULT, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;ref&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; token) !=
0)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
(DuplicateToken(token, 2, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;ref&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; tokenDuplicate) != 0)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tempWindowsIdentity = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;new&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;WindowsIdentity&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;(tokenDuplicate);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;impersonationContext =
tempWindowsIdentity.Impersonate();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
(impersonationContext != &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;null&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CloseHandle(token);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;CloseHandle(tokenDuplicate);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;true&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; (token != &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Zero)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CloseHandle(token);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
(tokenDuplicate != &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;IntPtr&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;.Zero)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CloseHandle(tokenDuplicate);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;false&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#region&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
IDisposable Members&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; Dispose()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
(impersonationContext != &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;null&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;impersonationContext.Undo();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:'Courier New';color:blue;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;#endregion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;</description></item><item><title>Database Edition Now Does DB2!</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2008/06/16/database-edition-now-does-db2.aspx</link><pubDate>Mon, 16 Jun 2008 16:20:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7322</guid><dc:creator>andyleonard</dc:creator><description>&lt;P&gt;Tech Ed 2008 included&amp;nbsp;some major announcements for database development folks. One of the biggees was &lt;A class="" href="http://www.microsoft.com/presspass/press/2008/jun08/06-03TechEdDevPR.mspx" target=_blank&gt;this&lt;/A&gt; - and announcement that Database Edition is going to support DB2 development! &lt;/P&gt;
&lt;P&gt;Gert and the team have been working hard to expand the underlying architecture and functionality&amp;nbsp;of Database Edition (making it extrememly difficult for this one author I know in Farmville to keep up... I'm not complaining!). Rearchitecting Data Dude to&amp;nbsp;utilize a provider-based model was no small task, but the team at Microsoft has been able to pull it off - way to go team!&lt;/P&gt;
&lt;P&gt;These changes affect a lot of how Database Edition currently works. We were given a preview at the MVP Summit in April. The work is impressive, but the ability and agility provided by the new architecture is even more so.&lt;/P&gt;
&lt;P&gt;You will see a ton of changes with the release of Visual Studio Team System 2008 Database Edition GDR. You can currently download the June CTP &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en" target=_blank&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;:{&amp;gt; Andy&lt;/P&gt;</description></item><item><title>Unit Testing Tips: Reproduce a Lock Timeout</title><link>http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/05/30/unit-testing-tips-reproduce-a-lock-timeout.aspx</link><pubDate>Fri, 30 May 2008 22:24:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7086</guid><dc:creator>Alexander Kuznetsov</dc:creator><description>

&lt;p class="MsoNormal"&gt;Well, I have just finished a series of articles about unit testing
on simple-talk.com, and some techniques were not included, just to keep the
articles short. Still problems such as reproducing a lock timeout and unit testing
the retry after it (lock timeout) are interesting, at least to me, so I am
continuing.&lt;/p&gt;

&lt;p class="MsoNormal"&gt;You will need the database StressTests, which can be
downloaded at the following URL:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;line-height:115%;"&gt;&lt;a href="http://www.simple-talk.com/sql/t-sql-programming/close-these-loopholes---reproduce-database-errors/"&gt;http://www.simple-talk.com/sql/t-sql-programming/close-these-loopholes---reproduce-database-errors/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;You will also need the following stored procedure which logs
the timeout and retries at most five times:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;PROCEDURE&lt;/span&gt;
[Writers]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[UpdateUserWithRetry]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;@UserID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;@FirstName &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;8&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;@LastName &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;8&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;@Position &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;8&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;AS&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SET&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;NOCOUNT&lt;/span&gt;
&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;DECLARE&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; @ret &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @succeeded &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; @attemptNumber &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; @ret &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;span style="color:gray;"&gt;,&lt;/span&gt; @succeeded &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;span style="color:gray;"&gt;,&lt;/span&gt; @attemptNumber &lt;span style="color:gray;"&gt;=&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;WHILE&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;@succeeded &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0 &lt;span style="color:gray;"&gt;AND&lt;/span&gt;
@attemptNumber &lt;span style="color:gray;"&gt;&amp;lt;&lt;/span&gt; 5&lt;span style="color:gray;"&gt;)&lt;/span&gt;
&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;
@attemptNumber &lt;span style="color:gray;"&gt;=&lt;/span&gt; @attemptNumber &lt;span style="color:gray;"&gt;+&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:blue;"&gt;TRY&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;UPDATE&lt;/span&gt;
Data&lt;span style="color:gray;"&gt;.&lt;/span&gt;Users &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; FirstName &lt;span style="color:gray;"&gt;=&lt;/span&gt; @FirstName&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;LastName &lt;span style="color:gray;"&gt;=&lt;/span&gt; @LastName&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Position &lt;span style="color:gray;"&gt;=&lt;/span&gt; @Position&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; UserID &lt;span style="color:gray;"&gt;=&lt;/span&gt; @UserID&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;
@succeeded &lt;span style="color:gray;"&gt;=&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt; &lt;span style="color:blue;"&gt;TRY&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:blue;"&gt;CATCH&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF&lt;/span&gt;
&lt;span style="color:gray;"&gt;(&lt;/span&gt;XACT_STATE&lt;span style="color:gray;"&gt;())&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:gray;"&gt;-&lt;/span&gt;1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ROLLBACK&lt;/span&gt; &lt;span style="color:blue;"&gt;TRANSACTION&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT&lt;/span&gt;
&lt;span style="color:blue;"&gt;INTO&lt;/span&gt; Data&lt;span style="color:gray;"&gt;.&lt;/span&gt;ErrorLog&lt;span style="color:gray;"&gt;(&lt;/span&gt;ERROR_PROCEDURE&lt;span style="color:gray;"&gt;,&lt;/span&gt;
ERROR_LINE&lt;span style="color:gray;"&gt;,&lt;/span&gt; ERROR_NUMBER&lt;span style="color:gray;"&gt;,&lt;/span&gt; ERROR_MESSAGE&lt;span style="color:gray;"&gt;,&lt;/span&gt; ERROR_TIME&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; ERROR_PROCEDURE&lt;span style="color:gray;"&gt;(),&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;ERROR_LINE&lt;span style="color:gray;"&gt;(),&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;ERROR_NUMBER&lt;span style="color:gray;"&gt;(),&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;ERROR_MESSAGE&lt;span style="color:gray;"&gt;(),&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:fuchsia;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt;
@ret &lt;span style="color:gray;"&gt;=&lt;/span&gt; 1&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt; &lt;span style="color:blue;"&gt;CATCH&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;END&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;RETURN&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:'Courier New';"&gt; @ret&lt;span style="color:gray;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;Also you will need the LockTimouter class which reproduces a
lock timeout inside your stored procedure: &lt;/p&gt;

&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;- it opens another connection,&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;- &lt;/span&gt;begins a
transaction, &lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - modifies the data from that connection, &lt;/p&gt;

&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - then it attempts to modify the same data from
your stored procedure&lt;/p&gt;

&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-0.25in;"&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span&gt;·&lt;span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - releases the lock as soon as your error is
logged, so that your retry can succeed&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;class&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;LockTimeouter&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;IDisposable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;readonly&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;SqlConnection&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; _anotherConnection;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;readonly&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;SqlCommand&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; _command;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;readonly&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;SqlCommand&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; _anotherCommand;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;private&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;readonly&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;IAsyncResult&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; _anotherCommandStarted;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;
LockTimeouter(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;SqlConnection&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; connection, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;
hookCommand)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_command =
connection.CreateCommand();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_command.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"SET LOCK_TIMEOUT 1;DELETE FROM Data.ErrorLog"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_command.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_command.ExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherConnection = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;new&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;SqlConnection&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;(connection.ConnectionString + &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;";Asynchronous Processing=true"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherConnection.Open();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand = _anotherConnection.CreateCommand();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.Format(&lt;span&gt;"BEGIN TRANSACTION; {0};"&lt;/span&gt;&lt;b&gt;,
hookCommand);&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand.ExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"DECLARE @c INT;SET @c=0;WHILE @c=0 BEGIN SELECT @c=COUNT(*) FROM
Data.ErrorLog;END;COMMIT"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommandStarted =
_anotherCommand.BeginExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; Dispose()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_command.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"IF @@TRANCOUNT&amp;gt;0 BEGIN ROLLBACK; END"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_command.ExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;_anotherCommand.EndExecuteNonQuery(_anotherCommandStarted);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;_anotherCommand.CommandText =
_command.CommandText;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherCommand.ExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_anotherConnection.Close();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;The unit test itself is quite simple, because most of the
work is wrapped in the LockTimouter class&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;Test&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;void&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;
LockTimeoutTest()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;SqlCommand&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; command =
_connection.CreateCommand();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"DELETE FROM Data.Users WHERE UserId = 12345"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.ExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.CommandText = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"Writers.UpdateUserWithRetry"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.CommandType = &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;CommandType&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.StoredProcedure;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.Parameters.AddWithValue(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"@UserId"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;, 12345);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.Parameters.AddWithValue(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"@FirstName"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"Josh"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.Parameters.AddWithValue(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"@LastName"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"Olson"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.Parameters.AddWithValue(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"@Position"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"QA"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;using&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; (&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;new&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;LockTimeouter&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;(_connection, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"INSERT INTO
Data.Users(UserID, FirstName, LastName, Position,
LotsOfComments)VALUES(12345,'Jill','Hansen','QA','')"&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;))&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;command.ExecuteNonQuery();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;Console&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.WriteLine(&lt;span&gt;"No exception
raised"&lt;/span&gt;&lt;b&gt;);&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;catch&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; (&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;Exception&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; e)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;
(!e.ToString().Contains(&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;"Transaction count after
EXECUTE indicates "&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;))&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;Console&lt;/span&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;.WriteLine(e);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:green;"&gt;//check if there
are updates in Data.Users, and if the error has been recorded&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:8pt;line-height:115%;font-family:'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;When the test is finished, you can verify that one error was
indeed recorded and that the modification finally completed:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; Data&lt;span style="color:gray;"&gt;.&lt;/span&gt;ErrorLog &lt;span style="color:blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:blue;"&gt;BY&lt;/span&gt; ERROR_TIME&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt; &lt;span style="color:gray;"&gt;*&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; Data&lt;span style="color:gray;"&gt;.&lt;/span&gt;Users&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:8pt;font-family:'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;line-height:115%;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Installing Virtual Server On Vista Ultimate 64-bit</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2007/12/08/installing-virtual-server-on-vista-ultimate-64-bit.aspx</link><pubDate>Sat, 08 Dec 2007 16:07:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:3781</guid><dc:creator>andyleonard</dc:creator><description>&lt;P&gt;&lt;STRONG&gt;Mea...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This may be a little off-topic. &lt;/P&gt;
&lt;P&gt;I use Virtual Server and Virtual PC a &lt;EM&gt;lot&lt;/EM&gt; for things like testing beta and CTP releases of SQL Server. I don't have time or the inclination to reformat physical hard drives, load an OS, or even fiddle with restoring from an enterprise backup solution like &lt;A class="" href="http://www.symantec.com/norton/products/overview.jsp?pcid=br&amp;amp;pvid=ghost12" target=_blank&gt;Ghost&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I blogged about &lt;A class="" href="http://sqlblog.com/blogs/andy_leonard/archive/2007/11/30/installing-reporting-services-2005-on-vista.aspx" target=_blank&gt;configuring IIS7 for Reporting Services 2005&lt;/A&gt;, so this&amp;nbsp;may have more&amp;nbsp;relevance than I imagine.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you're not using virtualized machines or servers, you should check them out. They're great for testing new stuff - relatively risk-free.&amp;nbsp;I&amp;nbsp;am aware of&amp;nbsp;two flavors of virtual engines: &lt;A class="" href="http://www.vmware.com/" target=_blank&gt;VMWare&lt;/A&gt; and Microsoft products: &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?familyid=04D26402-3199-48A3-AFA2-2DC0B40A73B6&amp;amp;displaylang=en" target=_blank&gt;Virtual PC&lt;/A&gt; and &lt;A class="" href="http://technet.microsoft.com/en-us/bb738033.aspx" target=_blank&gt;Virtual Server&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I have no experience with VMWare.&lt;/P&gt;
&lt;P&gt;The Microsoft products are 100% free (&lt;A class="" href="http://en.wikipedia.org/wiki/Free_as_in_beer" target=_blank&gt;as in beer&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;I do not know which is better. I imagine that, like all things in life, one has advantages over the other and vice versa. The Microsoft stuff does what I need, so I've not ventured to search greener pastures (ever wonder why those pastures are greener? Think about it).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Get To The Configuration Already!&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When I installed Virtual Server 2005 R2 SP1 on my newish Vista Ultimate 64-bit machine, I saw quirky stuff. For example, I could not change the port for admin - it defaulted to 80 and gave me an error message stating my server "didn't allow" installations on other ports.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://vsteamsystemcentral.com/images/ext/VistaVS2k5_0.png"&gt;&lt;/P&gt;
&lt;P&gt;Reeeeaaallly? Huh. &lt;/P&gt;
&lt;P&gt;I proceeded with the installation anyway and &lt;EM&gt;nothing&lt;/EM&gt; worked. Well, nothing in Virtual Server. I could not get to the administrative page and, in case you've never worked with Virtual Server, you can do &lt;EM&gt;nothing&lt;/EM&gt; unless you can reach the administration page. (Note, you can do stuff if you like to type. I don't like to type.)&lt;/P&gt;
&lt;P&gt;A&amp;nbsp;&lt;A class="" href="http://www.live.com/" target=_blank&gt;search&lt;/A&gt; ensued. I found a &lt;A class="" href="http://blogs.technet.com/mattmcspirit/archive/2006/10/18/running-virtual-server-on-vista.aspx" target=_blank&gt;good article&lt;/A&gt; on why this was happening and how to fix it. It happens because IIS7 isn't configured (out of the box)&amp;nbsp;to allow&amp;nbsp;Virtual Server 2005 R2&amp;nbsp;to do&amp;nbsp;its thing. To fix it, open Control Panel, Programs and Features (the snappy new Add/Remove Programs), then click "Turn Windows features on or off".&lt;/P&gt;
&lt;P&gt;You want to&amp;nbsp;navigate to Internet Information Services folder and make your Windows Features look like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://vsteamsystemcentral.com/images/ext/VistaVS2k5_1.png"&gt;&lt;BR&gt;&lt;EM&gt;(A Thousand Words)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The image above may be the&amp;nbsp;first on the web (it was the only one I could find) of how to configure IIS7 on Vista Ultimate 64-bit for both&amp;nbsp;SSRS 2005 &lt;EM&gt;and&lt;/EM&gt; Virtual Server 2005 R2.&lt;/P&gt;
&lt;P&gt;Note you still get the Configure Components screen displayed above - the one with port textbox disabled and set to 80 - at least in Vista Ultimate. But you also get these screens:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://vsteamsystemcentral.com/images/ext/VistaVS2k5_2.png"&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://vsteamsystemcentral.com/images/ext/VistaVS2k5_3.png"&gt;&lt;/P&gt;
&lt;P&gt;:{&amp;gt; Andy&lt;/P&gt;</description></item><item><title>Skipping SQL Server 2005</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2007/11/21/skipping-sql-server-2005.aspx</link><pubDate>Wed, 21 Nov 2007 17:53:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:3464</guid><dc:creator>andyleonard</dc:creator><description>&lt;FONT face=Verdana color=navy&gt;
&lt;P&gt;According to numerous sources - most recently a &lt;A class="" title="SQL Server Magazine" href="http://www.sqlmag.com/" target=_blank&gt;SQL Server Magazine&lt;/A&gt;&amp;nbsp;article entitled &lt;EM&gt;&lt;A class="" href="http://www.sqlmag.com/Article/ArticleID/96876/sql_server_96876.html" target=_blank&gt;Too Soon for SQL Server 2008? Readers Say "Yes!"&lt;/A&gt;&lt;/EM&gt;&amp;nbsp;- a lot of SQL Server customers are holding off upgrading to SQL Server 2005, preferring to wait&amp;nbsp;for the upcoming release of SQL Server 2008. While I understand the economics, I worry about the DBAs and database developers in the trenches.&lt;/P&gt;
&lt;P&gt;Personally, I prefer to learn new technology while it's still, well, new. That makes me an early adopter.&amp;nbsp;In my opinion,&amp;nbsp;it also flattens the learning curve somewhat. &lt;/P&gt;
&lt;P&gt;One the other hand, as new technology is put into play by early adopters bugs and enhancements are found and suggested -&amp;nbsp;maturing the technology and making it easier to learn. Encountering fewer upgrade and translation issues flattens the learning curve too. So perhaps skipping a version isn't such a big deal after all.&lt;/P&gt;
&lt;P&gt;One thing to consider: Microsoft is unlikely to return to 5-year release cycles for server products. So how do we make upgrading less painful / expensive / painful? (...not a typo...)&lt;/P&gt;
&lt;P&gt;One suggestion is to add regression tests to your Disaster Recovery plan. You have regression testing in place already if you have a DR plan. It may consist of &lt;A class="" title="Young Frankenstein" href="http://www.imdb.com/title/tt0072431/" target=_blank&gt;throw the thrid switch&lt;/A&gt; and monitor the error email account. This is an EMP (Expensive Management Practice) and there are much better ways to manage regression tests as we draw&amp;nbsp;near the close of 2007. &lt;/P&gt;
&lt;P&gt;I predict Test Automation will be a hot topic next year as more folks dig into the features of &lt;A class="" title=TFS href="http://msdn2.microsoft.com/en-us/teamsystem/aa718825.aspx" target=_blank&gt;Team Foundation Server&lt;/A&gt;&amp;nbsp;2008. The powerful idea behind automated regression tests is very simple: Create a suite of tests and you can run them forever (for free, even!). Regression tests are money in the bank - you write them once and run them every time you release a (hopefully) backwards-compatible version. The test suite grows over time as more bugs are discovered, but the SOBER (Same Old Bugs Every Release) spectre passes into memory of days gone by. And you get the added benefits of improved quality and reduced time to market - what's not to love about regression tests?&lt;/P&gt;
&lt;P&gt;If you don't have regression tests in place, start saving your troubleshooting queries and utility applications in a central location - build a repository starting &lt;EM&gt;today&lt;/EM&gt;.&amp;nbsp;When the next new version of SQL Server is released (circa 2011), your applications will be much more agile and able to make the leap. Then you won't be painted into the corner of "not having enough time to test" the impact of the new functionality and changes to&amp;nbsp;existing functionality - you will be able to &lt;EM&gt;know&lt;/EM&gt; where you stand. &lt;/P&gt;
&lt;P&gt;How much is the option of upgrading&amp;nbsp;worth to your company?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;:{&amp;gt; Andy&lt;/P&gt;
&lt;P&gt;&lt;A class="" title=Technorati! href="http://www.technorati.com/" target=_blank&gt;Technorati&lt;/A&gt; &lt;A class="" title="Frank's Tag Generator!" href="http://www.franksworld.com/taggen/" target=_blank&gt;Tags&lt;/A&gt;: &lt;A href="http://technorati.com/tag/SQL+Server+2005" rel=tag&gt;SQL Server 2005&lt;/A&gt; &lt;A href="http://technorati.com/tag/SQL+Server+2008" rel=tag&gt;SQL Server 2008&lt;/A&gt; &lt;A href="http://technorati.com/tag/Regression" rel=tag&gt;Regression&lt;/A&gt; &lt;A href="http://technorati.com/tag/Testing" rel=tag&gt;Testing&lt;/A&gt; &lt;A href="http://technorati.com/tag/EMPs" rel=tag&gt;EMPs&lt;/A&gt; &lt;A href="http://technorati.com/tag/Expensive+Management+Practices" rel=tag&gt;Expensive Management Practices&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;</description></item></channel></rss>