<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>What did you learn today? - Development</title>
    <link>http://blog.philknows.net/</link>
    <description>Phil Denoncourt's Technology Rants</description>
    <language>en-us</language>
    <copyright>Phil Denoncourt III</copyright>
    <lastBuildDate>Thu, 21 May 2009 16:54:12 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>phil@denoncourtassociates.com</managingEditor>
    <webMaster>phil@denoncourtassociates.com</webMaster>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=e781fae8-f9cf-47d8-bc0b-d66b5141721e</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,e781fae8-f9cf-47d8-bc0b-d66b5141721e.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,e781fae8-f9cf-47d8-bc0b-d66b5141721e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e781fae8-f9cf-47d8-bc0b-d66b5141721e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I had a great time talking about Globalization and Localization for ASP.NET applications
last night at the <a href="http://www.neasp.net">New England ASP.NET User Group</a>. 
There are definately a lot of things that you need to be aware of when you're localizing
a site.  Thanks to <a href="http://www.paradigminc.us/">Dean Serrentino</a> for
inviting me to speak.  I've uploaded the slides and demo applications below.
</p>
        <a href="http://blog.philknows.net/content/binary/ASP.NetGlobalizationAndLocalization.zip">ASP.NetGlobalizationAndLocalization.zip
(480.36 KB)</a>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=e781fae8-f9cf-47d8-bc0b-d66b5141721e" />
      </body>
      <title>Globalization and Localization in ASP.NET</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,e781fae8-f9cf-47d8-bc0b-d66b5141721e.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,e781fae8-f9cf-47d8-bc0b-d66b5141721e.aspx</link>
      <pubDate>Thu, 21 May 2009 16:54:12 GMT</pubDate>
      <description>&lt;p&gt;
I had a great time talking about Globalization and Localization for ASP.NET applications
last night at the &lt;a href="http://www.neasp.net"&gt;New England ASP.NET User Group&lt;/a&gt;.&amp;nbsp;
There are definately a lot of things that you need to be aware of when you're localizing
a site.&amp;nbsp; Thanks to &lt;a href="http://www.paradigminc.us/"&gt;Dean Serrentino&lt;/a&gt; for
inviting me to speak.&amp;nbsp; I've uploaded the slides and demo applications below.
&lt;/p&gt;
&lt;a href="http://blog.philknows.net/content/binary/ASP.NetGlobalizationAndLocalization.zip"&gt;ASP.NetGlobalizationAndLocalization.zip
(480.36 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=e781fae8-f9cf-47d8-bc0b-d66b5141721e" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,e781fae8-f9cf-47d8-bc0b-d66b5141721e.aspx</comments>
      <category>ASP.NET</category>
      <category>Development</category>
      <category>Speaking Engagements</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=6b05f3da-b58b-40ff-afe5-9a97333d3a2b</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,6b05f3da-b58b-40ff-afe5-9a97333d3a2b.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,6b05f3da-b58b-40ff-afe5-9a97333d3a2b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=6b05f3da-b58b-40ff-afe5-9a97333d3a2b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm speaking today at the Code Camp in Waltham giving my talk on Speech Recognition
using C#. I've attached the demo files I used. You can download the content <a href="http://blog.philknows.net/content/binary/speechrecognition.zip">here</a>.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=6b05f3da-b58b-40ff-afe5-9a97333d3a2b" />
      </body>
      <title>Speech Recognition in C#</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,6b05f3da-b58b-40ff-afe5-9a97333d3a2b.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,6b05f3da-b58b-40ff-afe5-9a97333d3a2b.aspx</link>
      <pubDate>Sat, 28 Mar 2009 14:45:36 GMT</pubDate>
      <description>&lt;p&gt;
I'm speaking today at the Code Camp in Waltham giving my talk on Speech Recognition
using C#. I've attached the demo files I used. You can download the content &lt;a href="http://blog.philknows.net/content/binary/speechrecognition.zip"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=6b05f3da-b58b-40ff-afe5-9a97333d3a2b" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,6b05f3da-b58b-40ff-afe5-9a97333d3a2b.aspx</comments>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=0aa7d1a8-7ad4-4140-8d60-51f7deed0846</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,0aa7d1a8-7ad4-4140-8d60-51f7deed0846.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,0aa7d1a8-7ad4-4140-8d60-51f7deed0846.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0aa7d1a8-7ad4-4140-8d60-51f7deed0846</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The 1st New Hampshire Code Camp is being help Saturday, Feb 28th at <a href="http://www.dwc.edu/">Daniel
Webster College</a>.  Registration is now open at <a href="http://www.thedevcommunity.org/">http://www.thedevcommunity.org/</a>. 
We're looking for developers or DBAs to present at this event.  We're also looking
for component vendors or recruitment firms to sponsor the event with giveaways, or
to help cover food costs. (Contact me - <a href="mailto:phil@denoncourtassociates.com">phil@denoncourtassociates.com</a> or <a href="mailto:ptormey@4square.net">Pat
Tormey</a>)
</p>
        <p>
I love going to code camps, I always learn a lot about technologies that I don't get
to use in my day-to-day life.  It's nice to network with other developers, learn
what problems they're running into and how they're solving them.  The <a href="http://www.thedevcommunity.org/CodeCamps/Manifesto.aspx">manifesto</a> describes
it best: By and For the Developer Community, Always Free, No Fluff...
</p>
        <p>
With the economy in apparent decline, a lot of you developers are looking for ways
to make yourselves more marketable.  According to ToastMasters International,
presentation skills are "crucial to success in the workplace".  Code Camps are
a great way to start refining your speaking skills.  Nobody expects a polished
speaker.  All we're looking for is someone to show us some code, help facilitate
a conversation, or show us something new.  If you get nervous when you speak
in front of people and that's deterring you, partner up with a buddy to deliver the
talk with you. Presentations should go about an hour, and budget time for dialog/Q&amp;A.
</p>
        <p>
Here's how to register to speak at the NH Code Camp:<br />
1) Create an account at <a href="http://thedevcommunity.org">thedevcommunity.org</a>,
or sign into your existing one.<br />
2) Complete a Speaker Registry profile<br />
3) On <a href="http://thedevcommunity.org">thedevcommunity.org</a> 's home page, click
the submit a presentation link next to Code Camp New Hampshire<br />
4) Repeat (as necessary)
</p>
        <p>
Looking forward to seeing you all there...
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=0aa7d1a8-7ad4-4140-8d60-51f7deed0846" />
      </body>
      <title>Call for Speakers - Code Camp New Hampshire</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,0aa7d1a8-7ad4-4140-8d60-51f7deed0846.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,0aa7d1a8-7ad4-4140-8d60-51f7deed0846.aspx</link>
      <pubDate>Tue, 06 Jan 2009 13:35:57 GMT</pubDate>
      <description>&lt;p&gt;
The 1st New Hampshire Code Camp is being help Saturday, Feb 28th at &lt;a href="http://www.dwc.edu/"&gt;Daniel
Webster College&lt;/a&gt;.&amp;nbsp; Registration is now open at &lt;a href="http://www.thedevcommunity.org/"&gt;http://www.thedevcommunity.org/&lt;/a&gt;.&amp;nbsp;
We're looking for developers or DBAs to present at this event.&amp;nbsp; We're also looking
for component vendors or recruitment firms to sponsor the event with giveaways, or
to help cover food costs. (Contact me - &lt;a href="mailto:phil@denoncourtassociates.com"&gt;phil@denoncourtassociates.com&lt;/a&gt; or &lt;a href="mailto:ptormey@4square.net"&gt;Pat
Tormey&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
I love going to code camps, I always learn a lot about technologies that I don't get
to use in my day-to-day life.&amp;nbsp; It's nice to network with other developers, learn
what problems they're running into and how they're solving them.&amp;nbsp; The &lt;a href="http://www.thedevcommunity.org/CodeCamps/Manifesto.aspx"&gt;manifesto&lt;/a&gt; describes
it best: By and For the Developer Community, Always Free, No Fluff...
&lt;/p&gt;
&lt;p&gt;
With the economy in apparent decline, a lot of you developers are looking for ways
to make yourselves more marketable.&amp;nbsp; According to ToastMasters International,
presentation skills are "crucial to success in the workplace".&amp;nbsp; Code Camps are
a great way to start refining your speaking skills.&amp;nbsp; Nobody expects a polished
speaker.&amp;nbsp; All we're looking for is someone to show us some code, help facilitate
a conversation, or show us something new.&amp;nbsp; If you get nervous when you speak
in front of people and that's deterring you, partner up with a buddy to deliver the
talk with you. Presentations should go about an hour, and budget time for dialog/Q&amp;amp;A.
&lt;/p&gt;
&lt;p&gt;
Here's how to register to speak at the NH Code Camp:&lt;br&gt;
1) Create an account at &lt;a href="http://thedevcommunity.org"&gt;thedevcommunity.org&lt;/a&gt;,
or sign into your existing one.&lt;br&gt;
2) Complete a Speaker Registry profile&lt;br&gt;
3) On &lt;a href="http://thedevcommunity.org"&gt;thedevcommunity.org&lt;/a&gt; 's home page, click
the submit a presentation link next to Code Camp New Hampshire&lt;br&gt;
4) Repeat (as necessary)
&lt;/p&gt;
&lt;p&gt;
Looking forward to seeing you all there...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=0aa7d1a8-7ad4-4140-8d60-51f7deed0846" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,0aa7d1a8-7ad4-4140-8d60-51f7deed0846.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
      <category>Speaking Engagements</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=7a8cff86-cd5e-47bc-b041-26ae85908cb4</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,7a8cff86-cd5e-47bc-b041-26ae85908cb4.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,7a8cff86-cd5e-47bc-b041-26ae85908cb4.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=7a8cff86-cd5e-47bc-b041-26ae85908cb4</wfw:commentRss>
      <title>Static Fields in Derived Types</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,7a8cff86-cd5e-47bc-b041-26ae85908cb4.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,7a8cff86-cd5e-47bc-b041-26ae85908cb4.aspx</link>
      <pubDate>Wed, 08 Oct 2008 20:08:08 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
