<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>John Paul Cook</title><link>http://sqlblog.com/blogs/john_paul_cook/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>SQL Server 2008 Spatial Data - Getting Started, Part 2</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx</link><pubDate>Mon, 17 Nov 2008 02:54:17 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9975</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/9975.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=9975</wfw:commentRss><description>&lt;p&gt;My &lt;a href="http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx" target="_blank"&gt;first post&lt;/a&gt; on getting started with SQL Server 2008 spatial data showed the results of displaying geography data. Before moving forward to advanced topics, it's time to pull back and learn the basics. It's easier to learn the fundamentals by using the other spatial data type, geometry. We're going to figuratively get some graph paper and remember our high school algebra and geometry lessons. Don't worry, everybody's going to get a good grade!&lt;/p&gt;  &lt;p&gt;The spatial data types and objects are described &lt;a href="http://msdn.microsoft.com/en-us/library/bb964711.aspx" target="_blank"&gt;here&lt;/a&gt; in Books Online. We'll begin by creating a square box by using the polygon object. Although it is true that it takes four points to define a square, it takes five points to define a square using the polygon object. That's because we need to close the square by using the first point as the fifth and last point. Think of it as describing a path you are walking. After getting to the fourth point of the square, you want to walk back to the first point to close the loop. Here's the code to make and display a square two units in length on each side.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;        &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="280" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_thumb_1.png" width="821" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A single box isn't an interesting as two boxes, especially when the two boxes have something in common. We'll continue by creating a larger box that partially intersects the first box.&lt;/p&gt; &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;font color="#808080"&gt;, &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;@largeBox&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;We see the result result as before. That's not what we want to see. We want to see both polygons, both squares.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="277" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_thumb_2.png" width="821" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the previous code snippet, we treated the spatial objects as columns. That's why we didn't achieve the desired result. If the query is modified to return the large box first, only the large box appears. It is necessary to treat the spatial objects as rows to see all of them.&lt;/p&gt; &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;font color="#808080"&gt;          &lt;br /&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;union &lt;font color="#808080"&gt;all                      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now we see both polygons. Notice that the intersection of the two squares is a darker shade and easily identified visually. This is only a visual effect. To programmatically define and work with the intersection of the two polygons, a spatial data method call is required.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="278" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_thumb_3.png" width="818" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To compute the intersection of two polygons, the STIntersection method is used. You can read more about geometry method calls &lt;a href="http://msdn.microsoft.com/en-us/library/bb933960.aspx" target="_blank"&gt;here&lt;/a&gt; in Books Online.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @smallBox&lt;font color="#808080"&gt;.&lt;/font&gt;STIntersection&lt;font color="#808080"&gt;(&lt;/font&gt;@largeBox&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;If you modify the query slightly, you can get the coordinates of the polygon defining the intersection.&lt;/p&gt; &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @smallBox&lt;font color="#808080"&gt;.&lt;/font&gt;STIntersection&lt;font color="#808080"&gt;(&lt;/font&gt;@largeBox&lt;font color="#808080"&gt;)&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;ToString&lt;/font&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;font color="#808080"&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;POLYGON ((1 1, 2 1, 2 2, 1 2, 1 1))&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Although the following query doesn't produce significantly different results in the spatial viewer, it is different because it is actually displaying three distinct polygons.&lt;/p&gt; &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox        &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;union &lt;font color="#808080"&gt;all                      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;font color="#808080"&gt;                &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#000000"&gt;&lt;font color="#808080"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;union &lt;font color="#808080"&gt;all                      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @smallBox&lt;font color="#808080"&gt;.&lt;/font&gt;STIntersection&lt;font color="#808080"&gt;(&lt;/font&gt;@largeBox&lt;font color="#808080"&gt;)&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_10.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="279" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_thumb_4.png" width="818" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Change the query as shown and use the STUnion operator instead of STIntersection.&lt;/p&gt; &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @smallBox&lt;font color="#808080"&gt;.&lt;/font&gt;STUnion&lt;font color="#808080"&gt;(&lt;/font&gt;@largeBox&lt;font color="#808080"&gt;)&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_12.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="377" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/QLServer2008SpatialDataGettingStartedPar_105E9/image_thumb_5.png" width="817" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Most geometry method calls don't return visual results. For example, STArea returns a scalar value for the area. By inspection, you can see that the total area of the union of the two square boxes is 12. STArea computes the area of a spatial object:&lt;/p&gt; &lt;font color="#ff0000"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#ff0000"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;/font&gt;&lt;font face="Courier New" color="#808080"&gt;;          &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;/font&gt;&lt;font face="Courier New" color="#808080"&gt;;            &lt;br /&gt;            &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;      &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;font color="#808080"&gt;.&lt;/font&gt;STUnion&lt;font color="#808080"&gt;(&lt;/font&gt;@largeBox&lt;/font&gt;&lt;font color="#808080"&gt;)&lt;font color="#808080"&gt;;              &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#000000"&gt;12&lt;/font&gt;&lt;/p&gt;   &lt;/font&gt;&lt;/font&gt;  &lt;p&gt;Other methods are Boolean and return either a 1 or a 0. Instead of seeing the intersection of two polygons, sometimes all you need to know is if the polygons intersect.&lt;/p&gt; &lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@smallBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((0 0, 0 2, 2 2, 2 0, 0 0))'&lt;font color="#808080"&gt;;      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font face="Courier New" color="#ff0000"&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; &lt;font color="#000000"&gt;@largeBox&lt;/font&gt; &lt;font color="#0000ff"&gt;geometry&lt;/font&gt; &lt;font color="#808080"&gt;=&lt;/font&gt; 'polygon((1 1, 1 4, 4 4, 4 1, 1 1))'&lt;font color="#808080"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; @smallBox&lt;font color="#808080"&gt;.&lt;/font&gt;STIntersects&lt;font color="#808080"&gt;(&lt;/font&gt;@largeBox&lt;font color="#808080"&gt;)&lt;font color="#808080"&gt;;          &lt;br /&gt;&lt;font face="Courier New" color="#000000"&gt;1&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;More examples will be posted later.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=SQL Server 2008 Spatial Data - Getting Started, Part 2&amp;amp;body=Seen on SQLblog.com: %0A%0A%09SQL Server 2008 Spatial Data - Getting Started, Part 2%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx" target="_blank" title = "Email SQL Server 2008 Spatial Data - Getting Started, Part 2"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started%2c+Part+2" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started, Part 2 to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx&amp;amp;phase=2" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started, Part 2 to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started%2c+Part+2" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started, Part 2 to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started%2c+Part+2" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started, Part 2 to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started%2c+Part+2&amp;amp;;top=1" target="_blank" title = "Add SQL Server 2008 Spatial Data - Getting Started, Part 2 to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9975" width="1" height="1"&gt;</description></item><item><title>SQL Server 2008 Spatial Data - Getting Started</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx</link><pubDate>Sat, 18 Oct 2008 05:36:20 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9552</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/9552.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=9552</wfw:commentRss><description>&lt;p&gt;There are all kinds of cool things you can do with SQL Server 2008 spatial data. A lot of people know that, but not that many have gotten started. Don't put it off, you can get started today using SQL Server 2008 Express. It's simple to get started. Here's how to take your first baby steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install Windows Installer 4.5 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5A58B56F-60B6-4412-95B9-54D056D6F9F4&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=5A58B56F-60B6-4412-95B9-54D056D6F9F4&amp;amp;displaylang=en&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Install .NET 3.5 SP1 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Install PowerShell &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx"&gt;http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Install SQL Server 2005 Express with Advanced Services &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B5D1B8C3-FDA5-4508-B0D0-1311D670E336&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=B5D1B8C3-FDA5-4508-B0D0-1311D670E336&amp;amp;displaylang=en&lt;/a&gt;. Since you are trying to learn new things (not just spatial queries), I recommend installing all features. &lt;/li&gt;    &lt;li&gt;Install the AdventureWorks sample databases &lt;a href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040"&gt;http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040&lt;/a&gt; taking care to select the &lt;b&gt;SQL2008.AdventureWorks_OLTP_DB_v2008&lt;/b&gt; and &lt;b&gt;SQL2008.AdventureWorks_DW_BI_v2008&lt;/b&gt; files appropriate for your operating system. Once again I recommend installing all features. &lt;/li&gt;    &lt;li&gt;Do a spatial query. You'll need to find a spatial data column. How do you do that? The easiest way is to check the system metadata.      &lt;br /&gt;      &lt;br /&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#808080"&gt;*            &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt; &lt;font color="#008000"&gt;INFORMATION_SCHEMA.COLUMNS&lt;/font&gt;           &lt;br /&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt; DATA_TYPE &lt;font color="#808080"&gt;like&lt;/font&gt; &lt;font color="#ff0000"&gt;'geo%'&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;The query reveals that the &lt;b&gt;Address&lt;/b&gt; table in the &lt;b&gt;Person&lt;/b&gt; schema has a column named &lt;b&gt;SpatialLocation&lt;/b&gt; with a data type of &lt;b&gt;geography&lt;/b&gt;. &lt;/li&gt;    &lt;li&gt;Issue a simple query against the table.      &lt;br /&gt;      &lt;br /&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#808080"&gt;*&lt;/font&gt; &lt;font color="#0000ff"&gt;from&lt;/font&gt; Person&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;font color="#0000ff"&gt;Address&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Notice the &lt;b&gt;Spatial results&lt;/b&gt; tab. Select the &lt;b&gt;Robinson&lt;/b&gt; projection. So what does the map depict? The Person.Address table contains the addresses of employees and customers around the world. Although the viewer shows only the first 5,000 rows of the 19,614 addresses in the database, you can see that the addresses define the continental United States and the east coast of Australia somewhat. Because the mouse pointer is hovering over an address stored in the table, you see the details of the row in the box that's displayed over the map surface. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/SQLServer2008SpatialDataGettingStarted_887/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="343" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/SQLServer2008SpatialDataGettingStarted_887/image_thumb_1.png" width="846" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The series continues with &lt;a href="http://sqlblog.com/blogs/john_paul_cook/archive/2008/11/16/sql-server-2008-spatial-data-getting-started-part-2.aspx"&gt;part 2 here&lt;/a&gt;.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=SQL Server 2008 Spatial Data - Getting Started&amp;amp;body=Seen on SQLblog.com: %0A%0A%09SQL Server 2008 Spatial Data - Getting Started%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx" target="_blank" title = "Email SQL Server 2008 Spatial Data - Getting Started"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx&amp;amp;phase=2" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started" target="_blank" title = "Submit SQL Server 2008 Spatial Data - Getting Started to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/18/sql-server-2008-spatial-data-getting-started.aspx&amp;amp;title=SQL+Server+2008+Spatial+Data+-+Getting+Started&amp;amp;;top=1" target="_blank" title = "Add SQL Server 2008 Spatial Data - Getting Started to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9552" width="1" height="1"&gt;</description></item><item><title>Local Temporary Table Persistence</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx</link><pubDate>Thu, 09 Oct 2008 16:32:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9388</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/9388.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=9388</wfw:commentRss><description>&lt;P&gt;Everybody knows local temporary tables have scope only within a connection. Drop the connection and it goes away. The connection is at the server level, not at the database level. People commonly say things like "I'm connected to the database" when they are actually connected to the server. In SSMS, you right-click on a specific database and select the option to open a new query window. Since you initiation the connection from a specific database name in the Object Explorer, it does seem like the database owns the connection. But the database doesn't own the connection in any way.&lt;/P&gt;
&lt;P&gt;When you have a connection to a user database and create a local temporary table, the temporary table is created in tempdb. It's true that queries issued against your user database can access the temporary table, but they aren't related to each other, they are only sharing the same server connection. You can drop your database completely, but it does not affect any temporary objects you created in tempdb.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Creating a different user database doesn't change anything if all of the work is done within the same query window in SSMS. Although you are attempting to create a temporary table from a different user database, the fact remains that tempdb is the same and is being referenced from the same connection. Referring to the code sample below, the fact that it seems like you issued the second create table statement "from" database DEMO2 is irrelevant. The temporary table is issued from the server connection, not from the database you issued the USE statement against.&lt;/P&gt;
&lt;P&gt;A&amp;nbsp;user database named DEMO1 is created&amp;nbsp; and a USE statement sets the query context to the DEMO1 database. Next, a temporary table is created. After that, the user database is dropped. Because your connection to tempdb persists, your temporary table persists. The point is that although your connection's context is the DEMO1 database, the temporary table really doesn't have anything to do with DEMO1. Although it arguably appears to have been created from demo1, it was created on the server in tempdb. The USE DEMO1 statement is irrelevant, it doesn't affect temporary objects in tempdb. The DEMO1 database doesn't in any manner have ownership of temporary objects in tempdb. Only the connection to the server owns the temporary objects. If you want to be able to create that local temporary table a second time without seeing an error message, you'll either have to drop it first or open a completely new query window in SSMS. If you don't, you'll see something like this:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000&gt;Msg 2714, Level 16, State 6, Line 2 &lt;BR&gt;There is already an object named '#demo' in the database.&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks to a reader for pointing out corrections to this post. Here's some code you can play with to see for yourself. &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;use master &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;create database &lt;FONT color=#000000&gt;demo1 &lt;/FONT&gt;on primary &lt;BR&gt;&lt;FONT color=#808080&gt;(&lt;/FONT&gt; &lt;FONT color=#000000&gt;name&lt;/FONT&gt; &lt;FONT color=#808080&gt;=&lt;/FONT&gt; &lt;FONT color=#000000&gt;demo1&lt;/FONT&gt;, filename = &lt;FONT color=#ff0000&gt;'c:\program files\microsoft sql server\mssql10.gdt\mssql\data\demo1.mdf'&lt;/FONT&gt;&amp;nbsp;&lt;FONT color=#808080&gt;)&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000&gt;-- alter filenames for your environment&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&lt;FONT color=#ff00ff&gt;log&lt;/FONT&gt; on &lt;BR&gt;&lt;FONT color=#808080&gt;(&lt;/FONT&gt; &lt;FONT color=#000000&gt;name&lt;/FONT&gt; &lt;FONT color=#808080&gt;=&lt;/FONT&gt; &lt;FONT color=#000000&gt;demo1_log&lt;/FONT&gt;, filename = &lt;FONT color=#ff0000&gt;'c:\program files\microsoft sql server\mssql10.gdt\mssql\data\demo1_log.ldf'&lt;/FONT&gt; &lt;FONT color=#808080&gt;) &lt;BR&gt;&lt;/FONT&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;use &lt;FONT color=#000000&gt;demo1&lt;/FONT&gt; &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;create table &lt;FONT color=#000000&gt;#demo&lt;/FONT&gt; &lt;FONT color=#808080&gt;(&lt;/FONT&gt;&lt;FONT color=#000000&gt;a&lt;/FONT&gt; int&lt;FONT color=#808080&gt;)&lt;/FONT&gt; &lt;FONT color=#008000&gt;-- succeeds&lt;/FONT&gt; &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;use master &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;alter database &lt;FONT color=#000000&gt;demo1 &lt;/FONT&gt;set single_user with rollback immediate &lt;BR&gt;drop database &lt;FONT color=#000000&gt;demo1&lt;/FONT&gt; &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;create database &lt;FONT color=#000000&gt;demo2 &lt;/FONT&gt;on primary &lt;BR&gt;&lt;FONT color=#808080&gt;(&lt;/FONT&gt; &lt;FONT color=#000000&gt;name&lt;/FONT&gt; &lt;FONT color=#808080&gt;=&lt;/FONT&gt; &lt;FONT color=#000000&gt;demo2&lt;/FONT&gt;, filename = &lt;FONT color=#ff0000&gt;'c:\program files\microsoft sql server\mssql10.gdt\mssql\data\demo2.mdf'&lt;/FONT&gt; &lt;FONT color=#808080&gt;) &lt;BR&gt;&lt;/FONT&gt;log on &lt;BR&gt;&lt;FONT color=#808080&gt;(&lt;/FONT&gt; &lt;FONT color=#000000&gt;name&lt;/FONT&gt;&amp;nbsp;&lt;FONT color=#808080&gt;=&lt;/FONT&gt; &lt;FONT color=#000000&gt;demo2_log&lt;/FONT&gt;, filename = &lt;FONT color=#ff0000&gt;'c:\program files\microsoft sql server\mssql10.gdt\mssql\data\demo2_log.ldf'&lt;/FONT&gt; &lt;FONT color=#808080&gt;) &lt;BR&gt;&lt;/FONT&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;use &lt;FONT color=#000000&gt;demo2&lt;/FONT&gt; &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;create table &lt;FONT color=#000000&gt;#demo&lt;/FONT&gt; &lt;FONT color=#808080&gt;(&lt;/FONT&gt;&lt;FONT color=#000000&gt;a&lt;/FONT&gt; int&lt;FONT color=#808080&gt;)&lt;/FONT&gt;&amp;nbsp; &lt;FONT color=#008000&gt;-- fails&lt;/FONT&gt; &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;use master &lt;BR&gt;go &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;alter database &lt;FONT color=#000000&gt;demo2 &lt;/FONT&gt;set single_user with rollback immediate &lt;BR&gt;drop database &lt;FONT color=#000000&gt;demo2&lt;/FONT&gt; &lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Local Temporary Table Persistence&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Local Temporary Table Persistence%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx" target="_blank" title = "Email Local Temporary Table Persistence"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx&amp;amp;title=Local+Temporary+Table+Persistence" target="_blank" title = "Submit Local Temporary Table Persistence to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx&amp;amp;phase=2" target="_blank" title = "Submit Local Temporary Table Persistence to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx&amp;amp;title=Local+Temporary+Table+Persistence" target="_blank" title = "Submit Local Temporary Table Persistence to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx&amp;amp;title=Local+Temporary+Table+Persistence" target="_blank" title = "Submit Local Temporary Table Persistence to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/09/local-temporary-table-persistence.aspx&amp;amp;title=Local+Temporary+Table+Persistence&amp;amp;;top=1" target="_blank" title = "Add Local Temporary Table Persistence to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9388" width="1" height="1"&gt;</description></item><item><title>Running SQL Server 2008 in a Hyper-V Environment</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx</link><pubDate>Mon, 06 Oct 2008 12:50:02 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9273</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/9273.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=9273</wfw:commentRss><description>&lt;p&gt;Download this new Microsoft whitepaper from    &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/d/9/4/d948f981-926e-40fa-a026-5bfcf076d9b9/SQL2008inHyperV2008.docx"&gt;http://download.microsoft.com/download/d/9/4/d948f981-926e-40fa-a026-5bfcf076d9b9/SQL2008inHyperV2008.docx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;SQL Server 2008 does perform very well in a Hyper-V environment when properly configured, which among other things means don't use the default of dynamically expanding virtual hard disk. Hyper-V isn't at all like Virtual Server or Virtual PC. It's best to drop preconceptions drawn from experience with those products.&lt;/p&gt;  &lt;p&gt;For best I/O performance in Hyper-V, use passthrough disks (this is when a physical disk is assigned directly to Hyper-V without using a vhd file). Fixed size virtual hard disks are a close second. Dynamically expanding disks and differencing disks provide convenience at the cost of performance and thus should not be used when I/O performance must be maximized.&lt;/p&gt;  &lt;p&gt;High network traffic imposes a burden on the CPU when running on Hyper-V (this is also true of Virtual Server). If a SQL Server configuration is CPU bound on bare metal, it might not have enough CPU cycles left for optimal networking performance. Also, keep in mind that a maximum of four logical processors can be assigned to a Hyper-V virtual machine, so if your SQL Server configuration needs more than four processors, it is not suitable for Hyper-V.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Running SQL Server 2008 in a Hyper-V Environment&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Running SQL Server 2008 in a Hyper-V Environment%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx" target="_blank" title = "Email Running SQL Server 2008 in a Hyper-V Environment"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx&amp;amp;title=Running+SQL+Server+2008+in+a+Hyper-V+Environment" target="_blank" title = "Submit Running SQL Server 2008 in a Hyper-V Environment to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx&amp;amp;phase=2" target="_blank" title = "Submit Running SQL Server 2008 in a Hyper-V Environment to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx&amp;amp;title=Running+SQL+Server+2008+in+a+Hyper-V+Environment" target="_blank" title = "Submit Running SQL Server 2008 in a Hyper-V Environment to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx&amp;amp;title=Running+SQL+Server+2008+in+a+Hyper-V+Environment" target="_blank" title = "Submit Running SQL Server 2008 in a Hyper-V Environment to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/10/06/running-sql-server-2008-in-a-hyper-v-environment.aspx&amp;amp;title=Running+SQL+Server+2008+in+a+Hyper-V+Environment&amp;amp;;top=1" target="_blank" title = "Add Running SQL Server 2008 in a Hyper-V Environment to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9273" width="1" height="1"&gt;</description></item><item><title>Aggregating Aggregates and UNION vs. UNION ALL</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx</link><pubDate>Tue, 23 Sep 2008 15:39:44 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9054</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/9054.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=9054</wfw:commentRss><description>&lt;p&gt;Sometimes you need to aggregate the results of multiple queries. There are several ways to accomplish this (a CTE is particularly elegant). I decided on the following solution because it provides instruction in aggregates, aliases, and when to use UNION vs. UNION ALL.    &lt;br /&gt;    &lt;br /&gt;For this example, the COUNT aggregate function is used to find the number of rows in each of several tables. To find the total number of rows for all of the tables, you need to SUM the results of all of the COUNTs. In other words, the result sets from all of the queries need to become rows in a single table. To get the desired grand total, use the SUM aggregate on this single table.&lt;/p&gt;  &lt;p&gt;The following two queries return the total number of customers and the total number of employees:    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt; &lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;Sales&lt;font color="#808080"&gt;.&lt;/font&gt;Customer     &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;-----------      &lt;br /&gt;19820&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(1 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;-----------      &lt;br /&gt;290&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(1 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Because the queries are identical in the number of columns and data types returned, they can be combined using the UNION operator. Simplistic and na&amp;#239;ve testing suggests that this may work:    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt; &lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;Sales&lt;font color="#808080"&gt;.&lt;/font&gt;Customer     &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;/font&gt;&lt;font face="Courier New"&gt;    &lt;br /&gt;    &lt;br /&gt;-----------     &lt;br /&gt;290     &lt;br /&gt;19820&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;(2 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;UNION is not the correct operator to use as this test case reveals:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee       &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;-----------      &lt;br /&gt;290&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(1 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;UNION contains an implied DISTINCT operator that causes identical rows to disappear. This can lead to miscounts when SUM is used later. The correct operator to use is UNION ALL:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee      &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt; &lt;font color="#808080"&gt;ALL&lt;/font&gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;-----------      &lt;br /&gt;290       &lt;br /&gt;290&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(2 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now we know that we need to build on the following query:&lt;/p&gt; &lt;font color="#0000ff"&gt;   &lt;br /&gt;&lt;font face="Courier New"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;Sales&lt;font color="#808080"&gt;.&lt;/font&gt;Customer     &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt; &lt;font color="#808080"&gt;ALL&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;/font&gt;   &lt;p&gt;We need to SUM the results of our UNION ALL query, but SUM requires a column name. That means aliases (nrows) must be used.&lt;/p&gt; &lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; nrows &lt;font color="#0000ff"&gt;from &lt;/font&gt;Sales&lt;font color="#808080"&gt;.&lt;/font&gt;Customer     &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt; &lt;font color="#808080"&gt;ALL&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; nrows &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;/font&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;nrows      &lt;br /&gt;-----------       &lt;br /&gt;19820       &lt;br /&gt;290&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(2 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To query from our new result set, we once again must use an alias (counts) for our tabular result set to make the SELECT * FROM work:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; * &lt;font color="#0000ff"&gt;from       &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; nrows &lt;font color="#0000ff"&gt;from &lt;/font&gt;Sales&lt;font color="#808080"&gt;.&lt;/font&gt;Customer       &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt; &lt;font color="#808080"&gt;ALL&lt;/font&gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; nrows &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;font color="#808080"&gt;)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; counts&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;nrows      &lt;br /&gt;-----------       &lt;br /&gt;19820       &lt;br /&gt;290&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(2 row(s) affected)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To finish up, replace the wildcard with the SUM aggregate. Another alias (GrandTotal) is used (but not required) to provide a descriptive column header.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#ff00ff"&gt;SUM&lt;/font&gt;(nrows) &lt;font color="#0000ff"&gt;as&lt;/font&gt; GrandTotal &lt;font color="#0000ff"&gt;from&lt;/font&gt;       &lt;br /&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;/font&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; nrows &lt;font color="#0000ff"&gt;from &lt;/font&gt;Sales&lt;font color="#808080"&gt;.&lt;/font&gt;Customer       &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt; &lt;font color="#808080"&gt;ALL&lt;/font&gt;       &lt;br /&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;/font&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; nrows &lt;font color="#0000ff"&gt;from &lt;/font&gt;HumanResources&lt;font color="#808080"&gt;.&lt;/font&gt;Employee&lt;font color="#808080"&gt;)&lt;/font&gt; &lt;font color="#0000ff"&gt;as&lt;/font&gt; counts&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;GrandTotal      &lt;br /&gt;-----------       &lt;br /&gt;20110&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;(1 row(s) affected)&lt;/font&gt;&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Aggregating Aggregates and UNION vs. UNION ALL&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Aggregating Aggregates and UNION vs. UNION ALL%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx" target="_blank" title = "Email Aggregating Aggregates and UNION vs. UNION ALL"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx&amp;amp;title=Aggregating+Aggregates+and+UNION+vs.+UNION+ALL" target="_blank" title = "Submit Aggregating Aggregates and UNION vs. UNION ALL to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx&amp;amp;phase=2" target="_blank" title = "Submit Aggregating Aggregates and UNION vs. UNION ALL to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx&amp;amp;title=Aggregating+Aggregates+and+UNION+vs.+UNION+ALL" target="_blank" title = "Submit Aggregating Aggregates and UNION vs. UNION ALL to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx&amp;amp;title=Aggregating+Aggregates+and+UNION+vs.+UNION+ALL" target="_blank" title = "Submit Aggregating Aggregates and UNION vs. UNION ALL to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/23/aggregating-aggregates-and-union-vs-union-all.aspx&amp;amp;title=Aggregating+Aggregates+and+UNION+vs.+UNION+ALL&amp;amp;;top=1" target="_blank" title = "Add Aggregating Aggregates and UNION vs. UNION ALL to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9054" width="1" height="1"&gt;</description></item><item><title>Moving Virtual Machines to Hyper-V</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx</link><pubDate>Sun, 21 Sep 2008 13:26:57 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9017</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/9017.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=9017</wfw:commentRss><description>&lt;p&gt;The best tool for converting virtual machines to Hyper-V is System Center Virtual Machine Manager 2008, which is available in October 2008. It has a physical to virtual (P2V) tool that works quite well. Unfortunately, it has to be installed on a domain joined machine, so it's not suitable for ad hoc, spur of the moment P2V conversions done by anyone, any time, anywhere. Sometimes you have just one virtual machine on Virtual PC or Virtual Server you need to migrate to Hyper-V. If you don't have a P2V tool, you have to recreate all of the settings because Hyper-V doesn't use vmc files.&lt;/p&gt;  &lt;p&gt;Matthijs ten Seldam wrote a vmc converter utility to simplify the creation of settings for a Hyper-V virtual machine. Read about it here: &lt;a title="http://blogs.technet.com/matthts/archive/2008/09/12/vmc-to-hyper-v-import-tool-available.aspx" href="http://blogs.technet.com/matthts/archive/2008/09/12/vmc-to-hyper-v-import-tool-available.aspx"&gt;http://blogs.technet.com/matthts/archive/2008/09/12/vmc-to-hyper-v-import-tool-available.aspx&lt;/a&gt;. You still have to deal with HAL issues, for which a complete article would be required to discuss in depth. If your virtual machine's operating system is Vista or 2008 Server, the HAL problem is easy to deal with because those operating systems have a new option in &lt;strong&gt;msconfig&lt;/strong&gt; to force HAL detection. It's accessed by clicking the &lt;strong&gt;Advanced Options&lt;/strong&gt; button on the &lt;strong&gt;Boot&lt;/strong&gt; tab. You use this after booting your virtual machine in Hyper-V for the first time.&lt;/p&gt;  &lt;p&gt;When you manually migrate a VPC or Virtual Server vm to Hyper-V, the basic approach is to do this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copy the vhd and work with the copy.&lt;/li&gt;    &lt;li&gt;Uninstall the Virtual Machine Additions.&lt;/li&gt;    &lt;li&gt;Copy the modified vhd to the Hyper-V machine.&lt;/li&gt;    &lt;li&gt;Use the wizard to create a new virtual machine from the vhd or use the vmc converter.&lt;/li&gt;    &lt;li&gt;Resolve any HAL problems.&lt;/li&gt;    &lt;li&gt;Install Integration Services.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you have access to SCVMM 2008 RTM, you can install it into a Hyper-V virtual machine if that is more convenient for you. You can even have it in its own virtual domain on your laptop or desktop. I find this approach more convenient and agile for ad hoc work than having it part of a production domain.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Moving Virtual Machines to Hyper-V&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Moving Virtual Machines to Hyper-V%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx" target="_blank" title = "Email Moving Virtual Machines to Hyper-V"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx&amp;amp;title=Moving+Virtual+Machines+to+Hyper-V" target="_blank" title = "Submit Moving Virtual Machines to Hyper-V to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx&amp;amp;phase=2" target="_blank" title = "Submit Moving Virtual Machines to Hyper-V to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx&amp;amp;title=Moving+Virtual+Machines+to+Hyper-V" target="_blank" title = "Submit Moving Virtual Machines to Hyper-V to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx&amp;amp;title=Moving+Virtual+Machines+to+Hyper-V" target="_blank" title = "Submit Moving Virtual Machines to Hyper-V to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/09/21/moving-virtual-machines-to-hyper-v.aspx&amp;amp;title=Moving+Virtual+Machines+to+Hyper-V&amp;amp;;top=1" target="_blank" title = "Add Moving Virtual Machines to Hyper-V to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=9017" width="1" height="1"&gt;</description></item><item><title>SQL 2008 ConfigurationFile.ini file - not just for unattended installs</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx</link><pubDate>Fri, 15 Aug 2008 13:30:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:8397</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/8397.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=8397</wfw:commentRss><description>&lt;P&gt;Scripting installations of SQL Server 2008 is much easier than it is with SQL Server 2005 because of the &lt;STRONG&gt;ConfigurationFile.ini&lt;/STRONG&gt;. Even if you don't script your installations, you should review the contents of this file to verify that the installation transpired as intended. Although it is possible to script a SQL Server 2005 installation, you can't capture an interactive installation and replay it. When&amp;nbsp;SQL Server 2008 is installed, a &lt;STRONG&gt;ConfigurationFile.ini&lt;/STRONG&gt; file is created in &lt;STRONG&gt;C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\&lt;EM&gt;yyyymmdd_hhmmss&lt;/EM&gt;&lt;/STRONG&gt;. To use &lt;STRONG&gt;ConfigurationFile.ini&lt;/STRONG&gt; with the installation wizard, select &lt;STRONG&gt;Advanced&lt;/STRONG&gt; and &lt;STRONG&gt;Install based on configuration file&lt;/STRONG&gt;. If you need to make changes to the file before performing another installation, it is a best practice to make a copy and work with the copy. From an auditing and compliance perspective, each installation's &lt;STRONG&gt;ConfigurationFile.ini&lt;/STRONG&gt; file should be preserved in its original state as verification of the initial state of the SQL Server installation.&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=SQL 2008 ConfigurationFile.ini file - not just for unattended installs&amp;amp;body=Seen on SQLblog.com: %0A%0A%09SQL 2008 ConfigurationFile.ini file - not just for unattended installs%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx" target="_blank" title = "Email SQL 2008 ConfigurationFile.ini file - not just for unattended installs"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx&amp;amp;title=SQL+2008+ConfigurationFile.ini+file+-+not+just+for+unattended+installs" target="_blank" title = "Submit SQL 2008 ConfigurationFile.ini file - not just for unattended installs to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx&amp;amp;phase=2" target="_blank" title = "Submit SQL 2008 ConfigurationFile.ini file - not just for unattended installs to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx&amp;amp;title=SQL+2008+ConfigurationFile.ini+file+-+not+just+for+unattended+installs" target="_blank" title = "Submit SQL 2008 ConfigurationFile.ini file - not just for unattended installs to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx&amp;amp;title=SQL+2008+ConfigurationFile.ini+file+-+not+just+for+unattended+installs" target="_blank" title = "Submit SQL 2008 ConfigurationFile.ini file - not just for unattended installs to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/08/15/sql-2008-configurationfile-ini-file-not-just-for-unattended-installs.aspx&amp;amp;title=SQL+2008+ConfigurationFile.ini+file+-+not+just+for+unattended+installs&amp;amp;;top=1" target="_blank" title = "Add SQL 2008 ConfigurationFile.ini file - not just for unattended installs to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=8397" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/john_paul_cook/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblog.com/blogs/john_paul_cook/archive/tags/installation/default.aspx">installation</category></item><item><title>Hyper-V undocumented and unsupported features</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx</link><pubDate>Tue, 08 Jul 2008 02:46:46 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7706</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7706.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7706</wfw:commentRss><description>&lt;p&gt;The official list of supported operating systems, service packs, and numbers of virtual processors can be found here: &lt;a href="http://support.microsoft.com/kb/954958/en-us"&gt;http://support.microsoft.com/kb/954958/en-us&lt;/a&gt;. If you are willing to venture into unsupported territory, you might find some surprises. I have both 32 and 64 bit Windows 2003 R2 Service Pack 2 virtual machines running with four virtual processors. The same is true of Vista Service Pack 1.&lt;/p&gt;  &lt;p&gt;Also of interest is what happens with PAE. Hyper-V requires that hardware Data Execution Prevention (DEP) be enabled in the BIOS. Intel calls this hardware feature the execute disable (XD) bit. AMD calls it no-execute page protection (NX). When DEP is enabled, Windows automatically enables Physical Address Extension (PAE) without having /PAE in the boot.ini. Because of this, your 32 bit guests will work with large ram as the screen captures show. For more information, see &lt;a title="http://support.microsoft.com/kb/875352" href="http://support.microsoft.com/kb/875352"&gt;http://support.microsoft.com/kb/875352&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/HyperVundocumentedandunsupportedfeatures_13211/PAE_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="478" alt="PAE" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/HyperVundocumentedandunsupportedfeatures_13211/PAE_thumb.jpg" width="814" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Hyper-V undocumented and unsupported features&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Hyper-V undocumented and unsupported features%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx" target="_blank" title = "Email Hyper-V undocumented and unsupported features"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx&amp;amp;title=Hyper-V+undocumented+and+unsupported+features" target="_blank" title = "Submit Hyper-V undocumented and unsupported features to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx&amp;amp;phase=2" target="_blank" title = "Submit Hyper-V undocumented and unsupported features to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx&amp;amp;title=Hyper-V+undocumented+and+unsupported+features" target="_blank" title = "Submit Hyper-V undocumented and unsupported features to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx&amp;amp;title=Hyper-V+undocumented+and+unsupported+features" target="_blank" title = "Submit Hyper-V undocumented and unsupported features to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/07/07/hyper-v-undocumented-and-unsupported-features.aspx&amp;amp;title=Hyper-V+undocumented+and+unsupported+features&amp;amp;;top=1" target="_blank" title = "Add Hyper-V undocumented and unsupported features to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7706" width="1" height="1"&gt;</description></item><item><title>Hyper-V is RTM and How to Migrate Existing VHD Files</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx</link><pubDate>Thu, 26 Jun 2008 18:24:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7526</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7526.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7526</wfw:commentRss><description>&lt;P&gt;Now that Hyper-V is RTM, why should you care? Because it performs very well! If you do demos using virtual machines on a laptop, do yourself a favor and upgrade to Hyper-V. If you have a production data center with lots of virtual machines, you might want to wait until System Center Virtual Machine Manager (SCVMM) is available. Management of virtual assets is critical in a production environment. SCVMM 2007 does not manage Hyper-V machines.&lt;/P&gt;
&lt;P&gt;If you are currently running virtual machines using Virtual PC or Virtual Server, you'll want to preserve your existing virtual hard drive (vhd) assets. You can do this manually be following these steps:&lt;/P&gt;
&lt;P&gt;1. Make a copy of your vhd.&lt;BR&gt;2.&amp;nbsp;Run the vhd in Virtual PC or Virtual Server.&lt;BR&gt;3.&amp;nbsp;If Hyper-V requires a higher service pack, apply&amp;nbsp;it now.&lt;BR&gt;4. Remove the&amp;nbsp;Virtual Machine Additions.&lt;BR&gt;5. Save and permanently commit the changes.&lt;BR&gt;6.&amp;nbsp;Make the updated vhd available to Hyper-V (e.g., copy the vhd to the Hyper-V physical machine, put it on&amp;nbsp;your SAN, etc.)&lt;BR&gt;7. Create a new Hyper-V virtual machine&amp;nbsp;using the updated vhd.&lt;BR&gt;8. Install the Integration&amp;nbsp;Services into the virtual machine.&lt;/P&gt;
&lt;P&gt;Must you apply a service pack while you are still in the Virtual PC or Virtual Server environment? It depends. There have been times I've seen the mouse unavailable in Hyper-V until Integration Services was installed. But Integration Services can't be installed until the machine is at the correct service pack level. Since Integration Services makes the mouse available but requires the service pack, you can be stuck installing a service pack without a mouse. It's a Catch-22. Avoid the trouble, install the service pack before moving to Hyper-V.&lt;/P&gt;
&lt;P&gt;With RTM, more operating systems and service packs are supported. XP service pack 2 is now supported. If you want to run XP using two virtual processors instead of one, you'll still need to upgrade to service pack 3. Windows 2000 with service pack 4 is now supported, which is great for those legacy machines running older versions of SQL Server.&lt;/P&gt;
&lt;P&gt;I'm running the RTM version of Hyper-V on my dual core laptop. Performance is excellent. My laptop is set to single boot into Windows 2008 Enterprise x64. It has the desktop experience, Aero, and audio enabled. The only feature it doesn't have that&amp;nbsp;I miss is Windows Media Center.&lt;/P&gt;
&lt;P&gt;See John Howard's blog for version number information. &lt;A href="http://blogs.technet.com/jhoward/archive/2008/06/26/hyper-v-rtm-announcement-available-today-from-the-microsoft-download-centre.aspx"&gt;http://blogs.technet.com/jhoward/archive/2008/06/26/hyper-v-rtm-announcement-available-today-from-the-microsoft-download-centre.aspx&lt;/A&gt;&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Hyper-V is RTM and How to Migrate Existing VHD Files&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Hyper-V is RTM and How to Migrate Existing VHD Files%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx" target="_blank" title = "Email Hyper-V is RTM and How to Migrate Existing VHD Files"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx&amp;amp;title=Hyper-V+is+RTM+and+How+to+Migrate+Existing+VHD+Files" target="_blank" title = "Submit Hyper-V is RTM and How to Migrate Existing VHD Files to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx&amp;amp;phase=2" target="_blank" title = "Submit Hyper-V is RTM and How to Migrate Existing VHD Files to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx&amp;amp;title=Hyper-V+is+RTM+and+How+to+Migrate+Existing+VHD+Files" target="_blank" title = "Submit Hyper-V is RTM and How to Migrate Existing VHD Files to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx&amp;amp;title=Hyper-V+is+RTM+and+How+to+Migrate+Existing+VHD+Files" target="_blank" title = "Submit Hyper-V is RTM and How to Migrate Existing VHD Files to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/26/hyper-v-is-rtm-and-how-to-migrate-existing-vhd-files.aspx&amp;amp;title=Hyper-V+is+RTM+and+How+to+Migrate+Existing+VHD+Files&amp;amp;;top=1" target="_blank" title = "Add Hyper-V is RTM and How to Migrate Existing VHD Files to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7526" width="1" height="1"&gt;</description></item><item><title>DBA Toolkit from the Cloud</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx</link><pubDate>Thu, 12 Jun 2008 03:59:09 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7259</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>4</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7259.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7259</wfw:commentRss><description>&lt;p&gt;I've previously blogged about a DBA toolkit on a USB stick. Now you can get the Sysinternals tools from the cloud. Just browse to &lt;a title="http://live.sysinternals.com/" href="http://live.sysinternals.com/"&gt;http://live.sysinternals.com/&lt;/a&gt; and click on the tool you need. It doesn't install, it just runs. Below is a screen capture of Process Monitor running from the the Sysinternals web page where Procmon.exe was clicked.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/DBAToolkitfromtheCloud_1433C/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="302" alt="image" src="http://sqlblog.com/blogs/john_paul_cook/WindowsLiveWriter/DBAToolkitfromtheCloud_1433C/image_thumb.png" width="501" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Alternatively, you can run tools from a command prompt using syntax following this pattern:&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#808080"&gt;C:\Windows\system32&amp;gt;&lt;/font&gt;&lt;strong&gt;\\live.sysinternals.com\tools\procmon&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;If you are running Vista with UAC enabled, you should run your command prompt as administrator because you'll get your results much faster. Running from a non-privileged command prompt is noticeably slower.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=DBA Toolkit from the Cloud&amp;amp;body=Seen on SQLblog.com: %0A%0A%09DBA Toolkit from the Cloud%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx" target="_blank" title = "Email DBA Toolkit from the Cloud"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx&amp;amp;title=DBA+Toolkit+from+the+Cloud" target="_blank" title = "Submit DBA Toolkit from the Cloud to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx&amp;amp;phase=2" target="_blank" title = "Submit DBA Toolkit from the Cloud to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx&amp;amp;title=DBA+Toolkit+from+the+Cloud" target="_blank" title = "Submit DBA Toolkit from the Cloud to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx&amp;amp;title=DBA+Toolkit+from+the+Cloud" target="_blank" title = "Submit DBA Toolkit from the Cloud to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/11/dba-toolkit-from-the-cloud.aspx&amp;amp;title=DBA+Toolkit+from+the+Cloud&amp;amp;;top=1" target="_blank" title = "Add DBA Toolkit from the Cloud to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7259" width="1" height="1"&gt;</description></item><item><title>Upgrading Your Virtual Machines to Hyper-V</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx</link><pubDate>Sun, 08 Jun 2008 09:42:01 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7190</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7190.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7190</wfw:commentRss><description>&lt;p&gt;With SQL Server 2008 RC0 available for download now, people are asking about Hyper-V versus Virtual PC and Virtual Server. For best performance, I recommend that you build a Hyper-V virtual machine. This raises a question about convenience. What if you have existing Virtual PC or Virtual Server virtual machines and want to migrate them to Hyper-V? It's easy if you understand what is required.&lt;/p&gt;  &lt;p&gt;You must remove the Virtual Machine Additions before you use your Virtual PC or Virtual Server vhd as the basis of a Hyper-V virtual machine. You also must have the virtual machine at the correct service pack level to take advantage of the performance optimizations Hyper-V Integration Services provide. (People have already posted about confusing SSIS and Hyper-V when only the words &amp;quot;Integration Services&amp;quot; are used.)&lt;/p&gt;  &lt;p&gt;Currently in Hyper-V RC1, these are the only Windows operating systems and patch levels that can take advantage of Integration Services (subject to change at RTM):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;XP Service Pack 3&lt;/li&gt;    &lt;li&gt;2003 Service Pack 2&lt;/li&gt;    &lt;li&gt;Vista Service Pack 1&lt;/li&gt;    &lt;li&gt;Windows 2008&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To avoid a Catch-22, you should install any required service pack in Virtual PC or Virtual Server before uninstalling the Virtual Machine Additions. If you uninstall the Additions before installing the service pack, installation of the service pack will take longer. If you install the service pack after switching to Hyper-V, you won't have mouse control until you've installed Integration Services, which requires that the service pack already be applied.&lt;/p&gt;  &lt;p&gt;Keep in mind that Hyper-V RC0 Integration Services worked only with Windows 2003 and 2008. RC1 added XP and Vista. RTM might support more operating systems and service pack levels.&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Upgrading Your Virtual Machines to Hyper-V&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Upgrading Your Virtual Machines to Hyper-V%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx" target="_blank" title = "Email Upgrading Your Virtual Machines to Hyper-V"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx&amp;amp;title=Upgrading+Your+Virtual+Machines+to+Hyper-V" target="_blank" title = "Submit Upgrading Your Virtual Machines to Hyper-V to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx&amp;amp;phase=2" target="_blank" title = "Submit Upgrading Your Virtual Machines to Hyper-V to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx&amp;amp;title=Upgrading+Your+Virtual+Machines+to+Hyper-V" target="_blank" title = "Submit Upgrading Your Virtual Machines to Hyper-V to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx&amp;amp;title=Upgrading+Your+Virtual+Machines+to+Hyper-V" target="_blank" title = "Submit Upgrading Your Virtual Machines to Hyper-V to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/08/upgrading-your-virtual-machines-to-hyper-v.aspx&amp;amp;title=Upgrading+Your+Virtual+Machines+to+Hyper-V&amp;amp;;top=1" target="_blank" title = "Add Upgrading Your Virtual Machines to Hyper-V to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7190" width="1" height="1"&gt;</description></item><item><title>Hyper-V at TechEd, Questions and Answers</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx</link><pubDate>Wed, 04 Jun 2008 13:38:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7133</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7133.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7133</wfw:commentRss><description>&lt;P&gt;On the first day of TechEd for developers, I answered quite a few questions about Hyper-V. Today from 11:00 a.m. - 12:30 p.m. (Wednesday June 4, 2008) and tomorrow from 1:30 - 2:30 p.m. I'm presenting on incorporating Hyper-V into the application lifecycle management process. Look for me at the Technical Learning Center's Red Section. I'll talk about agile testing using Hyper-V and using virtualization to shorten the systems development lifecycle.&lt;/P&gt;
&lt;P&gt;Yesterday a few people asked about virtualizing SQL Server. It all depends on the workload. Many small and medium businesses are running SQL Server production systems on Virtual Server today. Hyper-V provides greatly improved performance over Virtual Server. However, no matter who the vendor is or what the platform is, virtualization does introduce some overhead. Because of that, it's not suitable for building an OLAP cube or high volume OLTP.&lt;/P&gt;
&lt;P&gt;Another questions concerned the migration of physical machines into a virtual environment. This is known as P2V, short for physical to virtual. Microsoft's System Center Virtual Machine Manager (SCVMM) includes a P2V tool for migrating an entire physical machine into Hyper-V. For those who don't purchase SCVMM, there are third party P2V products. Acronis True Image with Universal Restore is one of them.&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Hyper-V at TechEd, Questions and Answers&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Hyper-V at TechEd, Questions and Answers%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx" target="_blank" title = "Email Hyper-V at TechEd, Questions and Answers"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx&amp;amp;title=Hyper-V+at+TechEd%2c+Questions+and+Answers" target="_blank" title = "Submit Hyper-V at TechEd, Questions and Answers to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx&amp;amp;phase=2" target="_blank" title = "Submit Hyper-V at TechEd, Questions and Answers to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx&amp;amp;title=Hyper-V+at+TechEd%2c+Questions+and+Answers" target="_blank" title = "Submit Hyper-V at TechEd, Questions and Answers to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx&amp;amp;title=Hyper-V+at+TechEd%2c+Questions+and+Answers" target="_blank" title = "Submit Hyper-V at TechEd, Questions and Answers to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/04/hyper-v-at-teched-questions-and-answers.aspx&amp;amp;title=Hyper-V+at+TechEd%2c+Questions+and+Answers&amp;amp;;top=1" target="_blank" title = "Add Hyper-V at TechEd, Questions and Answers to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7133" width="1" height="1"&gt;</description></item><item><title>Using Hyper-V? Be careful of versions and patches.</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx</link><pubDate>Tue, 03 Jun 2008 15:03:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7118</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7118.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7118</wfw:commentRss><description>&lt;P&gt;It's early in the morning here at the TechEd conference for developers in Orlando, Florida. I've already helped two people with Hyper-V problems caused by incompatible version numbers. Since blog posts live on long past the date of publication, I'm going to speak about the root cause of the problem and not get into the specific KB articles and patches.&lt;/P&gt;
&lt;P&gt;Here is what you need to know. Windows 2008 Server comes with the Hyper-V beta bits, which are quite outdated now. If you enable the Hyper-V role from original Windows 2008 Server media, you'll need to update Hyper-V from beta to what is current. Windows Update will provide the necessary update or you can find the current patch and manually apply the update. Once you update pre-RTM Hyper-V, any Hyper-V virtual machines need to be updated to&amp;nbsp;the Integration Services components in your updated Hyper-V.&lt;/P&gt;
&lt;P&gt;As of today, Hyper-V is at RC1. It is incompatible with the current beta of SCVMM 2008. The SCVMM 2008 beta version available now is compatible with the RC0 version of Hyper-V.&lt;/P&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Using Hyper-V? Be careful of versions and patches.&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Using Hyper-V? Be careful of versions and patches.%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx" target="_blank" title = "Email Using Hyper-V? Be careful of versions and patches."&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx&amp;amp;title=Using+Hyper-V%3f+Be+careful+of+versions+and+patches." target="_blank" title = "Submit Using Hyper-V? Be careful of versions and patches. to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx&amp;amp;phase=2" target="_blank" title = "Submit Using Hyper-V? Be careful of versions and patches. to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx&amp;amp;title=Using+Hyper-V%3f+Be+careful+of+versions+and+patches." target="_blank" title = "Submit Using Hyper-V? Be careful of versions and patches. to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx&amp;amp;title=Using+Hyper-V%3f+Be+careful+of+versions+and+patches." target="_blank" title = "Submit Using Hyper-V? Be careful of versions and patches. to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/06/03/using-hyper-v-be-careful-of-versions-and-patches.aspx&amp;amp;title=Using+Hyper-V%3f+Be+careful+of+versions+and+patches.&amp;amp;;top=1" target="_blank" title = "Add Using Hyper-V? Be careful of versions and patches. to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7118" width="1" height="1"&gt;</description></item><item><title>How to File Better Bug Reports</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx</link><pubDate>Sat, 31 May 2008 19:48:04 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7093</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/7093.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=7093</wfw:commentRss><description>&lt;p&gt;It's frustrating when you encounter a bug and even more frustrating when customer support won't help you. Windows Media Encoder is a great way to document bugs that are particularly difficult to describe.&lt;/p&gt;  &lt;p&gt;In case you don't know, the place to file bug reports on Microsoft products is &lt;a title="http://connect.microsoft.com/" href="http://connect.microsoft.com/"&gt;http://connect.microsoft.com/&lt;/a&gt;. It should be obvious that a clear statement of the problem and a complete and detailed list of the steps you undertook are essential to filing a good bug report. If your problem isn't understood or can't be reproduced, resolution is unlikely. Sometimes words just fail us. There really isn't a way to effectively describe some bugs using written language. When words fail, make a movie - lights, camera, action!&lt;/p&gt;  &lt;p&gt;It's really easy to make a video screen capture demonstrating a bug and showing every single step you followed. Go to &lt;a title="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx" href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx"&gt;http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx&lt;/a&gt; and download Windows Media Encoder. Notice there is a 64-bit version in case you have a 64-bit OS. As the saying goes, a picture is worth a thousand bytes. The Connect site has a feature that allows you to upload files and attach them to your bug reports. Use this to upload your video file to Microsoft.&lt;/p&gt;  &lt;p&gt;Before you make your video, plan ahead. Think of how you can enhance it. I do not record my voice to emphasize key steps and outcomes. Instead, I use Notepad and mouse movements to highlight key steps. For example, if clicking a certain button triggers the bug, I move the mouse cursor back and forth above the button a few times before clicking the button. Notepad is handy when you need to demonstrate a problem with a password, for example. Quicken has a bug with using special characters in a password. In one dialog box, it is possible to have a password containing special characters. In another, it is not possible. This makes it impossible to get one feature to work. To make it clear what the problem was, I put various passwords into Notepad so that all of the characters in the passwords could be seen. I used copy/paste to transfer the passwords from Notepad into the application's dialog boxes. If I had just typed the passwords into the dialog boxes, it wouldn't have been obvious which special characters were being entered because of password masking.&lt;/p&gt;  &lt;p&gt;Unfortunately, no matter how good your video is, it won't help when customer service is unresponsive. I created a video and sent it to Intuit to demonstrate the password bug. They haven't helped resolve the bug or even acknowledged that the bug exists. On this and another unresolved Quicken bug, Intuit has sent multiple &amp;quot;Quicken Customer Care Survey&amp;quot; emails asking me questions about my experiences with their customer support staff. I dutifully respond that my problems are unresolved and they don't respond. What is really interesting about the emails they send is that the emails actually end with the following &lt;em&gt;text&lt;/em&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;6) Please provide any additional comments about your customer support experience.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;[Submit]&amp;#160; [Cancel]&amp;#160; [Clear]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Understand that it is text. No buttons (not that they would work without InfoPath or some other enabling technology), just text that says [Submit].&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=How to File Better Bug Reports&amp;amp;body=Seen on SQLblog.com: %0A%0A%09How to File Better Bug Reports%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx" target="_blank" title = "Email How to File Better Bug Reports"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx&amp;amp;title=How+to+File+Better+Bug+Reports" target="_blank" title = "Submit How to File Better Bug Reports to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx&amp;amp;phase=2" target="_blank" title = "Submit How to File Better Bug Reports to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx&amp;amp;title=How+to+File+Better+Bug+Reports" target="_blank" title = "Submit How to File Better Bug Reports to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx&amp;amp;title=How+to+File+Better+Bug+Reports" target="_blank" title = "Submit How to File Better Bug Reports to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/31/how-to-file-better-bug-reports.aspx&amp;amp;title=How+to+File+Better+Bug+Reports&amp;amp;;top=1" target="_blank" title = "Add How to File Better Bug Reports to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7093" width="1" height="1"&gt;</description></item><item><title>Overclocking made simple</title><link>http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx</link><pubDate>Mon, 26 May 2008 20:29:34 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6985</guid><dc:creator>John Paul Cook</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/john_paul_cook/comments/6985.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/john_paul_cook/commentrss.aspx?PostID=6985</wfw:commentRss><description>&lt;p&gt;Overclocking is a line most people won't cross. Many perceive the risk or inconvenience as too high, but the performance gains can be significant. It's not necessary to resort to water cooling or other extreme measures. The Q6600 quad core cpu from Intel can be overclocked if you don't mind removing it from its socket. Since my machines were built by me, I didn't mind doing this. By covering one of the pins on the Q6600 with electrical tape before reinserting it, the front side bus (FSB) goes from 1066 MHz to 1333 MHz. See &lt;a title="http://forums.nvidia.com/lofiversion/index.php?t58361.html" href="http://forums.nvidia.com/lofiversion/index.php?t58361.html"&gt;http://forums.nvidia.com/lofiversion/index.php?t58361.html&lt;/a&gt; for more details. Why not overclock by changing settings in the BIOS instead? Not all motherboards have BIOS options for overclocking. Under heavy load, my Q6600 now hits 3 GHz instead of its official maximum of 2.4 GHz. I haven't observed higher processor temperatures.&lt;/p&gt;  &lt;p&gt;It's great being able to get my work done faster. If only someone would figure out some pin mods for laptops that have removable processors!&lt;/p&gt;
&lt;BR&gt;&lt;div class = "shareblock"&gt;&lt;span class = "shareblockTitle"&gt;Share this post:&lt;/span&gt;&lt;span class = "shareblockLink"&gt; &lt;a href = "mailto:?subject=Overclocking made simple&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Overclocking made simple%0A%0Ahttp://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx" target="_blank" title = "Email Overclocking made simple"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx&amp;amp;title=Overclocking+made+simple" target="_blank" title = "Submit Overclocking made simple to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx&amp;amp;phase=2" target="_blank" title = "Submit Overclocking made simple to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx&amp;amp;title=Overclocking+made+simple" target="_blank" title = "Submit Overclocking made simple to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx&amp;amp;title=Overclocking+made+simple" target="_blank" title = "Submit Overclocking made simple to DotNetKicks"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://sqlblog.com/blogs/john_paul_cook/archive/2008/05/26/overclocking-made-simple.aspx&amp;amp;title=Overclocking+made+simple&amp;amp;;top=1" target="_blank" title = "Add Overclocking made simple to Live Bookmarks"&gt;live it!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://info.sqlblog.com/a.aspx?ZoneID=0&amp;BannerID=12&amp;AdvertiserID=1&amp;CampaignID=12&amp;Task=Get&amp;Mode=TEXT&amp;SiteID=1&amp;RandomNumber=463323" width="1" height="1" border="0"&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=6985" width="1" height="1"&gt;</description></item></channel></rss>