<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>David Douglass</title>
        <link>http://geekswithblogs.net/.NETonMyMind/Default.aspx</link>
        <description>.NET on My Mind</description>
        <language>en-US</language>
        <copyright>David Douglass</copyright>
        <managingEditor>david_douglass@ieee.org</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>David Douglass</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/.NETonMyMind/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Not Playing Nice Together</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2010/03/14/138510.aspx</link>
            <description>&lt;p&gt;One of the things I’ve noticed is that two industry trends are not playing nice together, those trends being multi-core CPUs and massive hard drives.  It’s not a problem if you keep your cores busy with compute intensive work, but for software developers the beauty of multi-core CPUs (along with gobs of RAM and a 64 bit OS) is virtualization.  But when you have only one hard drive (who needs another when it holds 2 TB of data?) you wind up with a serious hard drive bottleneck.  A solid state drive would definitely help, and might even be a complete solution, but the cost is ridiculous.  Two TB of solid state storage will set you back around $7,000!  A spinning 2 TB drive is only $150.&lt;/p&gt;  &lt;p&gt;I see a couple of solutions for this.  One is the mainframe concept of near and far storage: put the stuff that will be heavily access on a solid state drive and the rest on a spinning drive.  Another solution is multiple spinning drives.  Instead of a single 2 TB drive, get four 500 GB drives.  In total, the four 500 GB drives will cost about $100 more than the single 2 TB drive.  You’ll need to be smart about what drive you place things on so that the load is spread evenly.  Another option, for better performance, would be four 10,000 RPM 300 GB drives, but that would cost about $800 more than the singe 2 TB drive and would deliver only 1.2 TB of space.&lt;/p&gt;  &lt;p&gt;All pricing based on &lt;a href="http://www.microcenter.com/index.html" target="_blank"&gt;Microcenter&lt;/a&gt; as of March 14, 2010.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138510"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138510" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/138510.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2010/03/14/138510.aspx</guid>
            <pubDate>Sun, 14 Mar 2010 18:10:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/138510.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2010/03/14/138510.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/138510.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/138510.aspx</trackback:ping>
        </item>
        <item>
            <title>Be Prepared</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138188.aspx</link>
            <description>&lt;p&gt;&lt;img src="http://www.normanrockwellvt.com/BoyScouts/b039.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Your machine is dead.  Now what?  I keep these bootable CDs on hand, just in case:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.grc.com/spinrite.htm" target="_blank"&gt;SpinRite&lt;/a&gt;.  This program has saved me several times.  Fixes unusable disks that cause systems to hang.  Worth $90 the first time you use it.  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ubcd4win.com/" target="_blank"&gt;Ultimate Boot CD for Windows&lt;/a&gt;.  This will allow you to boot a dead system from a CD and copy all the important stuff to an external hard drive (plug the hard drive in before booting).  There are also a lot of system utilities on the CD to help with repair.  Free but requires a Windows XP license.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/windows/enterprise/products/mdop/dart.aspx" target="_blank"&gt;Microsoft Diagnostics and Recovery Toolset&lt;/a&gt; is similar in concept to Ultimate Boot CD for Windows but is from Microsoft.  Unfortunately, Microsoft restricts distribution to customers who have purchased &lt;a href="http://www.microsoft.com/licensing/software-assurance/default.aspx" target="_blank"&gt;Software Assurance&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.acronis.com/homecomputing/products/trueimage/" target="_blank"&gt;Acronis True Image Home&lt;/a&gt; boot disk.  Boot from CD and backup to external hard drive.  Program also performs regular backups from Windows.  $50 list.&lt;/li&gt;    &lt;li&gt;Memory testers.  These exercise the system’s memory and report on any problems found.  All free.  &lt;a href="http://www.memtest86.com/" target="_blank"&gt;Memtest86&lt;/a&gt;, &lt;a href="http://www.memtest.org/" target="_blank"&gt;memtest86+&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/magazine/2008.09.utilityspotlight.aspx" target="_blank"&gt;Windows Memory Diagnostic&lt;/a&gt;.&lt;/li&gt; &lt;/ol&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138188"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138188" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/138188.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138188.aspx</guid>
            <pubDate>Fri, 26 Feb 2010 01:32:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/138188.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138188.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/138188.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/138188.aspx</trackback:ping>
        </item>
        <item>
            <title>Round &amp;amp; Round with Enums</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138184.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/sbbt4032(VS.100).aspx" target="_blank"&gt;Enumerated constants in C#&lt;/a&gt; can be represented 3 different ways:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;as a C# program constant&lt;/li&gt;    &lt;li&gt;as a number (typically int)&lt;/li&gt;    &lt;li&gt;as a string spelled identically to the C# constant&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here a sample program demonstrating how to convert between any of these formats.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:13e8d7a7-f7ab-4352-b4b4-2fb66c6b9632" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Collections.Generic;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Text;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000;"&gt; ConsoleApplication2 {
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;enum&lt;/span&gt;&lt;span style="color: #000000;"&gt; Color {
        red,
        white,
        blue
    }

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Program {
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Main(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] args) {
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; toString, fromString &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;red&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; toInt, fromInt &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
            Color toColor, fromColor &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Color.blue;

            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    string to enum&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            toColor &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Color) Enum.Parse(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Color), fromString);

            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    string to int&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            toInt &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;) (Color) Enum.Parse(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Color), fromString);

            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    int to enum&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            toColor &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Color) fromInt;

            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    int to string&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            toString &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ((Color) fromInt).ToString();

            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    enum to string&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            toString &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; fromColor.ToString();

            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    enum to int&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            toInt &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;) fromColor;

            Console.ReadLine();
        }
    }
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138184"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138184" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/138184.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138184.aspx</guid>
            <pubDate>Fri, 26 Feb 2010 00:02:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/138184.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138184.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/138184.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/138184.aspx</trackback:ping>
        </item>
        <item>
            <title>Dropbox Does it Right</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138182.aspx</link>
            <description>&lt;p&gt;I sent my kid off to college this fall and it didn’t require a soothsayer to know that she wouldn’t do any backups and at the end of the semester her hard drive would crap out.  After an emergency repair with the magnificent &lt;a href="http://www.grc.com/sroverview.htm" target="_blank"&gt;SpinRite&lt;/a&gt;, I started looking into personal cloud based backups.  &lt;a href="http://www.dropbox.com/" target="_blank"&gt;Dropbox&lt;/a&gt; was the only solution that did it all just right.  After installing Dropbox you designate a folder to watch (your dropbox).  Then just do your work, saving it in your dropbox.  Every time a changed file is closed it gets backed up to the cloud.  Nice touches include an file icon overlay to indicate backup status and a tray icon that shows overall backup status.  Need your stuff?  Go to the Dropbox web site and download it or use another computer with Dropbox installed.  You can get 2 gigabytes of space for free.  What’s not to like?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138182"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138182" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/138182.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138182.aspx</guid>
            <pubDate>Thu, 25 Feb 2010 23:27:35 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/138182.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2010/02/25/138182.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/138182.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/138182.aspx</trackback:ping>
        </item>
        <item>
            <title>Speaking at the Fairfield / Westchester Code Camp</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2009/11/03/135982.aspx</link>
            <description>&lt;p&gt;This Saturday, November 7, the &lt;a href="http://www.fairfieldwestchester.net/" target="_blank"&gt;Fairfield / Westchester .NET User Group&lt;/a&gt; is hosting the 3rd annual &lt;a href="http://fairfieldwestchester.net/Code-Camp.aspx" target="_blank"&gt;Fairfield / Westchester Code Camp&lt;/a&gt; at the &lt;a href="http://citi.uconn.edu/citi_home.asp" target="_blank"&gt;Connecticut Information Technology Institute&lt;/a&gt; in &lt;a href="http://citi.uconn.edu/content_pages/about_travel_new.asp" target="_blank"&gt;Stamford, CT&lt;/a&gt;.  I’ll be speaking on New Debugging Features in Visual Studio 2010.  Hope to see you there!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135982"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135982" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/135982.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2009/11/03/135982.aspx</guid>
            <pubDate>Wed, 04 Nov 2009 02:08:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/135982.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2009/11/03/135982.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/135982.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/135982.aspx</trackback:ping>
        </item>
        <item>
            <title>Fixing Your Windows Explorer Shortcut</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2009/03/01/129759.aspx</link>
            <description>&lt;p&gt;I’m sure you’ve noticed that Windows Explorer thinks that everything you care about is in My Documents.  If you’re like me that isn’t true; important stuff is in the C drive, network shares, external storage, etc.  Wouldn’t it be nice if Windows Explorer opened showing all the devices on the computer?  Change your Windows Explorer shortcut as below and it will.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;%SystemRoot%\explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129759"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129759" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/129759.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2009/03/01/129759.aspx</guid>
            <pubDate>Sun, 01 Mar 2009 17:24:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/129759.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2009/03/01/129759.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/129759.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/129759.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Should Just Give Up on Search</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2009/03/01/129758.aspx</link>
            <description>&lt;p&gt;So I’m doing a little coding using reflection and the following exception is raised:&lt;/p&gt;  &lt;p&gt;It is illegal to reflect on the custom attributes of a Type loaded via ReflectionOnlyGetType (see Assembly.ReflectionOnly) -- use CustomAttributeData instead.&lt;/p&gt;  &lt;p&gt;I don’t get it so I pump the error message into Microsoft’s Live Search.  Live Search comes back with:&lt;/p&gt;  &lt;p&gt;We did not find any results for &lt;strong&gt;It is illegal to reflect on the custom attributes of a Type loaded via ReflectionOnlyGetType (see Assembly.ReflectionOnly) -- use CustomAttributeData instead.&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Not believing this for even 1 nanosecond, I run the same query using Google.  Google’s first hit points me to &lt;a href="http://blogs.msdn.com/kaevans/archive/2005/10/24/484186.aspx" target="_blank"&gt;Kirk Evens’ MSDN blog&lt;/a&gt; where the exact messages appears in the entry!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129758"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129758" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/129758.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2009/03/01/129758.aspx</guid>
            <pubDate>Sun, 01 Mar 2009 16:20:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/129758.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2009/03/01/129758.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/129758.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/129758.aspx</trackback:ping>
        </item>
        <item>
            <title>I&amp;rsquo;m Speaking at Code Camp NYC</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2009/01/07/128449.aspx</link>
            <description>&lt;p&gt;I’m Speaking at Code Camp NYC (&lt;a href="http://nyc.codecamp.us/" target="_blank"&gt;http://nyc.codecamp.us/&lt;/a&gt;) this Saturday, January 10 on &lt;a href="http://cid-c3a729d382d8ce56.skydrive.live.com/self.aspx/Presentation%20Slide%20Decks/Virtualization%20for%20Developers.pptx" target="_blank"&gt;Virtualization for Developers&lt;/a&gt;.  You can register for the code camp at &lt;a href="https://www.clicktoattend.com/invitation.aspx?code=134146" target="_blank"&gt;https://www.clicktoattend.com/invitation.aspx?code=134146&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Hope to see you there!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128449"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128449" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/128449.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2009/01/07/128449.aspx</guid>
            <pubDate>Wed, 07 Jan 2009 11:35:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/128449.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2009/01/07/128449.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/128449.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/128449.aspx</trackback:ping>
        </item>
        <item>
            <title>Garbage Collection in VB6 and .NET</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2008/11/30/127467.aspx</link>
            <description>&lt;p&gt;I've noticed some confusion amongst VB6 programmers who've moved to .NET regarding garbage collection, so I'd like to explain the differences.&lt;/p&gt;
&lt;p&gt;VB6 is built on top of &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms694363(VS.85).aspx"&gt;COM&lt;/a&gt;.  In COM, each object has a hidden reference count inside it, a count of the number of in scope variables that point to the object.  When you new an object the reference count is set to 1.  If you then assign that variable to another, the reference count is incremented to 2.  As those references go away, either by variables going out of scope or having a different value assigned to them, the reference count is decremented.  When the reference count goes to 0, there is no way for the object to get used and it gets garbage collected at that time.&lt;/p&gt;
&lt;p&gt;In .NET, objects do not have a reference count.  Instead, the .NET run time maintains a list of what points to what.  When an object instantiates another object, the .NET run time keeps track of the relationship.  If the object gets passed around, it remembers those relationships also.  Eventually, all the pointers to an object go away.  At that point, unlike VB6, nothing happens; there simply exists an unreferenced object in memory.  At some point, so much garbage (i. e., unreferenced objects) will build up in memory that the .NET run time will decide to track down unreferenced objects and garbage collect them (that's a simplification, but it will serve).&lt;/p&gt;
&lt;p&gt;These differences affect how to program.  In VB6, it is common to set a variable to nothing to force the reference count to drop to 0 and cause garbage collection of that object.  This doesn't make sense in .NET.  Setting something to nothing in .NET, assuming there is only 1 reference, simply cause the object to become a candidate for garbage collection at some later, undefined time.  If you find you really need to force garbage collection in .NET there are 2 options:&lt;/p&gt;
&lt;ol&gt;
    &lt;ol&gt;
        &lt;ol&gt;
            &lt;li&gt;Refactor your program to keep scopes as narrow as possible &lt;/li&gt;
            &lt;li&gt;Use the Dispose pattern &lt;/li&gt;
        &lt;/ol&gt;
    &lt;/ol&gt;
&lt;/ol&gt;
&lt;p&gt;Where and how you declare objects affects how long they are in scope.  Shared variables are in scope for the life of the program, member variables for as long as the object exists, and local variables until a function is exited.  Always strive for the narrowest scope, this way object will naturally garbage collect at the best time.&lt;/p&gt;
&lt;p&gt;There can be times when you need to release an object at a specific point in a program.  This is done using the Dispose pattern.  See &lt;a target="_blank" href="http://www.bluebytesoftware.com/blog/2005/04/08/DGUpdateDisposeFinalizationAndResourceManagement.aspx"&gt;Dispose, Finalization, and Resource Management&lt;/a&gt; for a complete discussion.  The Twitter version is that the Dispose pattern lets you tell an object "You're done; release your resources now".  This is not the same as garbage collection; garbage collection still happens later as described above.  If you need to implement Dispose, pay close attention to the details.  I ran into a nasty bug when this wasn't done correctly, which I discussed at &lt;a target="_blank" href="http://geekswithblogs.net/.NETonMyMind/archive/2008/05/04/121887.aspx"&gt;Observations on .NET Object Disposal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The 2 options are not mutually exclusive at all.  #1 should always be done, #2 should be done whenever necessary.&lt;/p&gt;
&lt;p&gt;There is an option 3 which should be avoided, calling the Collect method on the GC class.  Performance will suffer by using GC.Collect.&lt;/p&gt;
&lt;p&gt;There is an important difference between forcing garbage collection in VB6 by setting a variable to nothing and forcing clean up in .NET by calling Dispose.  In VB6, garbage collection happens only once there is no way for the object to be accessed.  In .NET, as far as the run time is concerned, Dispose is just another function like any other (compilers treat Dispose special, but not the run time).  You can call Dispose no matter how many references exist to an object.  Also, nothing stops you from using an object after it has been disposed.  Whether this "works" depends on the design of the class.  Nonetheless, using an object after it has been disposed is a violation of the pattern.  Future maintainers of the code may assume the pattern has been followed correctly and cause objects to be unusable once disposed.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127467"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127467" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/127467.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2008/11/30/127467.aspx</guid>
            <pubDate>Sun, 30 Nov 2008 16:47:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/127467.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2008/11/30/127467.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/127467.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/127467.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick Database Sanity Check</title>
            <link>http://geekswithblogs.net/.NETonMyMind/archive/2008/11/28/127433.aspx</link>
            <description>&lt;p&gt;My project is on the move, literally.  We're migrating from our old data center to a new one; everything is being brought up on new hardware.  Since we're using full and incremental backups, an important sanity check is to make sure all the data has been restored, which is being done using the following query:&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:6e4b5e60-18d4-41fb-938a-9b8e67017cf8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;;font-family:Courier New;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;select &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'''&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; TABLE_SCHEMA &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'''&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; as TableSchema, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'''&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; TABLE_NAME &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'''&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; as TableName, count(*) as [Rows] from &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; TABLE_SCHEMA &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; TABLE_NAME &lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; union&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;SQL&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    INFORMATION_SCHEMA.TABLES
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    TABLE_TYPE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;BASE TABLE&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;The query above produces a query.  When run against the AdventureWorks database you get:&lt;/p&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:60f911e8-1b27-4efb-9a41-9486a995dc87" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;;font-family:Courier New;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Production&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableSchema, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ProductProductPhoto&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableName, &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;count&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Rows&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; Production.ProductProductPhoto &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;union&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; many rows removed&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Production&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableSchema, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ProductPhoto&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableName, &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;count&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Rows&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; Production.ProductPhoto &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;union&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;The result isn't perfect.  The last union operator needs to be replaced by an order by:&lt;/p&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:80461a7b-1825-4920-a772-10816b60f9df" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;;font-family:Courier New;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Production&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableSchema, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ProductPhoto&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableName, &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;count&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Rows&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; Production.ProductPhoto
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;order&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;by&lt;/span&gt;&lt;span style="color: #000000;"&gt; TableSchema, TableName&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;When you run the fixed up query you'll get a list of every table in a database along with the number of rows in each table:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/.NETonMyMind/WindowsLiveWriter/QuickDatabaseSanityCheck_752A/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="416" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/.NETonMyMind/WindowsLiveWriter/QuickDatabaseSanityCheck_752A/image_thumb.png" width="494" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If there's too many tables to compare by hand, save the results from the source and destination databases to text files and compare using &lt;a href="http://winmerge.org/" target="_blank"&gt;WinMerge&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127433"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127433" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/.NETonMyMind/aggbug/127433.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>David Douglass</dc:creator>
            <guid>http://geekswithblogs.net/.NETonMyMind/archive/2008/11/28/127433.aspx</guid>
            <pubDate>Fri, 28 Nov 2008 13:43:49 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/.NETonMyMind/comments/127433.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/.NETonMyMind/archive/2008/11/28/127433.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/.NETonMyMind/comments/commentRss/127433.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/.NETonMyMind/services/trackbacks/127433.aspx</trackback:ping>
        </item>
    </channel>
</rss>