There really is a single instance of a static field per appdomain. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;It
kind of says this in the C# language reference, but not very explicitly. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;This
knocked me around a little because I had assumed that there was a single static field
per type within an appdomain. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;I had a base
type that had a dictionary as a static field and assumed that each class that derived
from it had its own instance of the static field. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Not
so…
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
Look at the following test code:
&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; System;&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; System.Collections.Generic;&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; System.Text;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;?xml:namespace prefix = o /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'; mso-no-proof: yes"&gt;namespace&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt; ConsoleApplication3&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt;&lt;?xml:namespace prefix = st1 /&gt; 
&lt;st1:place w:st="on"&gt;Main&lt;/st1:place&gt;
(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;baseClass&lt;/span&gt;.AStaticValue
= 3;&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;inheritedClass&lt;/span&gt;.AStaticValue
= 4;&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"baseClass
{0}"&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;baseClass&lt;/span&gt;.AStaticValue);&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"inheritedClass
{0}"&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;inheritedClass&lt;/span&gt;.AStaticValue);&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;
&lt;o:p&gt;
&lt;br&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;baseClass&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; AStaticValue
= 0;&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;inheritedClass&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;baseClass&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
I expected the results to be 
&lt;br&gt;
baseClass 3&lt;br&gt;
inheritedClass 4
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
Instead, the output is&lt;br&gt;
baseClass 4&lt;br&gt;
inheritedClass 4
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
So unless you decorate the field with &lt;a href="http://msdn.microsoft.com/en-us/library/system.threadstaticattribute.aspx"&gt;ThreadStatic&lt;/a&gt; or &lt;a href="http://www.sirius.com/sirius/servlet/MediaPlayer?activity=selectTab&amp;tab=music&amp;stream=thebeat&amp;genre=electronicdanceSIR&amp;category=music&amp;token=85780178a50e61751386f771ec4d53bhttp://msdn.microsoft.com/en-us/library/system.contextstaticattribute.aspx"&gt;ContextStatic&lt;/a&gt; attributes,
static means just one in an appdomain. &lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Remember
that when you are inheriting from objects that have static fields, there’s only one
instance of that static field.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=7a8cff86-cd5e-47bc-b041-26ae85908cb4" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,7a8cff86-cd5e-47bc-b041-26ae85908cb4.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=6c8991a7-d35c-4809-8d88-29df801c271d</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,6c8991a7-d35c-4809-8d88-29df801c271d.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,6c8991a7-d35c-4809-8d88-29df801c271d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=6c8991a7-d35c-4809-8d88-29df801c271d</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Me either.  See <a href="http://msdn.microsoft.com/en-us/library/6x6y6z4d(VS.80).aspx" target="_blank">here</a> in
the C# Language Reference.  This means you can overload the operators for your
classes.  The example on MSDN talks about classes that have a true, false, or
null (neither true nor false) state.  You could also create a type that can be
both true <u>and</u> false.
</p>
        <p>
Overloading operators can lead to code that is difficult to read.  You should
only overload operators when it makes sense to do it.  If it is unclear what
“if (myType)” means, don’t overload the operators.
</p>
        <p>
I wrote a small rules engine for a company a while back and this would have been helpful. 
Supplemental rules were implemented as separate classes so that they could be dynamically
strung together in different orders as the business logic changed.
</p>
        <p>
Here’s a contrived sample using the true/false operators:
</p>
        <pre class="csharpcode">
          <span class="kwrd">public</span>
          <span class="kwrd">class</span> Customer
{ <span class="kwrd">public</span><span class="kwrd">string</span> CustomerName {
get; set; } <span class="kwrd">public</span><span class="kwrd">string</span> EmailAddress
{ get; set; } <span class="kwrd">public</span><span class="kwrd">decimal</span> OutstandingBalance
{ get; set; } } <span class="kwrd">public</span><span class="kwrd">class</span> CustomerIsGoodRule
{ <span class="kwrd">public</span> CustomerIsGoodRule(Customer customer) { <span class="kwrd">this</span>.Customer
= customer; } Customer Customer { get; set; } <span class="kwrd">public</span><span class="kwrd">static</span><span class="kwrd">bool</span><span class="kwrd">operator</span><span class="kwrd">true</span>(CustomerIsGoodRule
theCustomer) { <span class="kwrd">return</span> (theCustomer.Customer.OutstandingBalance
&lt;= 0); } <span class="kwrd">public</span><span class="kwrd">static</span><span class="kwrd">bool</span><span class="kwrd">operator</span><span class="kwrd">false</span>(CustomerIsGoodRule
theCustomer) { <span class="kwrd">return</span> (theCustomer.Customer.OutstandingBalance
&gt; 0); } } <span class="kwrd"> class</span> Program { <span class="kwrd">static</span><span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args) { Customer c = <span class="kwrd">new</span> Customer(); c.CustomerName = <span class="str">"Joanne
Doe"</span>; c.EmailAddress = <span class="str">"joannedoe@mailinator.com"</span>;
c.OutstandingBalance = 25; CustomerIsGoodRule cigr = <span class="kwrd">new</span> CustomerIsGoodRule(c); <span class="kwrd">if</span> (cigr)
{ SendNewCatalog(); } <span class="kwrd">else</span> { SendNewStatement(); } } }</pre>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
One thing to keep in mind is that if you provide a definition for true, you must also
provide one for false.  Also notice that the logical negation operator (!) was
not overriden, so a statement like if (!cigr) fails to compile.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=6c8991a7-d35c-4809-8d88-29df801c271d" />
      </body>
      <title>Did you know true/false are C# operators?</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,6c8991a7-d35c-4809-8d88-29df801c271d.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,6c8991a7-d35c-4809-8d88-29df801c271d.aspx</link>
      <pubDate>Tue, 10 Jun 2008 12:04:08 GMT</pubDate>
      <description>&lt;p&gt;
Me either.&amp;nbsp; See &lt;a href="http://msdn.microsoft.com/en-us/library/6x6y6z4d(VS.80).aspx" target="_blank"&gt;here&lt;/a&gt; in
the C# Language Reference.&amp;nbsp; This means you can overload the operators for your
classes.&amp;nbsp; The example on MSDN talks about classes that have a true, false, or
null (neither true nor false) state.&amp;nbsp; You could also create a type that can be
both true &lt;u&gt;and&lt;/u&gt; false.
&lt;/p&gt;
&lt;p&gt;
Overloading operators can lead to code that is difficult to read.&amp;nbsp; You should
only overload operators when it makes sense to do it.&amp;nbsp; If it is unclear what
“if (myType)” means, don’t overload the operators.
&lt;/p&gt;
&lt;p&gt;
I wrote a small rules engine for a company a while back and this would have been helpful.&amp;nbsp;
Supplemental rules were implemented as separate classes so that they could be dynamically
strung together in different orders as the business logic changed.
&lt;/p&gt;
&lt;p&gt;
Here’s a contrived sample using the true/false operators:
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Customer
{ &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; CustomerName {
get; set; } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; EmailAddress
{ get; set; } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;decimal&lt;/span&gt; OutstandingBalance
{ get; set; } } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CustomerIsGoodRule
{ &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerIsGoodRule(Customer customer) { &lt;span class="kwrd"&gt;this&lt;/span&gt;.Customer
= customer; } Customer Customer { get; set; } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; &lt;span class="kwrd"&gt;operator&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;(CustomerIsGoodRule
theCustomer) { &lt;span class="kwrd"&gt;return&lt;/span&gt; (theCustomer.Customer.OutstandingBalance
&amp;lt;= 0); } &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; &lt;span class="kwrd"&gt;operator&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;(CustomerIsGoodRule
theCustomer) { &lt;span class="kwrd"&gt;return&lt;/span&gt; (theCustomer.Customer.OutstandingBalance
&amp;gt; 0); } } &lt;span class="kwrd"&gt; class&lt;/span&gt; Program { &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[]
args) { Customer c = &lt;span class="kwrd"&gt;new&lt;/span&gt; Customer(); c.CustomerName = &lt;span class="str"&gt;"Joanne
Doe"&lt;/span&gt;; c.EmailAddress = &lt;span class="str"&gt;"joannedoe@mailinator.com"&lt;/span&gt;;
c.OutstandingBalance = 25; CustomerIsGoodRule cigr = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomerIsGoodRule(c); &lt;span class="kwrd"&gt;if&lt;/span&gt; (cigr)
{ SendNewCatalog(); } &lt;span class="kwrd"&gt;else&lt;/span&gt; { SendNewStatement(); } } }&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
One thing to keep in mind is that if you provide a definition for true, you must also
provide one for false.&amp;nbsp; Also notice that the logical negation operator (!) was
not overriden, so a statement like if (!cigr) fails to compile.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=6c8991a7-d35c-4809-8d88-29df801c271d" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,6c8991a7-d35c-4809-8d88-29df801c271d.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=2aa6734d-7b3d-411b-8224-4b253fbab58c</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=2aa6734d-7b3d-411b-8224-4b253fbab58c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
From <a href="http://www.4square.net">Pat Tormey</a>, Director of NHDN:
</p>
        <p>
Summer Recess..And Study Groups
</p>
        <p>
During the summer I'll be forming Study Groups to meet for particular topics.
</p>
        <p>
Personally I'll be studying the SmartClient Software Factory. If you are interested,
drop me a note.. We'll be meeting at my office in Derry NH on Monday evenings
</p>
        <p>
If you'd like to host a Study Group or have an idea for one please drop <a href="mailto:PTormey@4square.net">me </a>a
note and I'll see if we can find some people in your area with the same interests.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=2aa6734d-7b3d-411b-8224-4b253fbab58c" />
      </body>
      <title>New Hampshire DotNet (NHDN) User Group on summer vacation</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx</link>
      <pubDate>Sat, 23 Jun 2007 16:44:41 GMT</pubDate>
      <description>&lt;p&gt;
From &lt;a href="http://www.4square.net"&gt;Pat Tormey&lt;/a&gt;, Director of NHDN:
&lt;/p&gt;
&lt;p&gt;
Summer Recess..And Study Groups
&lt;/p&gt;
&lt;p&gt;
During the summer I'll be forming Study Groups to meet for particular topics.
&lt;/p&gt;
&lt;p&gt;
Personally I'll be studying the SmartClient Software Factory. If you are interested,
drop me a note.. We'll be meeting at my office in Derry NH on Monday evenings
&lt;/p&gt;
&lt;p&gt;
If you'd like to host a Study Group or have an idea for one please drop &lt;a href="mailto:PTormey@4square.net"&gt;me &lt;/a&gt;a
note and I'll see if we can find some people in your area with the same interests.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=2aa6734d-7b3d-411b-8224-4b253fbab58c" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx</comments>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=49db5acf-a7d6-4c64-8727-50213033e338</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=49db5acf-a7d6-4c64-8727-50213033e338</wfw:commentRss>
      <title>Reviewing Databases</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx</link>
      <pubDate>Wed, 21 Mar 2007 15:59:42 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;There is plenty of guidance on reviewing code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(Look
at CodeFrisk.Com/Guidance.aspx for some links).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I’ve
found that &lt;u&gt;the&lt;/u&gt; one absolutely most critical piece of a traditional application
never undergoes any type of review.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most
applications live and die by their database, and yet it rarely gets reviewed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you’re lucky (although you might not think so), you’ll have a DBA check things over,
but they are mostly concerned with performance.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maintainability
and adherence to standards are not at the top of their list.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve listed some of the things I look at when I review a database:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;-Appropriate Normalization&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;It’s tough to say what is and isn’t appropriate normalization.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You’ll
know it when you see it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;Stuff
like having a separate table for the 
&lt;st1:country-region w:st="on"&gt;
&lt;st1:place w:st="on"&gt;US&lt;/st1:place&gt;
&lt;/st1:country-region&gt;
states or one called Gender is usually a red flag of having gone too far.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Conversely,
having the same field in multiple tables is usually a sign that normalization hasn’t
gone far enough.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Is all access through stored procedures&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Most development shops have a policy that says, “All data access
shall be done through stored procedures”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you have that policy, check to make sure this is being adhered to.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;An
easy way to check this is to deny access to the tables and allow access to the stored
procedures.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Look for premature optimization&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve seen times when developers are using Join hints or locking
hints in their query.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;“If I force the
query to use a merge join, it goes 5x faster”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Meaning
it goes 5 times faster on the development box which has far fewer rows and 3 fewer
processors than the production machine.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Once
it goes the to production machine, there’s a good chance that SQL will decide upon
a different plan to execute the statement, making the hint destructive on the production
machine&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Are objects secured and scripted&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Eventually, when you roll the database into a production environment,
access to the database will (or should) be locked down.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Is
the development environment the same?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Are
the scripts that you have under source control (you do have the database creation
scripts under source control don’t you?)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;include
securing of the object.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Are updates applied in the same order&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I can think of no better way to create an application that suffers
from chronic &lt;/font&gt;&lt;a href="http://www.sql-server-performance.com/deadlocks.asp"&gt;&lt;font color=#800080&gt;deadlock&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt; situations
than to have one stored procedure update tables A, B, &amp;amp; C (in that order) and
have another stored procedure update tables C, B, &amp;amp; A (in that order).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Updates
should always be applied in the same order.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Otherwise,
you’re increasing the chance that a row in A will be locked by one stored proc while
waiting for a row in table C locked by the other stored proc.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Generally
the order is enforced naturally because you have to respect foreign keys, but every
now and then I come across this.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Biblical stored procedures&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;By biblical, I mean volume, not divinely inspired.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’m
referring to stored procedures that use up more than one printer cartridge if you
were to print it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Nowadays when you see
a large stored procedure, it’s one of two things:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;1) Embedded business logic – This seems to be a remnant of client
server programming where you were forced to put your business logic in the stored
procedure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s arguable about whether
or the database is the best place to keep your business logic.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most
people (including me) believe it’s not.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Business
logic should be kept in a business logic component that validates, enforces and calculates.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;2) Poorly defined schema.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most
validations that you see taking place in stored procs could be controlled by using
schema constructs like check constraints, triggers, foreign keys and defaults.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Put
that type of information in the schema where it can be enforced consistently everywhere
rather than burdening the stored procedure.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Does the Development database match what’s in source control&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;To reinforce this, database schema objects need to be kept under
source control.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Having a database backup
plan isn’t sufficient.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Putting the objects
in source control allow you to manage changes and releases much more effectively.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Otherwise
you’ll be struggling to determine which objects have changed in the development database
and need to be deployed, and figuring out who added a field to table.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Keeping
the schema under source control used to be a very manual process, but now tools like &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718764.aspx"&gt;&lt;font color=#800080&gt;Visual
Studio for Database Professionals&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt; make this painless.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Cloned stored procedures / Views.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;This is very common.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When
you need data, most developers don’t look to see if there is an existing stored procedure
or view that satisfies their needs.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;They’ll
create a brand new one.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Then you end
up with a database that has 3 different stored procedures that get a customer record
by its ID.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now all these duplicated procs
have to be maintained.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Best prevention
for this is to have a strict naming convention for your procedures.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Those are some of the quick patterns I look for when reviewing
a database.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What are the kind of things
that stand out when you look over a database?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;font color=#000000&gt;Wouldn’t you feel comfortable
having your code reviewed by an expert?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Go
to &lt;/font&gt;&lt;a href="http://www.codefrisk.com/"&gt;&lt;font color=#800080&gt;CodeFrisk.com&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt; to
see how I can proofread your code at a reasonable price.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=49db5acf-a7d6-4c64-8727-50213033e338" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx</comments>
      <category>Development</category>
      <category>SQL</category>
      <category>Code Reviews</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=4d2b767e-9169-451b-8a23-b7de47092027</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx</pingback:target>
      <dc:creator>Phil Denoncourt</dc:creator>
      <wfw:comment>http://blog.philknows.net/CommentView,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4d2b767e-9169-451b-8a23-b7de47092027</wfw:commentRss>
      <title>Code Reviews</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx</link>
      <pubDate>Sun, 18 Mar 2007 11:18:14 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;As a developer, I love to write code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Getting
involved with a problem, putting my head down, coming up a solution and getting immersed
in implementing it is an awesome feeling.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I also enjoy reading code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
like to look at a set of code and try to understand what the developer was thinking.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
can tell a lot about how a person thinks by reading their code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To
me, participating in code reviews is a lot of fun.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I originally wrote these articles 6 months ago when I was about
to launch a new service to review code (For details, go to &lt;/font&gt;&lt;a href="http://www.codefrisk.com/"&gt;http://www.codefrisk.com/&lt;/a&gt;&lt;font color=#000000&gt;).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’m
now much too busy to review code, but these articles might be of value, so I’m uploading
them now.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’ll be posting a set of articles
about code reviews, best practices, coding standards…&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Here’s
the first article in the series:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Coding Standards – How to write a useful Coding Standard document&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Coding standards are an agreement in a development team on how
the code for an application will be structured.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They
promote consistency and easier maintenance.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;A
well-written and enforced standards policy will reduce the time that it takes for
new developers to feel comfortable with an application.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve worked with many organizations over the years, most of which
have some sort of coding standards documentation.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The
needs of each organization are very different.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some
organizations sold their source code, so they needed to make sure there was a very
high level of consistency.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Others were
in regulated industries and needed to conform to various practices.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Others
were small shops that didn’t see tremendous value in having standards.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The standards document had varying degrees of success.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some
negative factors in coding standards I’ve seen are:&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in" type=disc&gt;
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Aggressively guarded by one person&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Enforcing rules that were necessary in older technologies, but
no longer hold relevance (Especially if they were burned by the problem)&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Too slim&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Too thick&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Too strict&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Begun, but never completed.&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Finished, but never enforced.&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve written a few coding standards docs and want to share what
I’ve found useful, and what you should try to avoid.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;First of all, if you’re the person tasked with writing the documentation,
make sure that you involve the rest of the development team as much as possible.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
shouldn’t take the Moses approach; climb a mountain and come down with a set of commandments.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
the developers on your team aren’t consulted on the coding standards, you’ll see a
lot of them not adhering to them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;These
aren’t &lt;u&gt;your&lt;/u&gt; coding standards; they are the &lt;u&gt;teams&lt;/u&gt; coding standards.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Recognize that you aren’t writing a document with a stone and
chisel.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Coding standards must evolve
as your team has learned new techniques.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s
also not uncommon to see coding standard docs that never get finished because the
author feels the document must be 100% “complete” before they release it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Take
an iterative approach and get the document out as soon as possible and continue to
refine it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s impossible to get it
all right the first, second, or even tenth time.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You’ll
probably find that most code reviews will result in changes to the standards document.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Kick off a discussion for an hour or two and brainstorm with the
development team about possible standards.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;There
will be contention.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If the team can’t
come to an agreement after 5 minutes, table the discussion point for later.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
people have time to think about something, they will usually be able to justify or
back off on their opinion.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;The
important thing is to limit the time of the discussion in the interests of getting
an initial version within the same day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Good
developers will talk about coding all day.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Areas to discuss would include:&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in" type=disc&gt;
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Naming standards – Camel, Pascal, Hungarian, Dewey Decimal System?&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Documentation expectations – XML Documentation, when/where to
put comments, class headers…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Design Patterns that are expected to be used – Factories, Observers,
Decorators…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Automated Unit Testing strategy – TDD? Tool type, Code Coverage…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Exception handling – Handling, Reporting…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Use of constants/resource files – Yes, No?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One
resource for the entire project, one constant class?&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Complexity limits for methods - &amp;gt; 25 is a lot of branches&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Data access methods - Stored Procs, Dynamic SQL, DataSets, ORM,
Async, Transaction strategy…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Common components to use – Enterprise Library, Log4net, Infragistics…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Localization strategy -&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Needed?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Roll
your own or use .NET framework...&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Versioning – Versioning assemblies, strong name, signing, delay
signing…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Build strategy – Nightly builds, one solution or many solutions,
creating references&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: red; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
!Code Formatting&lt;o:p&gt;&lt;/o:p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;For the most part try to stay away from talking about code formatting.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Formatting
standards inevitably come down to one developer’s preference over another.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Capable
developers will be able to read the code regardless of how it is formatted.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;After you’ve had your discussion with the team, hole yourself
up in your office/cube and write up the standards doc.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Unless
you’re a dreadfully slow typist, this shouldn’t take more than 1 – 3 hours.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The important thing is to make sure you get feedback from your
team on the document.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If they don’t feel
involved and disagree with a particular piece, they will exhibit a little bit of passive-aggressive
behavior and not adhere to the standard.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The Coding Standards document sets up expectations at code reviews.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
is a declaration of what is expected from a developer when they submit code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Without
some set of coding standards, code reviews can quickly become counterproductive.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Coding standard docs aren’t hard, aren’t intrusive, and are a
valuable resource.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When there is a set
of guidelines to use when coding, it is much easier to bring new developers into the
project.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The benefits justify the one
day of effort it takes to put one in place.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;font color=#000000&gt;Wouldn’t you feel comfortable
having your code reviewed by an expert?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Go
to &lt;a href="http://www.codefrisk.com"&gt;CodeFrisk.com &lt;/a&gt;to see how I can proofread
your code at a reasonable price.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=4d2b767e-9169-451b-8a23-b7de47092027" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx</comments>
      <category>Code Reviews</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=84277003-f7cf-4309-9bb7-5b6b53dd4fe5</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,84277003-f7cf-4309-9bb7-5b6b53dd4fe5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,84277003-f7cf-4309-9bb7-5b6b53dd4fe5.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=84277003-f7cf-4309-9bb7-5b6b53dd4fe5</wfw:commentRss>
      <title>Tables with GUIDs as keys are just as fast as tables with ints</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,84277003-f7cf-4309-9bb7-5b6b53dd4fe5.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,84277003-f7cf-4309-9bb7-5b6b53dd4fe5.aspx</link>
      <pubDate>Wed, 13 Sep 2006 21:51:55 GMT</pubDate>
      <description>&lt;p&gt;
I was sitting in this meeting in which I was only peripherally involved and there's
only so much doodling you can do.&amp;nbsp; So I did what most other people in the meeting
were doing, I started daydreaming.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
I'm a big fan of GUIDs, but there's all this noise about how slow they are because
they're bigger than an int making for inefficient searching.&amp;nbsp; So I started to
wonder, how much slower are GUIDs than ints? So I started to do the math, and for
a table with 4 billion rows, I was coming out with only one more logical read if the
key was a GUID than an int.... I know.. Didn't make sense to me.&amp;nbsp; So I put it
to a practical test.
&lt;/p&gt;
&lt;p&gt;
I created two tables.&amp;nbsp; One called IntWithData and the other called GuidWithData.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.denoncourtassociates.com/content/binary/intTable.jpg" border=0&gt;&lt;img src="http://blog.denoncourtassociates.com/content/binary/guidTable.jpg" border=0&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I then populated them with a million rows.&amp;nbsp; --As a side note, I started the scripts
to populate the tables at about the same time, and they finished at the same time.&amp;nbsp;
Something I think I will research further is how much slower it is to insert a record
in a GUID table compared to an INT table.&amp;nbsp; Common sense tells you it's supposed
be way slower to populate a GUID--
&lt;/p&gt;
&lt;p&gt;
I took a look at the statistics for the index by using the following statements: 
&lt;br&gt;
&lt;font color=#0000ff size=2&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; sys.dm_db_index_physical_stats&lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#ff00ff size=2&gt;db_id&lt;/font&gt;&lt;font color=#808080 size=2&gt;(),&lt;/font&gt;&lt;font color=#ff00ff size=2&gt;object_id&lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'dbo.GuidWithData'&lt;/font&gt;&lt;font color=#808080 size=2&gt;),null,null,&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'DETAILED'&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;SELECT&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font color=#000000 size=2&gt; sys.dm_db_index_physical_stats&lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#ff00ff size=2&gt;db_id&lt;/font&gt;&lt;font color=#808080 size=2&gt;(),&lt;/font&gt;&lt;font color=#ff00ff size=2&gt;object_id&lt;/font&gt;&lt;font color=#808080 size=2&gt;(&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'dbo.IntWithData'&lt;/font&gt;&lt;font color=#808080 size=2&gt;),null,null,&lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'DETAILED'&lt;/font&gt;&lt;font color=#808080 size=2&gt;)&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
That produced these results:
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff size=2&gt;&lt;font color=#808080 size=2&gt; 
&lt;table style="WIDTH: 1018pt; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width=1357 border=1 x:str&gt;
&lt;colgroup&gt;
&lt;col style="WIDTH: 48pt" width=64&gt;
&lt;col style="WIDTH: 58pt; mso-width-source: userset; mso-width-alt: 2816" width=77&gt;
&lt;col style="WIDTH: 48pt" span=19 width=64&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" width=64 height=17&gt;
&lt;font face=Arial color=#000000 size=2&gt;database_id&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 58pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=77&gt;
&lt;font face=Arial color=#000000 size=2&gt;object_id&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_id&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;partition_number&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_type_desc&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;alloc_unit_type_desc&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_depth&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_level&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_fragmentation_in_percent&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;fragment_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_fragment_size_in_pages&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;page_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_page_space_used_in_percent&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;record_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;ghost_record_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;version_ghost_record_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;min_record_size_in_bytes&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;max_record_size_in_bytes&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_record_size_in_bytes&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 96pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; mso-ignore: colspan" width=128 colspan=2&gt;
&lt;font face=Arial color=#000000 size=2&gt;forwarded_record_count&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="2105058535"&gt;
&lt;font face=Arial color=#000000 size=2&gt;2105058535&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;CLUSTERED&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;INDEX&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;IN_ROW_DATA&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="99.036999493157595"&gt;
&lt;font face=Arial color=#000000 size=2&gt;99.037&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;5919&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;5919&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="68.856770447244898"&gt;
&lt;font face=Arial color=#000000 size=2&gt;68.85677&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1000000&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;31&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;31&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;31&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;NULL&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="2105058535"&gt;
&lt;font face=Arial color=#000000 size=2&gt;2105058535&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;CLUSTERED&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;INDEX&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;IN_ROW_DATA&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="96.296296296296305"&gt;
&lt;font face=Arial color=#000000 size=2&gt;96.2963&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;27&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;27&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="67.686632073140601"&gt;
&lt;font face=Arial color=#000000 size=2&gt;67.68663&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;5919&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;23&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;23&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;23&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;NULL&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="2105058535"&gt;
&lt;font face=Arial color=#000000 size=2&gt;2105058535&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;CLUSTERED&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;INDEX&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;IN_ROW_DATA&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;2&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="8.3148010872250993"&gt;
&lt;font face=Arial color=#000000 size=2&gt;8.314801&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;27&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;23&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;23&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;23&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;NULL&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
&gt;&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;table style="WIDTH: 1018pt; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width=1357 border=1 x:str&gt;
&lt;colgroup&gt;
&lt;col style="WIDTH: 48pt" width=64&gt;
&lt;col style="WIDTH: 58pt; mso-width-source: userset; mso-width-alt: 2816" width=77&gt;
&lt;col style="WIDTH: 48pt" span=19 width=64&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" width=64 height=17&gt;
&lt;font face=Arial color=#000000 size=2&gt;database_id&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 58pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=77&gt;
&lt;font face=Arial color=#000000 size=2&gt;object_id&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_id&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;partition_number&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_type_desc&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;alloc_unit_type_desc&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_depth&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;index_level&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_fragmentation_in_percent&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;fragment_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_fragment_size_in_pages&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;page_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_page_space_used_in_percent&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;record_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;ghost_record_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;version_ghost_record_count&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;min_record_size_in_bytes&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;max_record_size_in_bytes&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64&gt;
&lt;font face=Arial color=#000000 size=2&gt;avg_record_size_in_bytes&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 96pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; mso-ignore: colspan" width=128 colspan=2&gt;
&lt;font face=Arial color=#000000 size=2&gt;forwarded_record_count&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="2073058421"&gt;
&lt;font face=Arial color=#000000 size=2&gt;2073058421&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;CLUSTERED&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;INDEX&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;IN_ROW_DATA&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="0.423402617397998"&gt;
&lt;font face=Arial color=#000000 size=2&gt;0.423403&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;317&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="8.1955835962145098"&gt;
&lt;font face=Arial color=#000000 size=2&gt;8.195584&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;2598&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="99.841129231529493"&gt;
&lt;font face=Arial color=#000000 size=2&gt;99.84113&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1000000&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;19&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;19&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;19&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;NULL&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="2073058421"&gt;
&lt;font face=Arial color=#000000 size=2&gt;2073058421&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;CLUSTERED&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;INDEX&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;IN_ROW_DATA&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;9&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;9&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="46.338855942673597"&gt;
&lt;font face=Arial color=#000000 size=2&gt;46.33886&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;2598&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;NULL&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 12.75pt" height=17&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;6&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="2073058421"&gt;
&lt;font face=Arial color=#000000 size=2&gt;2073058421&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;CLUSTERED&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;INDEX&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;IN_ROW_DATA&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;3&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;2&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;1&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num="1.4208055349641699"&gt;
&lt;font face=Arial color=#000000 size=2&gt;1.420806&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;9&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;0&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num&gt;
&lt;font face=Arial color=#000000 size=2&gt;11&lt;/font&gt;&lt;/td&gt;
&lt;td style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"&gt;
&lt;font face=Arial color=#000000 size=2&gt;NULL&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
This is tough to read, but what you should be getting out of this is: Guid table is &lt;strong&gt;very &lt;/strong&gt;fragmented.&amp;nbsp;
Int table is not.&amp;nbsp; Also the Guid table had about 2.25 more pages than the Int
table.&amp;nbsp; Ideally you would be running an overnight process that reorganized pages
in your DB, and that would help with the fragmentation.
&lt;/p&gt;
&lt;p&gt;
So now the test query.&amp;nbsp; The question I wanted to answer was:&amp;nbsp; How many logical
reads are needed to read a record out of the Int table and how many are needed to
read out of the Guid table?
&lt;/p&gt;
&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SET
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;STATISTICS&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;IO&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;ON&gt;
&lt;p&gt;
SELECT 
&lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; IntWithData &lt;/font&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;WHERE&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; 619284&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
SELECT
&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#808080 size=2&gt;*&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;FROM&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; GuidWithData&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color=#0000ff size=2&gt;WHERE&lt;/font&gt;&lt;font color=#000000 size=2&gt; ID &lt;/font&gt;&lt;font color=#808080 size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;'7DD78950-D3CD-4016-8D92-738A6E0666F2'&lt;/font&gt;&lt;font color=#000000 size=2&gt; &lt;/font&gt;&lt;font color=#008000 size=2&gt;--
I had to find this value in my data&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font color=#008000 size=2&gt;&lt;font color=#003300&gt;The results:&lt;br&gt;
....&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;&lt;font color=#003300&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color=#008000 size=2&gt;&lt;font size=1&gt;(1 row(s) affected)
&lt;/p&gt;
&lt;p&gt;
Table 'IntWithData'. Scan count 0, logical reads 3, physical reads 0, read-ahead reads
0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
&lt;/p&gt;
&lt;p&gt;
(1 row(s) affected)
&lt;/p&gt;
&lt;p&gt;
Table 'GuidWithData'. Scan count 0, logical reads 3, physical reads 0, read-ahead
reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000 size=2&gt;3 logical reads. That means in a table with 1 million rows,
there should be &lt;strong&gt;no difference&lt;/strong&gt; between a table with Guid as a key
and one that has an int.&amp;nbsp; This is because the records are searched for using
a binary search algorithm.&amp;nbsp; In a perfectly balanced tree, it shouldn't take the
algorithm more than 20 tries to find the key with many of those "tries" are contained
in the same index page.&amp;nbsp; At some volume, and I haven't calculated exactly where,
there will be a difference of one logical read, but that's it.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000 size=2&gt;Hopefully, I haven't misinterpreted the results of this
test.&amp;nbsp; I don't think I have.&amp;nbsp; The bottom line is that Guids take up more
physical space, but you're able to find them just as fast as ints.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000 size=2&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&gt;&gt;&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=84277003-f7cf-4309-9bb7-5b6b53dd4fe5" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,84277003-f7cf-4309-9bb7-5b6b53dd4fe5.aspx</comments>
      <category>Development</category>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=a1ab7bdb-72d3-4e0e-addf-33d7f2257832</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,a1ab7bdb-72d3-4e0e-addf-33d7f2257832.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,a1ab7bdb-72d3-4e0e-addf-33d7f2257832.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a1ab7bdb-72d3-4e0e-addf-33d7f2257832</wfw:commentRss>
      <title>Cool new features I found in SQL 2005</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,a1ab7bdb-72d3-4e0e-addf-33d7f2257832.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,a1ab7bdb-72d3-4e0e-addf-33d7f2257832.aspx</link>
      <pubDate>Fri, 18 Aug 2006 21:01:27 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;I was preparing for
the SQL Server Exam 70-441 (Designing Database Solutions by Using Microsoft® SQL Server™
2005) and I kept coming across a whole bunch of small features that you don’t hear
a lot about.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’m not talking about the
big ones everyone already knows about like CLR Integration, DDL triggers, XML, and
ranking functions.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;These are ones that
took me by pleasant surprise.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;I
think they’re really cool, so I wanted to point them out.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Included
Columns / Covering Indexes&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Say you had a critical/oft-used
report that ran a statement like:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;Name&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; ProductNumber&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; Production&lt;/font&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;font color=#000000&gt;Product&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; Style&lt;/font&gt;&lt;span style="COLOR: gray"&gt;=&lt;/span&gt;&lt;span style="COLOR: red"&gt;'U'&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: gray"&gt;AND&lt;/span&gt;&lt;font color=#000000&gt; Class&lt;/font&gt;&lt;span style="COLOR: gray"&gt;=&lt;/span&gt;&lt;span style="COLOR: red"&gt;'L'&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;If you wanted to put
an index on the table to speed things up, you’d put an index on Style, Class, Name,
and ProductNumber. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;That would remove
the need to go from the index page to the table page to get all the information for
the query.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;SQL 2005 has added the include
clause to the Create Index statement.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;INDEX&lt;/span&gt;&lt;font color=#000000&gt; IX_Product_Class_Style&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ON&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; Production&lt;/font&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;font color=#000000&gt;Product &lt;/font&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;Class&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;Style&lt;/font&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: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;INCLUDE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;Name&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt; ProductNumber&lt;/font&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: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;What this is doing is
indexing just the Class and Style fields of the table.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The
Name and ProductNumber are stored at the leaf nodes of the index.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
saves space in the index pages, meaning you can get more rows in an index page, reducing
I/O and Disk Space.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Dynamic
Management Views&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Seriously, these are
pretty cool.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Really.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you haven’t looked at these, take the time to play around with a few.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;With these new views,
you are able to get high visibility into the SQL Server engine.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Wondering
what’s about to be written to the disk?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Query
sys.dm_io_pending_io_requests.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Troubleshooting
execution plans?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Use sys.dm_exec_cached_plans
and sys.dm_exec_plan_attributes.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Need
to see what’s running on the server right now?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;sys.dm_os_tasks.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How
often is an index used?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;There’s sys.dm_db_index_usage_stats
that will answer that question.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;There
are over 80 views that provide very useful information when you are troubleshooting
problems or just curious as to how SQL Server organizes itself.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;u&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;span style="TEXT-DECORATION: none"&gt;&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;
&lt;/o:p&gt;
&lt;/span&gt;&lt;/u&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;sp_create_plan_guide&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Every now and then,
I have a query that runs like a jackrabbit on my development machine, but runs like
3 legged turtle on a production machine.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
is usually because it decided not to use an index on the production machine due to
differences in data density or because running the query with parallelism is slower
with some statements.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To troubleshoot
these situations, I end up modifying the stored procedure to add various hints.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Rather than modify the
stored procedure, you can specify a hint for an existing query plan using the sp_create_plan_guide
stored proc.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This way you can experiment
without modifying the stored procedure and the hint doesn’t become part of your codebase.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;MSDN
documentation can be found &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms179880.aspx"&gt;&lt;font size=3&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;OUTPUT
Clause&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;A lot of people already
know about this pretty cool feature, but I didn’t.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
the past, if you do an insert to a table, and the table has an identity column, after
the insert, you would look at &lt;/span&gt;&lt;span style="COLOR: fuchsia; FONT-FAMILY: Verdana"&gt;@@IDENTITY&lt;/span&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt; or &lt;/span&gt;&lt;span style="COLOR: fuchsia; FONT-FAMILY: Verdana"&gt;scope_identity()&lt;/span&gt;&lt;span style="FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;That
always seemed hackish to me.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;You can now add
an OUTPUT clause to the end of an INSERT, UPDATE, or DELETE statement.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;That
will return the rows changed by the statement.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;INSERT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt;&lt;font color=#000000&gt; Person&lt;/font&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;font color=#000000&gt;Address&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;AddressLine1&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;AddressLine2&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;City&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;StateProvinceID&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;PostalCode&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;rowguid&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;ModifiedDate&lt;/font&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;VALUES&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;@AddressLine1&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;@AddressLine2&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;@City&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;@StateProvinceID&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;@PostalCode&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;@rowguid&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;@ModifiedDate&lt;/font&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: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;OUTPUT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; INSERTED&lt;/font&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;font color=#000000&gt;AddressID&lt;/font&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: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;You use the pseudo
tables INSERTED and DELETED, just like in triggers.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;u&gt;&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Storing
BLOBs in Table page&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Inevitability, on each
project I work on, there is a requirement to have a field capable of storing more
than 8k in a table.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s usually a field
that the user can enter unlimited comments about a customer.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So
I define it as a text field.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I always
feel guilty about it because the user’s text will rarely be more than 100 bytes and
I know it’s going to be stored on a different page.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;
&lt;o:p&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;In SQL 2005, if the
data will fit in the same page as the rest of the record, it will place it in the
same page.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This works with varchar/varbinary/nvarchar(max)
and XML datatypes.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The behavior is described &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms189087.aspx"&gt;&lt;font size=3&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt; at
MSDN.&lt;/font&gt;&lt;u&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font size=3&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Persistence of Computed Columns&lt;/b&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;This is kind of neat.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We’ve
had the ability to define computed columns in tables for a while.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They
worked exactly as they’re named.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When
the column was needed, it was computed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now
the results of the computed column can be saved to disk.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
allows you to index computed columns.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
can also feel free to create calculated columns that can be computationally intense.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;&lt;font color=#000000&gt; LineItem &lt;/font&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;LineItemID &lt;/font&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;IDENTITY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;1&lt;/font&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;font color=#000000&gt;1&lt;/font&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;OrderID &lt;/font&gt;&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ItemDesc &lt;/font&gt;&lt;span style="COLOR: blue"&gt;varchar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;font color=#000000&gt;512&lt;/font&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Qty &lt;/font&gt;&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Cost &lt;/font&gt;&lt;span style="COLOR: blue"&gt;money&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: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font color=#000000&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;LineTotal &lt;/font&gt;&lt;span style="COLOR: blue"&gt;as&lt;/span&gt;&lt;font color=#000000&gt; Qty &lt;/font&gt;&lt;span style="COLOR: gray"&gt;*&lt;/span&gt;&lt;font color=#000000&gt; Cost &lt;/font&gt;&lt;span style="COLOR: blue"&gt;PERSISTED&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black; FONT-FAMILY: Verdana"&gt;&lt;font size=3&gt;Those are all the ones
I found.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What you have noticed as small
new features in SQL that make life easier?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=a1ab7bdb-72d3-4e0e-addf-33d7f2257832" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,a1ab7bdb-72d3-4e0e-addf-33d7f2257832.aspx</comments>
      <category>Development</category>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=1a03f847-457a-45ad-9191-15b1f7c36fdb</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,1a03f847-457a-45ad-9191-15b1f7c36fdb.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,1a03f847-457a-45ad-9191-15b1f7c36fdb.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1a03f847-457a-45ad-9191-15b1f7c36fdb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font face="Verdana,Arial,Helvetica,sans-serif" size="3">Last
night I posted a webcontrol that I wrote to my <a href="http://www.denoncourtassociates.com/Default.aspx?tabid=60" target="_blank">website</a> that
makes life more difficult for spammers. It's a substitute for hyperlink control in
ASP.NET named the obscure hyperlink control<br /><br />
One of the ways that spammers get email addresses is that they have programs that
spider the web, looking for email addresses embedded in webpages. They target forum
based sites because people are more likely to leave their email addresses there. This
has caused people to start leaving their email addresses in cryptic formats (for example:
me {at} mydomain.com). I find these techniques annoying as an end user trying to contact
someone, but I also have to believe that spammers have caught on and look for variants
with the word "at" in them. The obscure hyperlink control can be used for any hyperlink,
mailto or http. Besides thwarting spammers, another use of the control would be to
link to an objectionable site without contributing to its search engine rank.<br /><br />
What the obscure hyperlink control does is scrambles (note - I'm not saying <i>encrypt</i>)
the hyperlink when the page is being created on the webserver using a random technique.
An scrambled example of my email address is 'mcstiostucoe@ipolamit:hldnnorascae.o'.
You can see a functioning example <a href="http://www.denoncourtassociates.com/Default.aspx?tabid=60" target="_blank">here</a>.
A matching javascript function is added to the webpage that unscrambles the hyperlink
when the user clicks on it. When you view the source of the webpage, the link is removed,
and an onClick handler is added to the hyperlink. Nowhere will you see the text of
the hyperlink. It is present in the onClick handler, but it is not very legible. The
Url is not stored in Viewstate, so it can't be taken from there, either.<br /><br />
Here are pros &amp; cons of this control:<br />
Pros:<br /><ul><li>
Easy to use (works exactly the same as the existing hyperlink control) 
</li><li>
The hyperlink information is not in the href attribute, but in the onClick (an area
that spammers don't always pay atttention to) 
</li><li>
The diversity of scrambling algorithms makes it difficult for spammers to target a
specific implementation 
</li><li>
Doesn't require a lot of server resources</li></ul>
Cons:<br /><ul><li>
Doesn't completely prevent spammers from getting email addresses. A determined spammer
could reverse engineer the control. This is just adds a roadblock for spammers. 
</li><li>
Requires that the user's browser supports javascript and that it is enabled. 
</li><li>
Limited number of scrambling algorithms. Right now there are 5. If this fills a need,
I intend to add more, but it will still be a finite number.</li></ul></font>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=1a03f847-457a-45ad-9191-15b1f7c36fdb" />
      </body>
      <title>Help in the fight against spam</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,1a03f847-457a-45ad-9191-15b1f7c36fdb.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,1a03f847-457a-45ad-9191-15b1f7c36fdb.aspx</link>
      <pubDate>Thu, 27 Oct 2005 16:02:31 GMT</pubDate>
      <description>&lt;font face=Verdana,Arial,Helvetica,sans-serif size=3&gt;Last night I posted a webcontrol
that I wrote to my &lt;a href="http://www.denoncourtassociates.com/Default.aspx?tabid=60" target=_blank&gt;website&lt;/a&gt; that
makes life more difficult for spammers. It's a substitute for hyperlink control in
ASP.NET named the obscure hyperlink control&lt;br&gt;
&lt;br&gt;
One of the ways that spammers get email addresses is that they have programs that
spider the web, looking for email addresses embedded in webpages. They target forum
based sites because people are more likely to leave their email addresses there. This
has caused people to start leaving their email addresses in cryptic formats (for example:
me {at} mydomain.com). I find these techniques annoying as an end user trying to contact
someone, but I also have to believe that spammers have caught on and look for variants
with the word "at" in them. The obscure hyperlink control can be used for any hyperlink,
mailto or http. Besides thwarting spammers, another use of the control would be to
link to an objectionable site without contributing to its search engine rank.&lt;br&gt;
&lt;br&gt;
What the obscure hyperlink control does is scrambles (note - I'm not saying &lt;i&gt;encrypt&lt;/i&gt;)
the hyperlink when the page is being created on the webserver using a random technique.
An scrambled example of my email address is 'mcstiostucoe@ipolamit:hldnnorascae.o'.
You can see a functioning example &lt;a href="http://www.denoncourtassociates.com/Default.aspx?tabid=60" target=_blank&gt;here&lt;/a&gt;.
A matching javascript function is added to the webpage that unscrambles the hyperlink
when the user clicks on it. When you view the source of the webpage, the link is removed,
and an onClick handler is added to the hyperlink. Nowhere will you see the text of
the hyperlink. It is present in the onClick handler, but it is not very legible. The
Url is not stored in Viewstate, so it can't be taken from there, either.&lt;br&gt;
&lt;br&gt;
Here are pros &amp;amp; cons of this control:&lt;br&gt;
Pros:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Easy to use (works exactly the same as the existing hyperlink control) 
&lt;li&gt;
The hyperlink information is not in the href attribute, but in the onClick (an area
that spammers don't always pay atttention to) 
&lt;li&gt;
The diversity of scrambling algorithms makes it difficult for spammers to target a
specific implementation 
&lt;li&gt;
Doesn't require a lot of server resources&lt;/li&gt;
&lt;/ul&gt;
Cons:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Doesn't completely prevent spammers from getting email addresses. A determined spammer
could reverse engineer the control. This is just adds a roadblock for spammers. 
&lt;li&gt;
Requires that the user's browser supports javascript and that it is enabled. 
&lt;li&gt;
Limited number of scrambling algorithms. Right now there are 5. If this fills a need,
I intend to add more, but it will still be a finite number.&lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=1a03f847-457a-45ad-9191-15b1f7c36fdb" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,1a03f847-457a-45ad-9191-15b1f7c36fdb.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=d5faa2ea-c210-4b10-ac4d-6f0919fb45f6</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,d5faa2ea-c210-4b10-ac4d-6f0919fb45f6.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,d5faa2ea-c210-4b10-ac4d-6f0919fb45f6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d5faa2ea-c210-4b10-ac4d-6f0919fb45f6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I've given a </font>
          <a href="http://www.denoncourtassociates.com/LinkClick.aspx?link=Introduction+to+Code+Access+Security.ppt&amp;mid=337" target="_blank">
            <font size="3">introductory
talk on Code Access Security </font>
          </a>
          <font size="3">a few times now. As I'm showing
all the pieces from an administrative point of view (Code Groups, PermissionSets),
and I go to create a code group, there is an option in the wizard that allows you
to import the settings from an XML file. People listening to my talk always, without
fail, ask, "How can I generate that XML file". It's fustrating, because there is no
clear way to do. No menu option, no command line utility. I alway mean to research
how to do it, but never seem to find the time. A couple of nights ago, I looked into
it. It turns out on each PermissionSet, or CodeGroup, there is a </font>
          <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemsecuritypermissionsetclasstoxmltopic.asp" target="_blank">
            <font size="3">ToXml</font>
          </a>
          <font size="3"> method.
Since it appears the only way to get the XML is using that method, I wrote a utility
that will export the XML to a file. You can download it </font>
          <a href="http://www.denoncourtassociates.com/LinkClick.aspx?link=ExportCASXml.msi&amp;mid=387" target="_blank">
            <font size="3">here</font>
          </a>
          <font size="3">.</font>
        </p>
        <p>
          <img src="http://blog.denoncourtassociates.com/content/binary/Export.jpg" border="0" />
        </p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=d5faa2ea-c210-4b10-ac4d-6f0919fb45f6" />
      </body>
      <title>Exporting Code Access Security settings to an XML file</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,d5faa2ea-c210-4b10-ac4d-6f0919fb45f6.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,d5faa2ea-c210-4b10-ac4d-6f0919fb45f6.aspx</link>
      <pubDate>Fri, 07 Oct 2005 13:09:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font size=3&gt;I've given a &lt;/font&gt;&lt;a href="http://www.denoncourtassociates.com/LinkClick.aspx?link=Introduction+to+Code+Access+Security.ppt&amp;amp;mid=337" target=_blank&gt;&lt;font size=3&gt;introductory
talk on Code Access Security &lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;a few times now. As I'm showing
all the pieces from an administrative point of view (Code Groups, PermissionSets),
and I go to create a code group, there is an option in the wizard that allows you
to import the settings from an XML file. People listening to my talk always, without
fail, ask, "How can I generate that XML file". It's fustrating, because there is no
clear way to do. No menu option, no command line utility. I alway mean to research
how to do it, but never seem to find the time. A couple of nights ago, I looked into
it. It turns out on each PermissionSet, or CodeGroup, there is a &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemsecuritypermissionsetclasstoxmltopic.asp" target=_blank&gt;&lt;font size=3&gt;ToXml&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt; method.
Since it appears the only way to get the XML is using that method, I wrote a utility
that will export the XML to a file. You can download it &lt;/font&gt;&lt;a href="http://www.denoncourtassociates.com/LinkClick.aspx?link=ExportCASXml.msi&amp;amp;mid=387" target=_blank&gt;&lt;font size=3&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.denoncourtassociates.com/content/binary/Export.jpg" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=d5faa2ea-c210-4b10-ac4d-6f0919fb45f6" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,d5faa2ea-c210-4b10-ac4d-6f0919fb45f6.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=ed2da501-6512-4119-b9f3-7ad8bbc2f885</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,ed2da501-6512-4119-b9f3-7ad8bbc2f885.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,ed2da501-6512-4119-b9f3-7ad8bbc2f885.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ed2da501-6512-4119-b9f3-7ad8bbc2f885</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font size="3">There are a lot of areas
in the .NET framework that I haven't paid attention to because I don't have come across
a need for a particular area (the WMI stuff) and/or the area looked somewhat complicated.
In the XML Serialization engine, there is support for "Overrides". The serialization
that I had done to date had worked fine, so I glossed over these objects when I was
doing research.<br /><br />
I've written a data layer for my current project. It's a pretty robust data layer
if I do say so myself. It has support for parent/child relationships, data transactions,
delay loading, cascading deletes, exports to datasets and it's fully generated using
a code generator (</font>
        <a href="http://www.mygenerationsoftware.com" target="_blank">
          <font size="3">MyGeneration</font>
        </a>
        <font size="3">)....
It's really the Cadillac of data layers. 
<br /><br />
When an object is serialized, I prevent the serialization of child objects by adding
the [XMLIgnore] attribute to the child collection properties. I do this for performance
and size reasons. Because the data layer is </font>
        <a href="http://www.dofactory.com/Patterns/PatternProxy.aspx" target="_blank">
          <font size="3">delay
loaded</font>
        </a>
        <font size="3">, the collection might not be populated yet, causing
tremendous database activity when a developer decides to serialize the object. Also,
if you serialize an object high in the hierarchy, you would end up getting a hugely
sized piece of XML. The children of the children of the children would be included
in the document. After patting myself on the back for writing a fully featured, lightweight,
fast and consistent data layer quickly with relatively few defects, the need came
down for the objects to include all of their children in special circumstances...
But only select child objects, not all.<br /><br />
I gave this some thought over the weekend and resigned myself to the fact that I was
going to have to write some specialized method that serialized each object individually
and then molded all the results into one big XML document. After doing some more reading,
I came across the </font>
        <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlserializationxmlattributeoverridesclasstopic.asp" target="_blank">
          <font size="3">XmlAttributeOverrides</font>
        </a>
        <font size="3"> object.
This object allows you to selectively override XML serialization attributes that you
set for specific properties. Using this object, I created a serializer, told it which
additional properties I wanted serialized, and BAM!.. Done.</font>
        <br />
        <br />
        <br />
        <pre>
          <font color="#008000" size="3"> //Set up overrides</font>
          <br />
          <font size="3"> XmlAttributeOverrides overrides = </font>
          <font color="#0000ff" size="3">new</font>
          <font size="3"> XmlAttributeOverrides();<br /><br /></font>
          <font color="#008000" size="3">//ChildItems</font>
          <br />
          <font size="3"> XmlAttributes dontIgnore = </font>
          <font color="#0000ff" size="3">new</font>
          <font size="3"> XmlAttributes();<br />
dontIgnore.XmlIgnore=</font>
          <font color="#0000ff" size="3">false</font>
          <font size="3">;<br />
overrides.Add(</font>
          <font color="#0000ff" size="3">typeof</font>
          <font size="3">(ParentObject),"ChildItems",dontIgnore);</font>
          <font size="3"> XmlSerializer
xs = </font>
          <font color="#0000ff" size="3">new</font>
          <font size="3"> XmlSerializer(</font>
          <font color="#0000ff" size="3">typeof</font>
          <font size="3">(ParentObject),overrides);</font>
        </pre>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=ed2da501-6512-4119-b9f3-7ad8bbc2f885" />
      </body>
      <title>XML Overrides</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,ed2da501-6512-4119-b9f3-7ad8bbc2f885.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,ed2da501-6512-4119-b9f3-7ad8bbc2f885.aspx</link>
      <pubDate>Mon, 03 Oct 2005 20:25:06 GMT</pubDate>
      <description>&lt;font size=3&gt;There are a lot of areas in the .NET framework that I haven't paid attention
to because I don't have come across a need for a particular area (the WMI stuff) and/or
the area looked somewhat complicated. In the XML Serialization engine, there is support
for "Overrides". The serialization that I had done to date had worked fine, so I glossed
over these objects when I was doing research.&lt;br&gt;
&lt;br&gt;
I've written a data layer for my current project. It's a pretty robust data layer
if I do say so myself. It has support for parent/child relationships, data transactions,
delay loading, cascading deletes, exports to datasets and it's fully generated using
a code generator (&lt;/font&gt;&lt;a href="http://www.mygenerationsoftware.com" target=_blank&gt;&lt;font size=3&gt;MyGeneration&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;)....
It's really the Cadillac of data layers. 
&lt;br&gt;
&lt;br&gt;
When an object is serialized, I prevent the serialization of child objects by adding
the [XMLIgnore] attribute to the child collection properties. I do this for performance
and size reasons. Because the data layer is &lt;/font&gt;&lt;a href="http://www.dofactory.com/Patterns/PatternProxy.aspx" target=_blank&gt;&lt;font size=3&gt;delay
loaded&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;, the collection might not be populated yet, causing
tremendous database activity when a developer decides to serialize the object. Also,
if you serialize an object high in the hierarchy, you would end up getting a hugely
sized piece of XML. The children of the children of the children would be included
in the document. After patting myself on the back for writing a fully featured, lightweight,
fast and consistent data layer quickly with relatively few defects, the need came
down for the objects to include all of their children in special circumstances...
But only select child objects, not all.&lt;br&gt;
&lt;br&gt;
I gave this some thought over the weekend and resigned myself to the fact that I was
going to have to write some specialized method that serialized each object individually
and then molded all the results into one big XML document. After doing some more reading,
I came across the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlserializationxmlattributeoverridesclasstopic.asp" target=_blank&gt;&lt;font size=3&gt;XmlAttributeOverrides&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt; object.
This object allows you to selectively override XML serialization attributes that you
set for specific properties. Using this object, I created a serializer, told it which
additional properties I wanted serialized, and BAM!.. Done.&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;pre&gt;&lt;font color=#008000 size=3&gt; //Set up overrides&lt;/font&gt;
&lt;br&gt;
&lt;font size=3&gt; XmlAttributeOverrides overrides = &lt;/font&gt;&lt;font color=#0000ff size=3&gt;new&lt;/font&gt;&lt;font size=3&gt; XmlAttributeOverrides();&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#008000 size=3&gt;//ChildItems&lt;/font&gt;
&lt;br&gt;
&lt;font size=3&gt; XmlAttributes dontIgnore = &lt;/font&gt;&lt;font color=#0000ff size=3&gt;new&lt;/font&gt;&lt;font size=3&gt; XmlAttributes();&lt;br&gt;
dontIgnore.XmlIgnore=&lt;/font&gt;&lt;font color=#0000ff size=3&gt;false&lt;/font&gt;&lt;font size=3&gt;;&lt;br&gt;
overrides.Add(&lt;/font&gt;&lt;font color=#0000ff size=3&gt;typeof&lt;/font&gt;&lt;font size=3&gt;(ParentObject),"ChildItems",dontIgnore);&lt;/font&gt; &lt;font size=3&gt; XmlSerializer
xs = &lt;/font&gt;&lt;font color=#0000ff size=3&gt;new&lt;/font&gt;&lt;font size=3&gt; XmlSerializer(&lt;/font&gt;&lt;font color=#0000ff size=3&gt;typeof&lt;/font&gt;&lt;font size=3&gt;(ParentObject),overrides);&lt;/font&gt; &lt;/pre&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=ed2da501-6512-4119-b9f3-7ad8bbc2f885" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,ed2da501-6512-4119-b9f3-7ad8bbc2f885.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=f18ce395-ea67-4b99-8bca-7fe64937e9aa</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,f18ce395-ea67-4b99-8bca-7fe64937e9aa.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,f18ce395-ea67-4b99-8bca-7fe64937e9aa.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=f18ce395-ea67-4b99-8bca-7fe64937e9aa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font size="3">I was troubleshooting some
versioning problems we were having with a built; checking versions, strong name, modified
dates... One of the assemblies I came across had an assemblyversion of 0.0.0.0 . I
thought that was kind of funny, normally you see files with 1.0.0.0 or 0.9.0.0 or
1.0.12424.53264 . After researching it, the reason this assembly had zeros for the
version is because the developer removed AssemblyInfo.cs from the project. This caused
the assembly to be built without the AssemblyVersion attribute, leaving it with the
default 0.0.0.0 version.</font>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=f18ce395-ea67-4b99-8bca-7fe64937e9aa" />
      </body>
      <title>AssemblyInfo.cs</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,f18ce395-ea67-4b99-8bca-7fe64937e9aa.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,f18ce395-ea67-4b99-8bca-7fe64937e9aa.aspx</link>
      <pubDate>Sat, 01 Oct 2005 22:16:43 GMT</pubDate>
      <description>&lt;font size=3&gt;I was troubleshooting some versioning problems we were having with a
built; checking versions, strong name, modified dates... One of the assemblies I came
across had an assemblyversion of 0.0.0.0 . I thought that was kind of funny, normally
you see files with 1.0.0.0 or 0.9.0.0 or 1.0.12424.53264 . After researching it, the
reason this assembly had zeros for the version is because the developer removed AssemblyInfo.cs
from the project. This caused the assembly to be built without the AssemblyVersion
attribute, leaving it with the default 0.0.0.0 version.&lt;/font&gt;&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=f18ce395-ea67-4b99-8bca-7fe64937e9aa" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,f18ce395-ea67-4b99-8bca-7fe64937e9aa.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=08bc45a9-4aaf-45a4-82d3-4c0d1722a786</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,08bc45a9-4aaf-45a4-82d3-4c0d1722a786.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,08bc45a9-4aaf-45a4-82d3-4c0d1722a786.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=08bc45a9-4aaf-45a4-82d3-4c0d1722a786</wfw:commentRss>
      <title>Switch statements in IL</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,08bc45a9-4aaf-45a4-82d3-4c0d1722a786.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,08bc45a9-4aaf-45a4-82d3-4c0d1722a786.aspx</link>
      <pubDate>Fri, 30 Sep 2005 16:44:56 GMT</pubDate>
      <description>&lt;font size=3&gt;Just an interesting observation that I found when looking at some code
using &lt;/font&gt;&lt;a href="http://http://www.aisto.com/roeder/dotnet/"&gt;&lt;font size=3&gt;reflector&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;.
If you have a switch statement on a string, and there is a small set of cases, (&amp;lt;~10),
the switch is changed to a series of if/else statements. If your list is more than
10, it creates a hashtable, and inserts all the strings. Then using the expression
value it find the index of the value in the hashtable and uses that as its key. I'm
sure this is done for a performance reason, but I couldn't speculate as to what it
was. By looking at this, it would seem to be that it is best to use enumerations,
rather than hardcoded strings wherever possible.&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font face=Arial,Helvetica,sans-serif&gt;&lt;b&gt;Decompiled Switch statement with 5 cases&lt;/b&gt; &lt;pre&gt;&lt;font color=#1000a0&gt;public&lt;/font&gt; &lt;a title=System.String href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=1"&gt;string&lt;/a&gt; &lt;b&gt;SelectILTest5&lt;/b&gt;(&lt;a title=System.String href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=2"&gt;string&lt;/a&gt; input)
{ &lt;a title=System.String href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=3"&gt;string&lt;/a&gt; &lt;b&gt;text2&lt;/b&gt;; &lt;font color=#1000a0&gt;if&lt;/font&gt; ((&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; = &lt;a title="string input; // Parameter"&gt;input&lt;/a&gt;)
!= &lt;font color=#800000&gt;null&lt;/font&gt;) { &lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; = &lt;a title=System.String href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=4"&gt;string&lt;/a&gt;.&lt;a title="string System.String.IsInterned(string);" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=5"&gt;IsInterned&lt;/a&gt;(&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt;); &lt;font color=#1000a0&gt;if&lt;/font&gt; (&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; != &lt;font color=#800000&gt;"a1"&lt;/font&gt;)
{ &lt;font color=#1000a0&gt;if&lt;/font&gt; (&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; == &lt;font color=#800000&gt;"a2"&lt;/font&gt;)
{ &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a2"&lt;/font&gt;; } &lt;font color=#1000a0&gt;if&lt;/font&gt; (&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; == &lt;font color=#800000&gt;"a3"&lt;/font&gt;)
{ &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a3"&lt;/font&gt;; } &lt;font color=#1000a0&gt;if&lt;/font&gt; (&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; == &lt;font color=#800000&gt;"a4"&lt;/font&gt;)
{ &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a4"&lt;/font&gt;; } &lt;font color=#1000a0&gt;if&lt;/font&gt; (&lt;a title="string text2 // Local Variable"&gt;text2&lt;/a&gt; == &lt;font color=#800000&gt;"a5"&lt;/font&gt;)
{ &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a5"&lt;/font&gt;; } } &lt;font color=#1000a0&gt;else&lt;/font&gt; { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a1"&lt;/font&gt;;
} } &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;""&lt;/font&gt;; }&lt;/pre&gt;
&lt;b&gt;Decompiled Switch statement with 15 cases(C#)&lt;/b&gt;
&lt;br&gt;
&lt;pre&gt;&lt;font color=#1000a0&gt;public&lt;/font&gt; &lt;a title=System.String href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=1"&gt;string&lt;/a&gt; &lt;b&gt;SelectILTest15&lt;/b&gt;(&lt;a title=System.String href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=2"&gt;string&lt;/a&gt; input)
{ &lt;font color=#1000a0&gt;switch&lt;/font&gt; (&lt;a title="string input; // Parameter"&gt;input&lt;/a&gt;)
{ &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a1"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a1"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a2"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a2"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a3"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a3"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a4"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a4"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a5"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a5"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a6"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a6"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a7"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a7"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a8"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a8"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a9"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a9"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a10"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a10"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a11"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a11"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a12"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a12"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a13"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a13"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a14"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a14"&lt;/font&gt;;
} &lt;font color=#1000a0&gt;case&lt;/font&gt; &lt;font color=#800000&gt;"a15"&lt;/font&gt;: { &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;"a15"&lt;/font&gt;;
} } &lt;font color=#1000a0&gt;return&lt;/font&gt; &lt;font color=#800000&gt;""&lt;/font&gt;; }&lt;/pre&gt;
&lt;b&gt;Decompiled Switch statement with 15 cases (IL)&lt;/b&gt;
&lt;br&gt;
&lt;pre&gt;&lt;font color=#1000a0&gt;.method&lt;/font&gt; &lt;font color=#1000a0&gt;public&lt;/font&gt; &lt;font color=#1000a0&gt;hidebysig&lt;/font&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=string href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=1"&gt;string&lt;/a&gt; &lt;b&gt;SelectILTest15&lt;/b&gt;(&lt;a title=string href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=2"&gt;string&lt;/a&gt; input)&lt;font color=#1000a0&gt; &lt;/font&gt;&lt;font color=#1000a0&gt;cil&lt;/font&gt;&lt;font color=#1000a0&gt; &lt;/font&gt;&lt;font color=#1000a0&gt;managed&lt;/font&gt; { &lt;font color=#808080&gt;//
Code Size: 524 byte(s)&lt;/font&gt; &lt;font color=#1000a0&gt;.maxstack&lt;/font&gt; 4 &lt;font color=#1000a0&gt;.locals&lt;/font&gt; &lt;font color=#1000a0&gt;init&lt;/font&gt; ( &lt;a title=string href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=3"&gt;string&lt;/a&gt; &lt;b&gt;text1&lt;/b&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=4"&gt;object&lt;/a&gt; &lt;b&gt;obj1&lt;/b&gt;)
L_0000: &lt;a title="volatile (0xfe13): Specifies that an address currently atop the evaluation stack might be volatile, and the results of reading that location cannot be cached or that multiple stores to that location cannot be suppressed."&gt;volatile&lt;/a&gt; L_0002: &lt;a title="ldsfld (0x007e): Pushes the value of a static field onto the evaluation stack."&gt;ldsfld&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=5"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=6"&gt;System.Collections.Hashtable&lt;/a&gt; &lt;a title="&lt;PrivateImplementationDetails&gt;" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=7"&gt;&amp;lt;PrivateImplementationDetails&amp;gt;&lt;/a&gt;::&lt;a title=$$method0x6000015-1 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=8"&gt;$$method0x6000015-1&lt;/a&gt; L_0007: &lt;a title="brtrue (0x003a): Transfers control to a target instruction if value is true, not null, or non-zero."&gt;brtrue&lt;/a&gt; L_0124
L_000c: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;30&lt;/font&gt; L_000e: &lt;a title="ldc.r4 (0x0022): Pushes a supplied value of type float32 onto the evaluation stack as type F (float)."&gt;ldc.r4&lt;/a&gt; &lt;font color=#800000&gt;0.5&lt;/font&gt; L_0013: &lt;a title="newobj (0x0073): Creates a new object or a new instance of a value type, pushing an object reference (type O) onto the evaluation stack."&gt;newobj&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=9"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=10"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=11"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=.ctor href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=12"&gt;.ctor&lt;/a&gt;(&lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=13"&gt;int32&lt;/a&gt;, &lt;a title=float32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=14"&gt;float32&lt;/a&gt;)
L_0018: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_0019: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a1"&lt;/font&gt; L_001e: &lt;a title="ldc.i4.0 (0x0016): Pushes the integer value of 0 onto the evaluation stack as an int32."&gt;ldc.i4.0&lt;/a&gt; L_001f: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=15"&gt;int32&lt;/a&gt; L_0024: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=16"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=17"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=18"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=19"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=20"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=21"&gt;object&lt;/a&gt;)
L_0029: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_002a: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a2"&lt;/font&gt; L_002f: &lt;a title="ldc.i4.1 (0x0017): Pushes the integer value of 1 onto the evaluation stack as an int32."&gt;ldc.i4.1&lt;/a&gt; L_0030: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=22"&gt;int32&lt;/a&gt; L_0035: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=23"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=24"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=25"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=26"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=27"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=28"&gt;object&lt;/a&gt;)
L_003a: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_003b: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a3"&lt;/font&gt; L_0040: &lt;a title="ldc.i4.2 (0x0018): Pushes the integer value of 2 onto the evaluation stack as an int32."&gt;ldc.i4.2&lt;/a&gt; L_0041: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=29"&gt;int32&lt;/a&gt; L_0046: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=30"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=31"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=32"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=33"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=34"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=35"&gt;object&lt;/a&gt;)
L_004b: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_004c: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a4"&lt;/font&gt; L_0051: &lt;a title="ldc.i4.3 (0x0019): Pushes the integer value of 3 onto the evaluation stack as an int32."&gt;ldc.i4.3&lt;/a&gt; L_0052: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=36"&gt;int32&lt;/a&gt; L_0057: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=37"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=38"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=39"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=40"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=41"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=42"&gt;object&lt;/a&gt;)
L_005c: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_005d: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a5"&lt;/font&gt; L_0062: &lt;a title="ldc.i4.4 (0x001a): Pushes the integer value of 4 onto the evaluation stack as an int32."&gt;ldc.i4.4&lt;/a&gt; L_0063: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=43"&gt;int32&lt;/a&gt; L_0068: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=44"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=45"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=46"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=47"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=48"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=49"&gt;object&lt;/a&gt;)
L_006d: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_006e: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a6"&lt;/font&gt; L_0073: &lt;a title="ldc.i4.5 (0x001b): Pushes the integer value of 5 onto the evaluation stack as an int32."&gt;ldc.i4.5&lt;/a&gt; L_0074: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=50"&gt;int32&lt;/a&gt; L_0079: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=51"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=52"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=53"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=54"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=55"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=56"&gt;object&lt;/a&gt;)
L_007e: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_007f: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a7"&lt;/font&gt; L_0084: &lt;a title="ldc.i4.6 (0x001c): Pushes the integer value of 6 onto the evaluation stack as an int32."&gt;ldc.i4.6&lt;/a&gt; L_0085: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=57"&gt;int32&lt;/a&gt; L_008a: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=58"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=59"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=60"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=61"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=62"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=63"&gt;object&lt;/a&gt;)
L_008f: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_0090: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a8"&lt;/font&gt; L_0095: &lt;a title="ldc.i4.7 (0x001d): Pushes the integer value of 7 onto the evaluation stack as an int32."&gt;ldc.i4.7&lt;/a&gt; L_0096: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=64"&gt;int32&lt;/a&gt; L_009b: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=65"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=66"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=67"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=68"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=69"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=70"&gt;object&lt;/a&gt;)
L_00a0: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_00a1: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a9"&lt;/font&gt; L_00a6: &lt;a title="ldc.i4.8 (0x001e): Pushes the integer value of 8 onto the evaluation stack as an int32."&gt;ldc.i4.8&lt;/a&gt; L_00a7: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=71"&gt;int32&lt;/a&gt; L_00ac: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=72"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=73"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=74"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=75"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=76"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=77"&gt;object&lt;/a&gt;)
L_00b1: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_00b2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a10"&lt;/font&gt; L_00b7: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;9&lt;/font&gt; L_00b9: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=78"&gt;int32&lt;/a&gt; L_00be: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=79"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=80"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=81"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=82"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=83"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=84"&gt;object&lt;/a&gt;)
L_00c3: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_00c4: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a11"&lt;/font&gt; L_00c9: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;10&lt;/font&gt; L_00cb: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=85"&gt;int32&lt;/a&gt; L_00d0: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=86"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=87"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=88"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=89"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=90"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=91"&gt;object&lt;/a&gt;)
L_00d5: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_00d6: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a12"&lt;/font&gt; L_00db: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;11&lt;/font&gt; L_00dd: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=92"&gt;int32&lt;/a&gt; L_00e2: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=93"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=94"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=95"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=96"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=97"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=98"&gt;object&lt;/a&gt;)
L_00e7: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_00e8: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a13"&lt;/font&gt; L_00ed: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;12&lt;/font&gt; L_00ef: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=99"&gt;int32&lt;/a&gt; L_00f4: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=100"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=101"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=102"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=103"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=104"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=105"&gt;object&lt;/a&gt;)
L_00f9: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_00fa: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a14"&lt;/font&gt; L_00ff: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;13&lt;/font&gt; L_0101: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=106"&gt;int32&lt;/a&gt; L_0106: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=107"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=108"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=109"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=110"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=111"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=112"&gt;object&lt;/a&gt;)
L_010b: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_010c: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a15"&lt;/font&gt; L_0111: &lt;a title="ldc.i4.s (0x001f): Pushes the supplied int8 value onto the evaluation stack as an int32, short form."&gt;ldc.i4.s&lt;/a&gt; &lt;font color=#800000&gt;14&lt;/font&gt; L_0113: &lt;a title="box (0x008c): Converts a value type to an object reference (type O)."&gt;box&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=113"&gt;int32&lt;/a&gt; L_0118: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=void href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=114"&gt;void&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=115"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=116"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=Add href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=117"&gt;Add&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=118"&gt;object&lt;/a&gt;, &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=119"&gt;object&lt;/a&gt;)
L_011d: &lt;a title="volatile (0xfe13): Specifies that an address currently atop the evaluation stack might be volatile, and the results of reading that location cannot be cached or that multiple stores to that location cannot be suppressed."&gt;volatile&lt;/a&gt; L_011f: &lt;a title="stsfld (0x0080): Replaces the value of a static field with a value from the evaluation stack."&gt;stsfld&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=120"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=121"&gt;System.Collections.Hashtable&lt;/a&gt; &lt;a title="&lt;PrivateImplementationDetails&gt;" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=122"&gt;&amp;lt;PrivateImplementationDetails&amp;gt;&lt;/a&gt;::&lt;a title=$$method0x6000015-1 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=123"&gt;$$method0x6000015-1&lt;/a&gt; L_0124: &lt;a title="ldarg.1 (0x0003): Loads the argument at index 1 onto the evaluation stack."&gt;ldarg.1&lt;/a&gt; L_0125: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_0126: &lt;a title="stloc.1 (0x000b): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 1."&gt;stloc.1&lt;/a&gt; L_0127: &lt;a title="brfalse (0x0039): Transfers control to a target instruction if value is false, a null reference (Nothing in Visual Basic), or zero."&gt;brfalse&lt;/a&gt; L_0202
L_012c: &lt;a title="volatile (0xfe13): Specifies that an address currently atop the evaluation stack might be volatile, and the results of reading that location cannot be cached or that multiple stores to that location cannot be suppressed."&gt;volatile&lt;/a&gt; L_012e: &lt;a title="ldsfld (0x007e): Pushes the value of a static field onto the evaluation stack."&gt;ldsfld&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=124"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=125"&gt;System.Collections.Hashtable&lt;/a&gt; &lt;a title="&lt;PrivateImplementationDetails&gt;" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=126"&gt;&amp;lt;PrivateImplementationDetails&amp;gt;&lt;/a&gt;::&lt;a title=$$method0x6000015-1 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=127"&gt;$$method0x6000015-1&lt;/a&gt; L_0133: &lt;a title="ldloc.1 (0x0007): Loads the local variable at index 1 onto the evaluation stack."&gt;ldloc.1&lt;/a&gt; L_0134: &lt;a title="call (0x0028): Calls the method indicated by the passed method descriptor."&gt;call&lt;/a&gt; &lt;font color=#1000a0&gt;instance&lt;/font&gt; &lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=128"&gt;object&lt;/a&gt; [&lt;a title="mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=129"&gt;mscorlib&lt;/a&gt;]&lt;a title=System.Collections.Hashtable href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=130"&gt;System.Collections.Hashtable&lt;/a&gt;::&lt;a title=get_Item href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=131"&gt;get_Item&lt;/a&gt;(&lt;a title=object href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=132"&gt;object&lt;/a&gt;)
L_0139: &lt;a title="dup (0x0025): Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack."&gt;dup&lt;/a&gt; L_013a: &lt;a title="stloc.1 (0x000b): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 1."&gt;stloc.1&lt;/a&gt; L_013b: &lt;a title="brfalse (0x0039): Transfers control to a target instruction if value is false, a null reference (Nothing in Visual Basic), or zero."&gt;brfalse&lt;/a&gt; L_0202
L_0140: &lt;a title="ldloc.1 (0x0007): Loads the local variable at index 1 onto the evaluation stack."&gt;ldloc.1&lt;/a&gt; L_0141: &lt;a title="unbox (0x0079): Converts the boxed representation of a value type to its unboxed form."&gt;unbox&lt;/a&gt; &lt;a title=int32 href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=133"&gt;int32&lt;/a&gt; L_0146: &lt;a title="ldind.i4 (0x004a): Loads a value of type int32 as an int32 onto the evaluation stack indirectly."&gt;ldind.i4&lt;/a&gt; L_0147: &lt;a title="switch (0x0045): Implements a jump table."&gt;switch&lt;/a&gt; (L_018a,
L_0192, L_019a, L_01a2, L_01aa, L_01b2, L_01ba, L_01c2, L_01ca, L_01d2, L_01da, L_01e2,
L_01ea, L_01f2, L_01fa) L_0188: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_0202
L_018a: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a1"&lt;/font&gt; L_018f: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_0190: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_0192: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a2"&lt;/font&gt; L_0197: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_0198: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_019a: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a3"&lt;/font&gt; L_019f: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01a0: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01a2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a4"&lt;/font&gt; L_01a7: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01a8: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01aa: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a5"&lt;/font&gt; L_01af: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01b0: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01b2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a6"&lt;/font&gt; L_01b7: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01b8: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01ba: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a7"&lt;/font&gt; L_01bf: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01c0: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01c2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a8"&lt;/font&gt; L_01c7: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01c8: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01ca: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a9"&lt;/font&gt; L_01cf: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01d0: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01d2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a10"&lt;/font&gt; L_01d7: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01d8: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01da: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a11"&lt;/font&gt; L_01df: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01e0: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01e2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a12"&lt;/font&gt; L_01e7: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01e8: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01ea: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a13"&lt;/font&gt; L_01ef: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01f0: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01f2: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a14"&lt;/font&gt; L_01f7: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_01f8: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_01fa: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;"a15"&lt;/font&gt; L_01ff: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_0200: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_0202: &lt;a title="ldstr (0x0072): Pushes a new object reference to a string literal stored in the metadata."&gt;ldstr&lt;/a&gt; &lt;font color=#800000&gt;""&lt;/font&gt; L_0207: &lt;a title="stloc.0 (0x000a): Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0."&gt;stloc.0&lt;/a&gt; L_0208: &lt;a title="br.s (0x002b): Unconditionally transfers control to a target instruction (short form)."&gt;br.s&lt;/a&gt; L_020a
L_020a: &lt;a title="ldloc.0 (0x0006): Loads the local variable at index 0 onto the evaluation stack."&gt;ldloc.0&lt;/a&gt; L_020b: &lt;a title="ret (0x002a): Returns from the current method, pushing a return value (if present) from the caller's evaluation stack onto the callee's evaluation stack."&gt;ret&lt;/a&gt; } &lt;/pre&gt;
&lt;/font&gt;&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=08bc45a9-4aaf-45a4-82d3-4c0d1722a786" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,08bc45a9-4aaf-45a4-82d3-4c0d1722a786.aspx</comments>
      <category>Development</category>
      <category>DotNet</category>
    </item>
    <item>
      <trackback:ping>http://blog.philknows.net/Trackback.aspx?guid=79c3ca9c-0bd8-4479-85ca-a68020112529</trackback:ping>
      <pingback:server>http://blog.philknows.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.philknows.net/PermaLink,guid,79c3ca9c-0bd8-4479-85ca-a68020112529.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.philknows.net/CommentView,guid,79c3ca9c-0bd8-4479-85ca-a68020112529.aspx</wfw:comment>
      <wfw:commentRss>http://blog.philknows.net/SyndicationService.asmx/GetEntryCommentsRss?guid=79c3ca9c-0bd8-4479-85ca-a68020112529</wfw:commentRss>
      <title>NProf</title>
      <guid isPermaLink="false">http://blog.philknows.net/PermaLink,guid,79c3ca9c-0bd8-4479-85ca-a68020112529.aspx</guid>
      <link>http://blog.philknows.net/PermaLink,guid,79c3ca9c-0bd8-4479-85ca-a68020112529.aspx</link>
      <pubDate>Wed, 28 Sep 2005 18:32:01 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color=#000000&gt;&lt;font face=Verdana&gt;&lt;font size=3&gt;We're
in the early stages of a project I'm currently working on and we're starting to see
some performance concerns.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Since
the piece that I wrote (The data access layer) is used pretty heavily, I decided to
profile the application to see if there were any glaring bottlenecks.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;
&lt;font face=Verdana color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000 size=3&gt;I
downloaded &lt;/font&gt;&lt;a href="http://nprof.sourceforge.net/"&gt;&lt;font face=Verdana size=3&gt;nprof&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt;&lt;font face=Verdana&gt;&lt;font size=3&gt; from
SourceForge and used that as the profiler.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Overall,
it was pretty easy to setup and use.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;My
perception is that profiling with nprof didn’t add a lot of overhead to the profiled
process.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;
&lt;font face=Verdana color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color=#000000&gt;&lt;font face=Verdana&gt;&lt;font size=3&gt;When
you’re done running a profile, you’re left with some pretty good statistics: # times
a method was called, total percentage of total time spent in that method, total percentage
time spent in the child method.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;These
are all broken out by thread.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You can
view who called a particular method and what methods it calls.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
would be nice if there was more information about the thread, such as the life of
the thread and so forth.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;
&lt;font face=Verdana color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Verdana color=#000000 size=3&gt;Turns
out there is a measurable amount of time in my data layer creating temporary serialization
assemblies, so I’m going to rework it to use &lt;/font&gt;&lt;a href="http://weblogs.asp.net/cazzu/archive/2004/10/21/XGenToolRelease.aspx"&gt;&lt;font face=Verdana size=3&gt;this&lt;/font&gt;&lt;/a&gt;&lt;font face=Verdana color=#000000 size=3&gt; method
by &lt;/font&gt;&lt;a href="http://weblogs.asp.net/cazzu/"&gt;&lt;font face=Verdana size=3&gt;Daniel
Cazzulino&lt;/font&gt;&lt;/a&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;
&lt;font face=Verdana color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color=#000000&gt;&lt;font face=Verdana&gt;&lt;font size=3&gt;On
the whole, it is a great tool.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s unfortunate
that there hasn’t been any refinement to it lately.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=79c3ca9c-0bd8-4479-85ca-a68020112529" /&gt;</description>
      <comments>http://blog.philknows.net/CommentView,guid,79c3ca9c-0bd8-4479-85ca-a68020112529.aspx</comments>
      <category>Development</category>
    </item>
  </channel>
</rss>