<?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>Kalen Delaney</title><link>http://sqlblog.com/blogs/kalen_delaney/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Did You Know? My Son is Entertaining Bill Gates</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx</link><pubDate>Fri, 11 Jul 2008 01:19:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7781</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7781.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7781</wfw:commentRss><description>&lt;P&gt;I can't help it; I'm a mother. I am so excited about what my son is doing that I just have to share it. My #2 son&amp;nbsp; is a budding actor and vocalist, and to earn money this summer he is working as a clown for a large organization that provides clowns, rides, games, balloon artists and magicians to local events. I found out several months ago that he was going to be working at the Microsoft Picnic this summer, and I started wondering how I might go about getting in to see him in action. But today, as he was walking out the door in full clown makeup and regalia, I found out he was working at a private picnic for the Gates Foundation! At this very moment, he could be making balloon butterflies, or unicorns, or puppies, or bears, or swords, for Bill and Melinda's kids! So far, he hasn't allowed us to take a picture of him in his makeup, but maybe he'll relax about it and I can get one posted.&lt;/P&gt;
&lt;P&gt;And what is his poor mother doing while he is out entertaining the hoi polloi? I'm working on my next book. I spent much of yesterday researching the internal storage format of the new date and time data types, and today I started writing about them. It's actually pretty exciting and I'll blog a bit about it in the next day or two. Even though I'm not at the party, I still love what I do.&lt;/P&gt;
&lt;P&gt;Have fun!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? My Son is Entertaining Bill Gates&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? My Son is Entertaining Bill Gates%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx" target="_blank" title = "Email Did You Know? My Son is Entertaining Bill Gates"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx&amp;amp;title=Did+You+Know%3f+My+Son+is+Entertaining+Bill+Gates" target="_blank" title = "Submit Did You Know? My Son is Entertaining Bill Gates to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? My Son is Entertaining Bill Gates to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx&amp;amp;title=Did+You+Know%3f+My+Son+is+Entertaining+Bill+Gates" target="_blank" title = "Submit Did You Know? My Son is Entertaining Bill Gates to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx&amp;amp;title=Did+You+Know%3f+My+Son+is+Entertaining+Bill+Gates" target="_blank" title = "Submit Did You Know? My Son is Entertaining Bill Gates 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/kalen_delaney/archive/2008/07/10/my-son-is-entertaining-bill-gates.aspx&amp;amp;title=Did+You+Know%3f+My+Son+is+Entertaining+Bill+Gates&amp;amp;;top=1" target="_blank" title = "Add Did You Know? My Son is Entertaining Bill Gates 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=7781" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/personal/default.aspx">personal</category></item><item><title>Did You Know the History of SQL Server?</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx</link><pubDate>Tue, 08 Jul 2008 16:24:19 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7728</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>6</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7728.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7728</wfw:commentRss><description>&lt;p&gt;I was just rereading &lt;a href="http://blogs.msdn.com/euanga/archive/2006/01/19/514479.aspx" target="_blank"&gt;a blog post by Euan Garden&lt;/a&gt; about SQL Server's history and he refers to the fact that you can read a chapter about the history in the &lt;em&gt;Inside SQL Server&lt;/em&gt; books. In the rewrite of the book for SQL Server 2005, when we split the book into four parts, we had to remove the history chapter, so I took the chapter from the SQL Server 2000 book and made it available online. When reading Euan's post, I realized that most people, including Euan himself, probably didn't know it was available so I decided to make that information a little more public.&lt;/p&gt; &lt;p&gt;You can find the chapter here.&lt;/p&gt; &lt;p&gt;&lt;a title="http://insidesqlserver.com/companion/History%20of%20SQL%20Server.pdf" href="http://insidesqlserver.com/companion/History%20of%20SQL%20Server.pdf"&gt;http://insidesqlserver.com/companion/History%20of%20SQL%20Server.pdf&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Have fun!&lt;/p&gt; &lt;p&gt;&lt;font color="#ff00ff" size="4"&gt;~Kalen&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=Did You Know the History of SQL Server?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know the History of SQL Server?%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx" target="_blank" title = "Email Did You Know the History of SQL Server?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx&amp;amp;title=Did+You+Know+the+History+of+SQL+Server%3f" target="_blank" title = "Submit Did You Know the History of SQL Server? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know the History of SQL Server? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx&amp;amp;title=Did+You+Know+the+History+of+SQL+Server%3f" target="_blank" title = "Submit Did You Know the History of SQL Server? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx&amp;amp;title=Did+You+Know+the+History+of+SQL+Server%3f" target="_blank" title = "Submit Did You Know the History of SQL Server? 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/kalen_delaney/archive/2008/07/08/did-you-know-the-history-of-sql-server.aspx&amp;amp;title=Did+You+Know+the+History+of+SQL+Server%3f&amp;amp;;top=1" target="_blank" title = "Add Did You Know the History of SQL Server? 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=7728" width="1" height="1"&gt;</description></item><item><title>Did You Know? My First Meme</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/01/my-first-meme.aspx</link><pubDate>Wed, 02 Jul 2008 01:54:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7610</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7610.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7610</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;I was just &lt;A href="http://sqlblog.com/blogs/andy_leonard/archive/2008/06/30/software-development-meme.aspx" target=_blank&gt;tagged by Andy Leonard,&lt;/A&gt; and truth to tell, I don't read Andy's blog all that often because he talks about really developer oriented stuff, which is a little outside my focus area now.&amp;nbsp; But I was intrigued by the concept of a techblog meme, which I'd never seen before. I'd only seen memes discussed on my &lt;A href="http://www.travelerslunchbox.com/" target=_blank&gt;daughter's food blog&lt;/A&gt;, but at least I knew what they were because of that. You can read hers &lt;A href="http://www.travelerslunchbox.com/journal/2005/6/20/meme-the-cook-next-door.html" target=_blank&gt;here&lt;/A&gt;, &lt;A href="http://www.travelerslunchbox.com/journal/2005/8/23/meme-again-childhood-food-memories.html" target=_blank&gt;here&lt;/A&gt; and &lt;A href="http://www.travelerslunchbox.com/journal/2007/3/16/meme-x-2.html" target=_blank&gt;here&lt;/A&gt;. And then I realized I shouldn't have been quite so curious, because he tagged me! I saw today that Denis already responded, and tagged a whole bunch of people. I thought there was supposed to some sort of limit on the number of people you could tag; otherwise all the good tagees would get tagged too quickly. :-)&lt;/P&gt;
&lt;P&gt;Although the meme is about software development, which I don't really do, I figured I could answer most of the questions, but for some of the answers I substitute 'working with computers' for 'programming'. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;How old were you when you first started programming?&lt;/STRONG&gt; 
&lt;P&gt;I was 16 years old and a Junior in High School.&amp;nbsp; 
&lt;P&gt;&lt;STRONG&gt;How did you get started in programming?&lt;/STRONG&gt; 
&lt;P&gt;I took a night class at a local Community College. 
&lt;P&gt;&lt;STRONG&gt;What was your first language?&lt;/STRONG&gt; 
&lt;P&gt;Fortran... and it was mostly boring programs, but the 'idea' of programming fascinated me! 
&lt;P&gt;&lt;STRONG&gt;What was the first real program you wrote?&lt;/STRONG&gt; 
&lt;P&gt;Hmm, what counts as 'real'? Commercially viable? Or just one that other people wanted to use? My first was a game I wrote for the Atari 800 that helped preschoolers to memorize their phone number. (My daughter was a pre-schooler at the time.)&amp;nbsp; The teacher wanted a copy, then all the other teachers, then friends of the teachers, etc, etc.... 
&lt;P&gt;&lt;STRONG&gt;What languages have you used since you started programming?&lt;/STRONG&gt; 
&lt;P&gt;Fortran, Basic, PDP Assembly Language, Logo, C, Pascal, Lisp, Sequel, SQL, SQL, SQL, SQL.....&lt;BR&gt;(...and probably a few I've forgotten) 
&lt;P&gt;&lt;STRONG&gt;What was your first professional programming gig?&lt;/STRONG&gt; 
&lt;P&gt;I've actually never had a 'programming gig'. My first paid job with computers was being a teaching assistant for Computer Science classes at UC Berkeley. 
&lt;P&gt;&lt;STRONG&gt;If you knew then what you know now, would you have started programming?&lt;/STRONG&gt; 
&lt;P&gt;Too hard of a question. I absolutely love what I do, but I can see lots of other paths my life could have taken, if back when I was 16 I knew everything that I know today. :-) 
&lt;P&gt;&lt;STRONG&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;/STRONG&gt; 
&lt;P&gt;Have fun! 
&lt;P&gt;&lt;STRONG&gt;Who are you calling out?&lt;/STRONG&gt; 
&lt;P&gt;Lara Rubbelke&lt;BR&gt;Tibor Karaszi&lt;BR&gt;Kimberley Tripp&lt;BR&gt;Linchi Shea&lt;/P&gt;&lt;/BLOCKQUOTE&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=Did You Know? My First Meme&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? My First Meme%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/07/01/my-first-meme.aspx" target="_blank" title = "Email Did You Know? My First Meme"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/01/my-first-meme.aspx&amp;amp;title=Did+You+Know%3f+My+First+Meme" target="_blank" title = "Submit Did You Know? My First Meme to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/01/my-first-meme.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? My First Meme to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/01/my-first-meme.aspx&amp;amp;title=Did+You+Know%3f+My+First+Meme" target="_blank" title = "Submit Did You Know? My First Meme to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/07/01/my-first-meme.aspx&amp;amp;title=Did+You+Know%3f+My+First+Meme" target="_blank" title = "Submit Did You Know? My First Meme 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/kalen_delaney/archive/2008/07/01/my-first-meme.aspx&amp;amp;title=Did+You+Know%3f+My+First+Meme&amp;amp;;top=1" target="_blank" title = "Add Did You Know? My First Meme 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=7610" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/food/default.aspx">food</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/travelers+lunchbox/default.aspx">travelers lunchbox</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/meme/default.aspx">meme</category></item><item><title>Did You Know? What's the Capital of Idaho?</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx</link><pubDate>Tue, 01 Jul 2008 02:37:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7584</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7584.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7584</wfw:commentRss><description>&lt;P&gt;Can you say it out loud? You might have known the capital was Boise, but if you pronounced it Boy-zee, you were wrong. I was there last Wednesday for the kickoff meeting of the Boise SQL Server User Group, and was told that if I didn't pronounce the name correctly, everyone would know immediately that I wasn't from around there.&amp;nbsp; The correct pronunciation is Boy-sea, or as I was spelling it when writing to my friend there: Boycee.&lt;/P&gt;
&lt;P&gt;We had over 30 people show up for my presentation, in which I compared the two different concurrency models that SQL Server 2005 has available. I didn't dive into a really deep level discussion about the internals of locking and snapshot isolation, because there were people there with all different experience levels. I tried to stick to the behavioral differences and the costs involved with both choices.&lt;/P&gt;
&lt;P&gt;It was a very enthusiastic group, with lots of good questions. There was also lots of good food, much than we could eat! We had about 20 pizzas, 3 coolers full of cold drinks, several bags of chips,&amp;nbsp; and also several bags of cookies.&lt;/P&gt;
&lt;P&gt;I get a lot of requests to come talk at User Groups, and usually I am open to it when I am in town teaching a class. This was the first time that I actually traveled by plane to go somewhere just to give a free User Group talk, and I did it because my good friend Cindy Gross, who works for Microsoft in Boise, asked me to.&amp;nbsp; And Cindy made it well worth my while, giving me a wonderful guided tour of the Idaho capital, and a fabulous breakfast on Thursday!&lt;/P&gt;
&lt;P&gt;Hopefully, I'll make it back again and Cindy has promised to take me rafting down the river. That sounds great, if I get back before the Winter!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? What's the Capital of Idaho?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? What's the Capital of Idaho?%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx" target="_blank" title = "Email Did You Know? What's the Capital of Idaho?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx&amp;amp;title=Did+You+Know%3f+What%27s+the+Capital+of+Idaho%3f" target="_blank" title = "Submit Did You Know? What's the Capital of Idaho? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? What's the Capital of Idaho? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx&amp;amp;title=Did+You+Know%3f+What%27s+the+Capital+of+Idaho%3f" target="_blank" title = "Submit Did You Know? What's the Capital of Idaho? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx&amp;amp;title=Did+You+Know%3f+What%27s+the+Capital+of+Idaho%3f" target="_blank" title = "Submit Did You Know? What's the Capital of Idaho? 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/kalen_delaney/archive/2008/06/30/whats-the-capital-of-idaho.aspx&amp;amp;title=Did+You+Know%3f+What%27s+the+Capital+of+Idaho%3f&amp;amp;;top=1" target="_blank" title = "Add Did You Know? What's the Capital of Idaho? 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=7584" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/food/default.aspx">food</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/user+groups/default.aspx">user groups</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/snapshot+isolation/default.aspx">snapshot isolation</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/concurrency/default.aspx">concurrency</category></item><item><title>Geek City: Why I still need Sysprocesses</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx</link><pubDate>Mon, 30 Jun 2008 03:48:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7566</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>8</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7566.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7566</wfw:commentRss><description>&lt;P&gt;I've said many times that my favorite new feature in SQL Server 2005 is the new metadata, in particular the new Dynamic Management Objects. When I have to do troubleshooting on a SQL Server 2000 system, it is worse than painful, not to have my favorite tools like &lt;EM&gt;sys.dm_tran_locks&lt;/EM&gt;, &lt;EM&gt;sys.dm_exec_cached_plans&lt;/EM&gt; and&lt;BR&gt;&lt;EM&gt;sys.dm_exec_query_plan&lt;/EM&gt;. By now, on the eve of the release of the version AFTER SQL Server 2005, my transition to the new metadata is almost complete. &lt;/P&gt;
&lt;P&gt;With one notable exception...&lt;/P&gt;
&lt;P&gt;I have always used &lt;EM&gt;sysprocesses&lt;/EM&gt; constantly for troubleshooting information. Although most of the useful information that allows me to see what sessions are using lots of memory, or performing lots of I/O, can found in &lt;EM&gt;sys.dm_exec_sessions&lt;/EM&gt;, there is one piece of information that isn't there. &lt;EM&gt;Sysprocesses&lt;/EM&gt; contains a columns called &lt;EM&gt;open_tran&lt;/EM&gt; which reflects the transaction&amp;nbsp; nesting of each session. If a session issues four BEGIN TRAN commands, with no COMMITs or ROLLBACKs, their session will have an &lt;EM&gt;open_tran&lt;/EM&gt; value in &lt;EM&gt;sysprocesses&lt;/EM&gt; of 4. Any &lt;EM&gt;open_tran&lt;/EM&gt; value greater than 0 might mean that a transaction is holding locks and blocking other processes, or it might be keeping the transaction log from being cleared. If you ever notice &lt;EM&gt;open_tran&lt;/EM&gt; values in higher than 2 or 3, it's a pretty good indication that a developer doesn't know much about SQL Server transaction management. I use this value all the time, and once had to troubleshoot a system where dozens of connections had open_tran values in the 20s and 30s! (For more details about nesting transactions, see my &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2007/08/13/did-you-know-nesting-transactions.aspx" target=_blank&gt;earlier post&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;So imagine my surprise when I discovered that the &lt;EM&gt;sys.dm_exec_sessions&lt;/EM&gt; view, which is supposed to 'replace' &lt;EM&gt;sysprocesses&lt;/EM&gt; in SQL Server 2005, has no column to provide this information!&amp;nbsp; Another view, &lt;EM&gt;sys.dm_exec_requests&lt;/EM&gt;, has a column called &lt;EM&gt;open_transaction_count&lt;/EM&gt;, which you might think would be the same thing. And it actually is the same information, but the &lt;EM&gt;sys.dm_exec_requests&lt;/EM&gt; view only returns rows for sessions that are currently active, i.e. currently running a query. The need for examining the &lt;EM&gt;open_tran&lt;/EM&gt; value is greatest when looking at those sessions that aren't doing anything, but are just sitting there with an open transaction. Those are the processes that you need to troubleshoot. I had felt that the omission of &lt;EM&gt;open_tran&lt;/EM&gt; (or &lt;EM&gt;open_transaction_count&lt;/EM&gt;) from &lt;EM&gt;sys.dm_exec_sessions&lt;/EM&gt; was just an oversight, and it would be 'fixed' in the next release. But it appears I am to be disappointed. I just checked &lt;EM&gt;sys.dm_exec_sessions&lt;/EM&gt; in RC0, and there is still no &lt;EM&gt;open_transaction_count&lt;/EM&gt; column.&lt;/P&gt;
&lt;P&gt;So long live &lt;EM&gt;sysprocesses&lt;/EM&gt;!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Geek City: Why I still need Sysprocesses&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Geek City: Why I still need Sysprocesses%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx" target="_blank" title = "Email Geek City: Why I still need Sysprocesses"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx&amp;amp;title=Geek+City%3a+Why+I+still+need+Sysprocesses" target="_blank" title = "Submit Geek City: Why I still need Sysprocesses to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx&amp;amp;phase=2" target="_blank" title = "Submit Geek City: Why I still need Sysprocesses to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx&amp;amp;title=Geek+City%3a+Why+I+still+need+Sysprocesses" target="_blank" title = "Submit Geek City: Why I still need Sysprocesses to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx&amp;amp;title=Geek+City%3a+Why+I+still+need+Sysprocesses" target="_blank" title = "Submit Geek City: Why I still need Sysprocesses 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/kalen_delaney/archive/2008/06/29/why-i-still-need-sysprocesses.aspx&amp;amp;title=Geek+City%3a+Why+I+still+need+Sysprocesses&amp;amp;;top=1" target="_blank" title = "Add Geek City: Why I still need Sysprocesses 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=7566" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/metadata/default.aspx">metadata</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/DMVs/default.aspx">DMVs</category></item><item><title>Did You Know? What Happened to My DVDs?</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx</link><pubDate>Fri, 20 Jun 2008 19:23:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7419</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>6</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7419.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7419</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Last December, I announced that my &lt;A href="http://www.insidesqlserver.com/Course%20Description%20and%20Outline.htm" target=_blank&gt;SQL Server Internals course&lt;/A&gt; was being made into a &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2007/12/15/geek-city-sql-server-internals-course-coming-soon-on-dvd.aspx" target=_blank&gt;DVD series,&lt;/A&gt; and I then had several &lt;A href="http://www.insidesqlserver.com/Course%20Description%20and%20Outline.htm" target=_blank&gt;follow up&lt;/A&gt; &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2008/03/19/did-you-know-dvd-feedback.aspx" target=_blank&gt;posts&lt;/A&gt; over the next few months. I flew to NY 3 times, and have filmed 3 lessons. I was waiting to film the 4th, for which I already have the slides and the scripts, until the 2nd one was released, or at least until the editing of the 2nd was done.&lt;/P&gt;
&lt;P&gt;It is with deep regret that I have to announce that the rest of the series will not be available any time soon. Due to problems with the editing and production, I am going to have to find another producer.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I am currently spending all my spare time working on my next book, so I have no bandwidth to organize another production situation. If I could have just kept recording under the same conditions as the first 3, I probably could have squeezed out the time to keep making new lessons. As it is, I will not be able to start negotiating with a new producer until the bulk of the work on the new book is done. At this time, I anticipate that will be sometime in October. &lt;/P&gt;
&lt;P&gt;(In the meantime, don't forget the I offer this training live in the classroom. I have several public training partners, and can offer private deliveries as well.&amp;nbsp; My &lt;A href="http://insidesqlserver.com/schedule" target=_blank&gt;schedule&lt;/A&gt; is available on my &lt;A href="http://sqlblog.com/controlpanel/blogs/www.InsideSQLServer.com" target=_blank&gt;website&lt;/A&gt;. )&lt;/P&gt;
&lt;P&gt;Thanks for all your support!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? What Happened to My DVDs?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? What Happened to My DVDs?%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx" target="_blank" title = "Email Did You Know? What Happened to My DVDs?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx&amp;amp;title=Did+You+Know%3f+What+Happened+to+My+DVDs%3f" target="_blank" title = "Submit Did You Know? What Happened to My DVDs? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? What Happened to My DVDs? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx&amp;amp;title=Did+You+Know%3f+What+Happened+to+My+DVDs%3f" target="_blank" title = "Submit Did You Know? What Happened to My DVDs? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx&amp;amp;title=Did+You+Know%3f+What+Happened+to+My+DVDs%3f" target="_blank" title = "Submit Did You Know? What Happened to My DVDs? 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/kalen_delaney/archive/2008/06/20/what-happened-to-my-dvds.aspx&amp;amp;title=Did+You+Know%3f+What+Happened+to+My+DVDs%3f&amp;amp;;top=1" target="_blank" title = "Add Did You Know? What Happened to My DVDs? 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=7419" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/internals/default.aspx">internals</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/training/default.aspx">training</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/DVD/default.aspx">DVD</category></item><item><title>Did You Know? Things Keep Changing</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx</link><pubDate>Thu, 19 Jun 2008 19:07:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7392</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7392.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7392</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.sqlmag.com/Article/ArticleID/99513/sql_server_99513.html" target=_blank&gt;My Thursday commentary for the SQL Server Magazine Update e-newsletter&lt;/A&gt; discussed quiet changes in SQL Server 2005 and I just realized there's another one I wanted to mention. &lt;/P&gt;
&lt;P&gt;If you use Indexed Views at all, you're probably aware that there is a set of SET options that must on set appropriately in order for your indexed views to work as planned. One of the requirements is that ARITHABORT must be ON. In SQL Server 2000, this value had to be set explicitly. (But frequently it was set by your connection, so you didn't have to worry about it.)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In SQL 2005, if you (or your connection) enabled the setting ANSI_WARNINGS, ARITHABORT is automatically enabled. &lt;/P&gt;
&lt;P&gt;I dug around and found the reference to this change in the BOL at &lt;BR&gt;&lt;A title=http://msdn.microsoft.com/en-us/library/ms190306.aspx href="http://msdn.microsoft.com/en-us/library/ms190306.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms190306.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;What the article doesn't make completely clear is that even if you explicitly set ARITHABORT to OFF, as long as ANSI_WARNINGS is ON, SQL Server will behave as if ARITHABORT is ON.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The SET options are particularly important when updating a table on which an indexed view is built. If the SET options have the incorrect settings, the update will actually fail.&lt;/P&gt;
&lt;P&gt;Let's look at an example on SQL Server 2005, using the old pubs database. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;-- First, create the view and the index&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;USE pubs&lt;BR&gt;GO&lt;BR&gt;CREATE VIEW sum_sales WITH SCHEMABINDING&lt;BR&gt;AS&lt;BR&gt;SELECT type, sum(isnull(ytd_sales,0)) AS total_sales, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_big(*) AS number_sales&lt;BR&gt;FROM dbo.titles&lt;BR&gt;GROUP BY type; &lt;BR&gt;GO&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;CREATE UNIQUE CLUSTERED INDEX idxv_sales_by_type &lt;BR&gt;&amp;nbsp;&amp;nbsp; ON sum_sales(type);&lt;BR&gt;GO&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;-- Next, verify the settings&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;SELECT ansi_warnings, arithabort &lt;BR&gt;FROM sys.dm_exec_sessions&lt;BR&gt;WHERE session_id = @@SPID;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;-- You should see that both options are ON (1).&amp;nbsp; &lt;BR&gt;-- Update the titles table, and it should succeed.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;UPDATE dbo.titles&lt;BR&gt;SET ytd_sales = ytd_sales + 1&lt;BR&gt;WHERE title_id = 'BU1032';&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;--Now change ARITHABORT TO OFF, verify the settings, and update:&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;SET ARITHABORT OFF;&lt;BR&gt;GO&lt;BR&gt;SELECT ansi_warnings, arithabort &lt;BR&gt;FROM sys.dm_exec_sessions&lt;BR&gt;WHERE session_id = @@SPID;&lt;BR&gt;GO&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;UPDATE dbo.titles&lt;BR&gt;SET ytd_sales = ytd_sales - 1&lt;BR&gt;WHERE title_id = 'BU1032';&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;-- The above should succeed. &lt;BR&gt;-- Now change ANSI_WARNINGS to OFF:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;SET ANSI_WARNINGS OFF;&lt;BR&gt;GO&lt;BR&gt;SELECT ansi_warnings, arithabort &lt;BR&gt;FROM sys.dm_exec_sessions&lt;BR&gt;WHERE session_id = @@SPID;&lt;BR&gt;GO&lt;BR&gt;UPDATE dbo.titles&lt;BR&gt;SET ytd_sales = ytd_sales - 1&lt;BR&gt;WHERE title_id = 'BU1032';&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;-- The above should fail. &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;-- If we change to SQL 2000 compatibility level, &lt;BR&gt;-- just setting ARITHABORT OFF will cause the update to fail:&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;EXEC sp_dbcmptlevel pubs, 80;&lt;BR&gt;GO&lt;BR&gt;SET ANSI_WARNINGS ON;&lt;BR&gt;GO&lt;BR&gt;SET ARITHABORT OFF;&lt;BR&gt;GO&lt;BR&gt;SELECT ansi_warnings, arithabort &lt;BR&gt;FROM sys.dm_exec_sessions&lt;BR&gt;WHERE session_id = @@SPID;&lt;BR&gt;GO&lt;BR&gt;UPDATE dbo.titles&lt;BR&gt;SET ytd_sales = ytd_sales + 1&lt;BR&gt;WHERE title_id = 'BU1032';&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I'm sure there are lots more quiet changes. They're just so quiet I haven't found them yet! 
&lt;P&gt;Have fun 
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? Things Keep Changing&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? Things Keep Changing%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx" target="_blank" title = "Email Did You Know? Things Keep Changing"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx&amp;amp;title=Did+You+Know%3f+Things+Keep+Changing" target="_blank" title = "Submit Did You Know? Things Keep Changing to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? Things Keep Changing to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx&amp;amp;title=Did+You+Know%3f+Things+Keep+Changing" target="_blank" title = "Submit Did You Know? Things Keep Changing to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx&amp;amp;title=Did+You+Know%3f+Things+Keep+Changing" target="_blank" title = "Submit Did You Know? Things Keep Changing 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/kalen_delaney/archive/2008/06/19/things-keep-changing.aspx&amp;amp;title=Did+You+Know%3f+Things+Keep+Changing&amp;amp;;top=1" target="_blank" title = "Add Did You Know? Things Keep Changing 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=7392" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/SET+Options/default.aspx">SET Options</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/indexes/default.aspx">indexes</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/compatibility+level/default.aspx">compatibility level</category></item><item><title>Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx</link><pubDate>Tue, 17 Jun 2008 16:45:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7344</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>12</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7344.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7344</wfw:commentRss><description>&lt;P&gt;I taught a private class last week near Portland (Oregon) and although the company has a lot of SQL Servers, there was not much excitement at all about SQL Server 2008. They still have many SQL Server 2000 installations, and are debating whether to upgrade those to 2005. Most of the interest was in the real value of the new 2005 features, like partitioning, and the new large object types, as well as interest in the new metadata, such as the DMVs. &lt;/P&gt;
&lt;P&gt;They're trying to run a business, and keep their systems running well. They don't have a lot of time to get excited about features that are way in the future. &lt;/P&gt;
&lt;P&gt;I can't believe that my client is the only organization that is very interested in the continued health of SQL Server 2005, but I was surprised to see no blog posts here on SQLBLOG about the latest Cumulative Update for SQL 2005. &lt;/P&gt;
&lt;P&gt;Yesterday, Microsoft released CU#8 and you can read about it here:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://support.microsoft.com/kb/951217 href="http://support.microsoft.com/kb/951217"&gt;http://support.microsoft.com/kb/951217&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;So what are you waiting for?&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx" target="_blank" title = "Email Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx&amp;amp;title=Did+You+Know%3f+Microsoft+is%2fare+Still+Fixing+Bugs+On+SQL+Server+2005" target="_blank" title = "Submit Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005 to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005 to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx&amp;amp;title=Did+You+Know%3f+Microsoft+is%2fare+Still+Fixing+Bugs+On+SQL+Server+2005" target="_blank" title = "Submit Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005 to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx&amp;amp;title=Did+You+Know%3f+Microsoft+is%2fare+Still+Fixing+Bugs+On+SQL+Server+2005" target="_blank" title = "Submit Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005 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/kalen_delaney/archive/2008/06/17/microsoft-is-still-fixing-bugs-on-sql-server-2005.aspx&amp;amp;title=Did+You+Know%3f+Microsoft+is%2fare+Still+Fixing+Bugs+On+SQL+Server+2005&amp;amp;;top=1" target="_blank" title = "Add Did You Know? Microsoft is/are Still Fixing Bugs On SQL Server 2005 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=7344" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/training/default.aspx">training</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/cumulative+update+packages/default.aspx">cumulative update packages</category></item><item><title>Did You Know: Jim Gray Tribute at UC Berkeley</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx</link><pubDate>Mon, 02 Jun 2008 20:53:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7111</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7111.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7111</wfw:commentRss><description>&lt;P&gt;Almost as soon as the event was over, this blog post appeared on the NY Times site:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://bits.blogs.nytimes.com/2008/05/31/a-tribute-to-jim-gray-sometimes-nice-guys-do-finish-first/index.html href="http://bits.blogs.nytimes.com/2008/05/31/a-tribute-to-jim-gray-sometimes-nice-guys-do-finish-first/index.html"&gt;http://bits.blogs.nytimes.com/2008/05/31/a-tribute-to-jim-gray-sometimes-nice-guys-do-finish-first/index.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The author neglected to mention that in addition to the fact that “The audience was a cross-section of the computer industry’s best and brightest”, it also included regular people, like me. I flew down to the Bay Area on Friday with my husband, and spent the day on the UC Berkeley campus, where I had been a student for 8 years, and lecturer for another 4. Although I was not there concurrently with Jim, we had many professors and colleagues in common. Attending the tribute and the technical sessions afterwards was an awesome experience. &lt;/P&gt;
&lt;P&gt;At end of morning, we had about 15 minutes before lunch, right after a couple of speakers were sharing about Jim's early days at IBM and Tandem. The moderator, Mike Stonebraker, asked audience members to share their stories and recollections of Jim from the 70's and 80's. I assumed there would be another chance in the afternoon for people to share stories from the 90's and beyond, but that didn't happen. So I will share my story here.&lt;/P&gt;
&lt;P&gt;As I was finishing my first book (upgrading Ron Soukup's&lt;EM&gt; Inside SQL Server&lt;/EM&gt;, from version 6.5 to version 7) I needed to find someone to write the foreword. Jim Gray, who I only knew about from &lt;A href="http://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902" target=_blank&gt;his book&lt;/A&gt;, had written the foreword to the 6.5 edition, and I asked a few colleagues at Microsoft if they thought he might agree to write a foreword for me. I was encouraged to contact him, and right after I sent the email to him, I discovered that he had just been awarded the &lt;A href="http://en.wikipedia.org/wiki/Turing_award" target=_blank&gt;Turing Award&lt;/A&gt;! Well of course, I couldn't expect that a Turing Award winner would respond to an email from a nobody like me, so I started looking around for someone else. I didn't spend long in the search, because Jim responded in a day, saying he'd be delighted to write the foreword, and also asking if I was going to be at the PASS conference.&lt;/P&gt;
&lt;P&gt;This was in 1998, and the very first PASS conference was being held in Chicago. I told him I was going to be there, and he suggested getting together for coffee. What could I say but "OK"? &lt;/P&gt;
&lt;P&gt;I arrived in Chicago late in the evening and stumbled into a strange hotel and went to bed. Chicago was 2-hours earlier than my normal time zone, so I planned on sleeping until 8:30. At 7 AM, the phone rang.&amp;nbsp; To the day, I clearly remember my impulse to shout into the phone "What in &amp;amp;#%* do you want at this ungodly hour in the morning?" But I stifled that impulse, and to this day I am grateful to my guardian angel for that decision. Because, as I'm sure you guessed, it was Jim. In a bright and chipper voice he asked "Would you like to go get a cup of coffee now?". Of course, I REALLY needed some. So we had coffee. And a wonderful meeting. I still think about that phone call, and try to remember to always answer the phone cheerfully, because you never know who is calling. I'm not always successful, but I try. And knowing Jim, and based on what I heard about on Saturday, I would guess that even if I hadn't stifled my first impulse, Jim would have forgiven me. He would have just apologized for the early call, and asked me out for coffee anyway.&lt;/P&gt;
&lt;P&gt;I met with Jim several more times after that over the years, including once by accident in the Microsoft cafeteria. He asked me to join him for lunch. I imagined he would be lunching with a group of people and was asking me to join the group, but it turned out he was by himself and just wanted someone to sit with. I was glad I was there. We talked about teaching and training, and how amazing he found it that some people could actually type while they talked! &lt;/P&gt;
&lt;P&gt;I just searched and found over 20 emails from Jim still in my Outlook folders, and in fact he's under 500 in my Xobni rankings. I doubt I'll ever be able to delete those mails. &lt;/P&gt;
&lt;P&gt;So Jim did write the foreword for my first book, as you can see:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/kalen_delaney/WindowsLiveWriter/71148ed3b968_B230/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=244 alt=image src="http://sqlblog.com/blogs/kalen_delaney/WindowsLiveWriter/71148ed3b968_B230/image_thumb.png" width=210 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;He also wrote the foreword for my next 2 books. But by the one after that, he was gone. So I dedicated that book to him. &lt;/P&gt;
&lt;P&gt;You can read about Jim's accomplishments on his site at Microsoft Research: &lt;BR&gt;&lt;A title=http://research.microsoft.com/~gray/ href="http://research.microsoft.com/~gray/"&gt;http://research.microsoft.com/~gray/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know: Jim Gray Tribute at UC Berkeley&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know: Jim Gray Tribute at UC Berkeley%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx" target="_blank" title = "Email Did You Know: Jim Gray Tribute at UC Berkeley"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx&amp;amp;title=Did+You+Know%3a+Jim+Gray+Tribute+at+UC+Berkeley" target="_blank" title = "Submit Did You Know: Jim Gray Tribute at UC Berkeley to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know: Jim Gray Tribute at UC Berkeley to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx&amp;amp;title=Did+You+Know%3a+Jim+Gray+Tribute+at+UC+Berkeley" target="_blank" title = "Submit Did You Know: Jim Gray Tribute at UC Berkeley to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx&amp;amp;title=Did+You+Know%3a+Jim+Gray+Tribute+at+UC+Berkeley" target="_blank" title = "Submit Did You Know: Jim Gray Tribute at UC Berkeley 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/kalen_delaney/archive/2008/06/02/jim-gray-tribute-at-uc-berkeley.aspx&amp;amp;title=Did+You+Know%3a+Jim+Gray+Tribute+at+UC+Berkeley&amp;amp;;top=1" target="_blank" title = "Add Did You Know: Jim Gray Tribute at UC Berkeley 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=7111" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Jim+Gray/default.aspx">Jim Gray</category></item><item><title>Did You Know? or rather, What Did You Wish You Knew?</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx</link><pubDate>Fri, 30 May 2008 15:48:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7064</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>11</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/7064.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=7064</wfw:commentRss><description>&lt;P&gt;Thank you so much for all the responses to the &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx" target=_blank&gt;DBA Blunders post!&lt;/A&gt; As I mentioned, however, that question was asked on behalf of a friend of mine. Now I have a question of my own. &lt;/P&gt;
&lt;P&gt;I am currently training a group of new junior DBAs. One of them has already started assisting with some client operations, but is still closely supervised. &lt;/P&gt;
&lt;P&gt;For those of you that are SQL Server DBAs:&lt;/P&gt;
&lt;P&gt;What did you wish you knew BEFORE your first day on the job?&lt;/P&gt;
&lt;P&gt;(I'm particularly looking for what you consider to be gaps in your education, but anything that answers the question is fine!)&lt;/P&gt;
&lt;P&gt;THANKS!!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? or rather, What Did You Wish You Knew?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? or rather, What Did You Wish You Knew?%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx" target="_blank" title = "Email Did You Know? or rather, What Did You Wish You Knew?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx&amp;amp;title=Did+You+Know%3f+or+rather%2c+What+Did+You+Wish+You+Knew%3f" target="_blank" title = "Submit Did You Know? or rather, What Did You Wish You Knew? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? or rather, What Did You Wish You Knew? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx&amp;amp;title=Did+You+Know%3f+or+rather%2c+What+Did+You+Wish+You+Knew%3f" target="_blank" title = "Submit Did You Know? or rather, What Did You Wish You Knew? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx&amp;amp;title=Did+You+Know%3f+or+rather%2c+What+Did+You+Wish+You+Knew%3f" target="_blank" title = "Submit Did You Know? or rather, What Did You Wish You Knew? 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/kalen_delaney/archive/2008/05/30/what-did-you-wish-you-knew.aspx&amp;amp;title=Did+You+Know%3f+or+rather%2c+What+Did+You+Wish+You+Knew%3f&amp;amp;;top=1" target="_blank" title = "Add Did You Know? or rather, What Did You Wish You Knew? 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=7064" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/training/default.aspx">training</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/DBA/default.aspx">DBA</category></item><item><title>Geek City: What's Worse Than a Table Scan?</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx</link><pubDate>Sun, 25 May 2008 20:59:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6970</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>12</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/6970.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=6970</wfw:commentRss><description>&lt;P&gt;I have frequently heard SQL Server developers and DBAs gasp when a query plan is indicating that SQL Server is performing a table scan, thinking that is the worst thing that could ever happen to a query. The truth is, it's far from the worst thing and in addition, not all table scans are created equal. &lt;/P&gt;
&lt;P&gt;One thing that is far worse that a table scan is to execute a query plan that uses a nonclustered index, and having that plan look up every single row in a table! Although that is a horrible thing to behold, it is not the topic of this post.&lt;/P&gt;
&lt;P&gt;Today, I'm going to show you that two different table scans on the same data in a heap can give very different performance.&lt;/P&gt;
&lt;P&gt;The behavior has to do with a technique that SQL Server uses when a row in a heap is increased in size so it no longer fits in the original page. This usually occurs when a variable length column is updated to take more space.&amp;nbsp; If SQL Server just moved the row to another page, any nonclustered indexes would have to be updated to indicate the new page address.&amp;nbsp; (Remember, if the underlying table is a heap, nonclustered indexes point to the data row using a actual address.) Since there can be up to 249 nonclustered indexes on a single table, that could potentially be a LOT of work. So instead, when a row in a heap has to move, SQL Server leaves behind a forwarding pointer in place of the row that has moved. The nonclustered indexes continue to point to the old location, and then SQL Server just needs one more page lookup to find the new location. For just a few lookups, this expense is minimal and more than made up for my the savings of not having to update all the nonclustered indexes every time a row moves. &lt;/P&gt;
&lt;P&gt;However, what happens when there are LOTS of forwarding pointers?&lt;/P&gt;
&lt;P&gt;The metadata function &lt;EM&gt;sys.dm_db_index_physical_stats&lt;/EM&gt; has a column that indicates how many forwarded records are in any table. For tables with clustered indexes, this will always be 0. &lt;/P&gt;
&lt;P&gt;Let's look at an example. I'll make a copy of the &lt;EM&gt;Person.Address&lt;/EM&gt; table in the &lt;EM&gt;AdventureWorks&lt;/EM&gt; database, and add a new varchar column to it. Initially, the column takes no space.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;USE AdventureWorks;&lt;BR&gt;GO&lt;BR&gt;IF EXISTS (SELECT 1 FROM sys.tables&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE name = 'Address2' AND schema_id =1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DROP TABLE dbo.Address2;&lt;BR&gt;GO&lt;BR&gt;SELECT *, convert (varchar(500), 'comments') AS comments &lt;BR&gt;&amp;nbsp;&amp;nbsp; INTO Address2 &lt;BR&gt;FROM Person.Address;&lt;BR&gt;GO&lt;BR&gt;-- note that the pages are almost full and there are no forwarded records&lt;BR&gt;SELECT index_type_desc, page_count, avg_page_space_used_in_percent,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; avg_record_size_in_bytes,forwarded_record_count&lt;BR&gt;FROM sys.dm_db_index_physical_stats(db_id('AdventureWorks'), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;object_id('Address2'),null, null, 'detailed');&lt;BR&gt;GO&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Now I'll increase the length of all the new columns and check the physical stats again:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;UPDATE Address2&lt;BR&gt;SET comments = replicate('a', 500);&lt;BR&gt;GO&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;SELECT index_type_desc, page_count, avg_page_space_used_in_percent,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; avg_record_size_in_bytes,forwarded_record_count&lt;BR&gt;FROM sys.dm_db_index_physical_stats(db_id('AdventureWorks'), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;object_id('Address2'),null, null, 'detailed');&lt;BR&gt;GO&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The output shows me I have 1763 pages in the table and 15961 forwarded records.&lt;/P&gt;
&lt;P&gt;Let's see what happens when we read every row in the table:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;SET STATISTICS IO ON;&lt;BR&gt;SELECT * FROM Address2;&lt;BR&gt;SET STATISTICS IO OFF;&lt;/FONT&gt; 
&lt;P&gt;The logical I/O value tells us that instead of just reading through every page, for a total of 1763 reads, SQL Server jumps out of sequence and follows the forwarding pointer for every forwarded record. So the number of logical reads is the sum of the number of pages plus the number of forwarded records:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;1763&amp;nbsp; +&amp;nbsp; 15961= 17724&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I was discussing this behavior with my friend and colleague Tibor Karaszi and he proposed an explanation for this behavior. He related it to the same behavior that Itzik Ben-Gan has described for why SQL Server will always follow page pointers when scanning a clustered index if consistent reads are desired. The alternative would be to just read the pages in disk order, or page number order, which can be determined by examining the IAM structures for the object. For clustered tables, we need to follow the page pointers instead of the IAMs&amp;nbsp; to make sure that if a row is moved due to an update while the scan is occurring, that we don't read the same row twice (if the row is moved to a higher page number) or skip the row altogether (if the row is moved to a lower page number.)&lt;/P&gt;
&lt;P&gt;But what about a heap? Are there potential problems scanning a heap while updates are occurring? Could we potentially read the same row twice or skip a row, since there is no 'ordered list' to read? Tibor suggested the following:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;I believe that forwarding pointers take care of just that. Because of forwarding pointers, the "root" location for a row is stable. So, even if the row moves during a scan, the "root location"(forwarding stub) is at the same position. We have concluded that the scan uses the forwarding pointers when reading the rows. This means that a scan is not sensitive to row movements during the scan. It cannot "skip" rows that are there, or read the same row twice. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So a few forwarding pointers are not a bad thing, but having lots of them can increase the work done during scans or partial scans by a considerable amount. &lt;/P&gt;
&lt;P&gt;So how do you get rid of forwarding pointers? There are 3 ways:&lt;/P&gt;
&lt;P&gt;1. If the row is updated, so that its size decreases, AND if there is still room on the page where the row came from, it will be moved back. This is not dependable, so it isn't really recommended as a solution.&amp;nbsp; When I updated my Address2 table, many of the forwarded records were moved, but not all:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;UPDATE Address2&lt;BR&gt;SET comments = '';&lt;BR&gt;GO &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;SELECT index_type_desc, page_count, avg_page_space_used_in_percent,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; avg_record_size_in_bytes,forwarded_record_count&lt;BR&gt;FROM sys.dm_db_index_physical_stats(db_id('AdventureWorks'), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;object_id('Address2'),null, null, 'detailed');&lt;BR&gt;GO&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;My results showed that I am still left with 1080 forwarded records. This is a great improvement over 15961, but it's still more forwarded records than there are pages in the table.&lt;/P&gt;
&lt;P&gt;2. Forwarded records will be cleaned up when you shrink the data file. This is definitely NOT recommended as a solution; I am only mentioning it for completeness. SQL Server does so much moving of data and updating nonclustered index pointers when shrinking a file, that updating the forwarded records is not very much extra work at all. &lt;/P&gt;
&lt;P&gt;3. Since forwarded records only exist in heaps, the best solution is to make the table not a heap. Build a clustered index, and all the forwarded records will go away. If you really don't want the clustered index, you can then drop it.&lt;/P&gt;
&lt;P&gt;Hopefully, this information will be useful to you.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Geek City: What's Worse Than a Table Scan?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Geek City: What's Worse Than a Table Scan?%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx" target="_blank" title = "Email Geek City: What's Worse Than a Table Scan?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx&amp;amp;title=Geek+City%3a+What%27s+Worse+Than+a+Table+Scan%3f" target="_blank" title = "Submit Geek City: What's Worse Than a Table Scan? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx&amp;amp;phase=2" target="_blank" title = "Submit Geek City: What's Worse Than a Table Scan? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx&amp;amp;title=Geek+City%3a+What%27s+Worse+Than+a+Table+Scan%3f" target="_blank" title = "Submit Geek City: What's Worse Than a Table Scan? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx&amp;amp;title=Geek+City%3a+What%27s+Worse+Than+a+Table+Scan%3f" target="_blank" title = "Submit Geek City: What's Worse Than a Table Scan? 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/kalen_delaney/archive/2008/05/25/whats-worse-than-a-table-scan.aspx&amp;amp;title=Geek+City%3a+What%27s+Worse+Than+a+Table+Scan%3f&amp;amp;;top=1" target="_blank" title = "Add Geek City: What's Worse Than a Table Scan? 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=6970" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/metadata/default.aspx">metadata</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/allocation+structures/default.aspx">allocation structures</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/pages/default.aspx">pages</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/forwarding+pointers/default.aspx">forwarding pointers</category></item><item><title>Did You Know? Free SQL Server Troubleshooting Tools</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx</link><pubDate>Sun, 18 May 2008 03:47:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6845</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/6845.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=6845</wfw:commentRss><description>&lt;P&gt;I'm very excited about the new Management Data Warehouse coming in SQL Server 2008 (which was called Performance Studio at one point), but keep in mind there are lots of available tools in the current versions. &lt;/P&gt;
&lt;P&gt;One of the students in my class last week put together this list of his favorites. Note that some of the tools can be used together. For example, the PSSDIAG collection utility output can be pumped into SQL Nexus for nice reporting and analysis.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;RML Utilities for SQL Server&lt;/STRONG&gt; 
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/944837"&gt;&lt;FONT size=1&gt;http://support.microsoft.com/kb/944837&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=7EDFA95A-A32F-440F-A3A8-5160C8DBE926&amp;amp;displaylang=en"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/downloads/details.aspx?familyid=7EDFA95A-A32F-440F-A3A8-5160C8DBE926&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;STRONG&gt;SQL Nexus&lt;/STRONG&gt; 
&lt;P&gt;&lt;A href="http://www.sqlnexus.net/"&gt;&lt;FONT size=1&gt;http://www.sqlnexus.net/&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;STRONG&gt;PSSDIAG Data Collection Utility&lt;/STRONG&gt; 
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5564386A-28C2-4483-8293-76FFF67B9EB3&amp;amp;displaylang=en"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=5564386A-28C2-4483-8293-76FFF67B9EB3&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/A&gt; 
&lt;P align=left&gt;&lt;STRONG&gt;Description of the SQL Server Performance Analysis Utilities Read80Trace and OSTRESS&lt;/STRONG&gt; 
&lt;P align=left&gt;&lt;A href="http://support.microsoft.com/kb/887057"&gt;&lt;FONT size=1&gt;http://support.microsoft.com/kb/887057&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;STRONG&gt;SQL Server Health and History Tool (SQLH2)&lt;/STRONG&gt; 
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=EEDD10D6-75F7-4763-86DE-D2347B8B5F89&amp;amp;displaylang=en"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=EEDD10D6-75F7-4763-86DE-D2347B8B5F89&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;STRONG&gt;Performance Dashboard&lt;/STRONG&gt; 
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=1d3a4a0d-7e0c-4730-8204-e419218c1efc&amp;amp;displaylang=en"&gt;&lt;FONT size=1&gt;http://www.microsoft.com/downloads/details.aspx?familyid=1d3a4a0d-7e0c-4730-8204-e419218c1efc&amp;amp;displaylang=en&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have fun!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? Free SQL Server Troubleshooting Tools&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? Free SQL Server Troubleshooting Tools%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx" target="_blank" title = "Email Did You Know? Free SQL Server Troubleshooting Tools"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx&amp;amp;title=Did+You+Know%3f+Free+SQL+Server+Troubleshooting+Tools" target="_blank" title = "Submit Did You Know? Free SQL Server Troubleshooting Tools to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? Free SQL Server Troubleshooting Tools to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx&amp;amp;title=Did+You+Know%3f+Free+SQL+Server+Troubleshooting+Tools" target="_blank" title = "Submit Did You Know? Free SQL Server Troubleshooting Tools to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx&amp;amp;title=Did+You+Know%3f+Free+SQL+Server+Troubleshooting+Tools" target="_blank" title = "Submit Did You Know? Free SQL Server Troubleshooting Tools 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/kalen_delaney/archive/2008/05/17/free-troubleshooting-tools.aspx&amp;amp;title=Did+You+Know%3f+Free+SQL+Server+Troubleshooting+Tools&amp;amp;;top=1" target="_blank" title = "Add Did You Know? Free SQL Server Troubleshooting Tools 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=6845" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Tools/default.aspx">Tools</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Management+Tools/default.aspx">Management Tools</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Performance/default.aspx">Performance</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Did You Know? I have a question for you on DBA Blunders!</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx</link><pubDate>Fri, 16 May 2008 03:29:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6808</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>34</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/6808.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=6808</wfw:commentRss><description>&lt;P&gt;A good friend of mine is putting together a presentation on the top DBA Blunders from the view point of a SQL Server Database Admin, not developer. He would love to hear what other people consider to be in the big mistake list. &lt;/P&gt;
&lt;P&gt;Of course, you don't have to admit that these were your own blunders; they can be ones you heard about, or that 'a friend' is guilty of. :-)&lt;/P&gt;
&lt;P&gt;Thanks for your input!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Did You Know? I have a question for you on DBA Blunders!&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know? I have a question for you on DBA Blunders!%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx" target="_blank" title = "Email Did You Know? I have a question for you on DBA Blunders!"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx&amp;amp;title=Did+You+Know%3f+I+have+a+question+for+you+on+DBA+Blunders!" target="_blank" title = "Submit Did You Know? I have a question for you on DBA Blunders! to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know? I have a question for you on DBA Blunders! to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx&amp;amp;title=Did+You+Know%3f+I+have+a+question+for+you+on+DBA+Blunders!" target="_blank" title = "Submit Did You Know? I have a question for you on DBA Blunders! to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/05/15/dba-blunders.aspx&amp;amp;title=Did+You+Know%3f+I+have+a+question+for+you+on+DBA+Blunders!" target="_blank" title = "Submit Did You Know? I have a question for you on DBA Blunders! 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/kalen_delaney/archive/2008/05/15/dba-blunders.aspx&amp;amp;title=Did+You+Know%3f+I+have+a+question+for+you+on+DBA+Blunders!&amp;amp;;top=1" target="_blank" title = "Add Did You Know? I have a question for you on DBA Blunders! 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=6808" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/DBA/default.aspx">DBA</category></item><item><title>Did You Know?  I'm going to Portland</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/29/going-to-portland.aspx</link><pubDate>Wed, 30 Apr 2008 02:11:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6512</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/6512.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=6512</wfw:commentRss><description>&lt;P&gt;I almost titled this one with OT, but then I realized that this MY BLOG, and nothing is really off-topic, right? It's my blog and I can say whatever I want. :-)&lt;/P&gt;
&lt;P&gt;I get a real big kick out of seeing places in movies where I have actually been. I took my husband to NYC for his birthday in early March, and the first night, in our hotel room, the movie playing on HBO was "Night at the Museum" and we were planning to go to the Museum of Natural History while in the Big Apple! Even though we'd seen the movie before, it was fun to see it again, knowing we were going to be there the next day. Our last night in town, we saw a show (Wicked) and then walked along Broadway. The next day flying home, the movie on the flight was "Enchanted", in which a Princess pops up right in the middle of Broadway. She was right on a corner where we had been the day before. Again, it was so fun just to see a place in a film that we completely recognized. &lt;/P&gt;
&lt;P&gt;Last night we rented a movie that took place in one of my favorite cities, Portland, Oregon. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.whatthebleep.com/index2.shtml"&gt;&lt;IMG height=85 alt="What The Bleep!? home page" src="http://www.whatthebleep.com/images/title2.gif" width=502 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Again, it was really fun to see sights that we knew really well. Portland is only about a 3 hour drive from where I live, so when I have a class there, I can drive. I love going to a job in my own car, rather than flying, because then I don't have to worry about baggage restrictions or losing my pocketknife to TSA. I just throw whatever I want in the trunk of my car.&amp;nbsp; Since I live out in the boondocks, there are not too many places I can go to work that I don't have to fly away. 
&lt;P&gt;I'll be in Portland twice in the next two months.&amp;nbsp; May 12 - 16, I'll be teaching my 5-day &lt;A href="http://www.insidesqlserver.com/Course%20Description%20and%20Outline.htm" target=_blank&gt;SQL Server Internals and Tuning class&lt;/A&gt; publicly, for my training partner SQLSoft+.&amp;nbsp; June 9-13 I'll be teaching a private class, less than 5 minutes away from the SQLSoft+ location, and I'll be staying at the same hotel. I guess if I just forget something, like my pocketknife, I could just retrieve it when I go back. 
&lt;P&gt;So now you know. Or do you? 
&lt;P&gt;&lt;FONT color=#ff00ff size=5&gt;~Kalen&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=Did You Know?  I'm going to Portland&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Did You Know?  I'm going to Portland%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/04/29/going-to-portland.aspx" target="_blank" title = "Email Did You Know?  I'm going to Portland"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/29/going-to-portland.aspx&amp;amp;title=Did+You+Know%3f++I%27m+going+to+Portland" target="_blank" title = "Submit Did You Know?  I'm going to Portland to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/29/going-to-portland.aspx&amp;amp;phase=2" target="_blank" title = "Submit Did You Know?  I'm going to Portland to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/29/going-to-portland.aspx&amp;amp;title=Did+You+Know%3f++I%27m+going+to+Portland" target="_blank" title = "Submit Did You Know?  I'm going to Portland to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/29/going-to-portland.aspx&amp;amp;title=Did+You+Know%3f++I%27m+going+to+Portland" target="_blank" title = "Submit Did You Know?  I'm going to Portland 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/kalen_delaney/archive/2008/04/29/going-to-portland.aspx&amp;amp;title=Did+You+Know%3f++I%27m+going+to+Portland&amp;amp;;top=1" target="_blank" title = "Add Did You Know?  I'm going to Portland 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=6512" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/internals/default.aspx">internals</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/training/default.aspx">training</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/Portland/default.aspx">Portland</category></item><item><title>Geek City: Clustered or Nonclustered? Why not both?</title><link>http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx</link><pubDate>Thu, 24 Apr 2008 21:51:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6399</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>4</slash:comments><comments>http://sqlblog.com/blogs/kalen_delaney/comments/6399.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=6399</wfw:commentRss><description>&lt;P&gt;I had been thinking of this post all day, and then noticed that &lt;A href="http://sqlblog.com/blogs/denis_gobo/archive/2008/04/24/6385.aspx" target=_blank&gt;Denis wrote a post with almost the same name&lt;/A&gt;. I was worried he might have written about something similar, but it turns out not to be the case. &lt;/P&gt;
&lt;P&gt;A group of colleagues have been having a discussion about this topic recently, which was spurred by the fact that the&amp;nbsp; Microsoft supplied &lt;EM&gt;Northwind&lt;/EM&gt; database has duplicates of many of its indexes. If Microsoft does this, many new database users might assume it's a good idea. It's not! Having two identical indexes gives you no additional benefit, but does give you lots of additional overhead when those indexes need to be maintained. In SQL Server 2008, you will be able to create a policy to detect and prohibit this behavior if you choose. But that of course, is still in the future.&lt;/P&gt;
&lt;P&gt;But what if the indexes are not quite identical? What if one is a clustered index and one is nonclustered? My colleagues report seeing this behavior frequently when someone declares a Primary Key on a column, and then doesn't realize that automatically builds an index (clustered by default), so she then builds a nonclustered on the same key.&amp;nbsp; Is this necessarily all bad? The clustered index is useful when most of the columns of many of the rows need to be returned, based on the value in the PK column, or when the data needs to be returned sorted by the PK. But what if you only need a few rows, and you need only key columns? For example, what about a count(*) query?&lt;/P&gt;
&lt;P&gt;In general, when satisfying a count(*) query, the SQL Server optimizer will choose the index with the smallest number of pages at the leaf level. A nonclustered index typically will have far fewer leaf level rows that a clustered, but still contains an entry for every single row, so the count(*) value will be accurate. So consider this example:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Lucida Console" color=#0000a0&gt;USE AdventureWorks;&lt;BR&gt;-- create a big table by copying another one &lt;BR&gt;IF EXISTS (SELECT * FROM sys.tables WHERE name = 'newdetails')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DROP TABLE newdetails;&lt;BR&gt;SELECT * INTO newdetails FROM Sales.SalesOrderDetail; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Lucida Console" color=#0000a0&gt;-- Build a PK and a NC index on the same column&lt;BR&gt;ALTER TABLE newdetails &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADD CONSTRAINT PK_Detail PRIMARY KEY (SalesOrderDetailID);&lt;BR&gt;CREATE UNIQUE INDEX UNQ_Detail ON newdetails (SalesOrderDetailID); &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Lucida Console" color=#0000a0&gt;-- Look at the plan; the optimizer will choose the NC index&lt;BR&gt;SET SHOWPLAN_TEXT ON;&lt;BR&gt;SELECT count(*) FROM newdetails &lt;BR&gt;WHERE SalesOrderDetailID BETWEEN 1000 and 2000; &lt;BR&gt;SET SHOWPLAN_TEXT OFF;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Lucida Console" color=#0000a0&gt;-- Look at the performance; the nonclustered is performing better&lt;BR&gt;-- Even though the NC index will be chosen without the hint, &lt;BR&gt;--&amp;nbsp;&amp;nbsp; i included it here to make it more obvious which index is chosen&lt;BR&gt;SET STATISTICS IO ON;&lt;BR&gt;SELECT count(*) FROM newdetails WITH (INDEX = UNQ_Detail)&lt;BR&gt;WHERE SalesOrderDetailID BETWEEN 1000 and 2000&lt;BR&gt;SELECT count(*) FROM newdetails WITH (INDEX = PK_Detail)&lt;BR&gt;WHERE SalesOrderDetailID BETWEEN 1000 and 2000&lt;BR&gt;SET STATISTICS IO OFF;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I am absolutely not recommending that you always duplicate your PK index with another one, but rather illustrating that it is not always completely pointless or harmful to do so. Choosing the best indexes takes a lot of careful consideration of your data distribution and your query usage patterns, and there is no one-size-fits-all answer.&lt;/P&gt;
&lt;P&gt;I hope this is useful to you,&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&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=Geek City: Clustered or Nonclustered? Why not both?&amp;amp;body=Seen on SQLblog.com: %0A%0A%09Geek City: Clustered or Nonclustered? Why not both?%0A%0Ahttp://sqlblog.com/blogs/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx" target="_blank" title = "Email Geek City: Clustered or Nonclustered? Why not both?"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx&amp;amp;title=Geek+City%3a+Clustered+or+Nonclustered%3f+Why+not+both%3f" target="_blank" title = "Submit Geek City: Clustered or Nonclustered? Why not both? to del.icio.us"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx&amp;amp;phase=2" target="_blank" title = "Submit Geek City: Clustered or Nonclustered? Why not both? to digg.com"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx&amp;amp;title=Geek+City%3a+Clustered+or+Nonclustered%3f+Why+not+both%3f" target="_blank" title = "Submit Geek City: Clustered or Nonclustered? Why not both? to reddit.com"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx&amp;amp;title=Geek+City%3a+Clustered+or+Nonclustered%3f+Why+not+both%3f" target="_blank" title = "Submit Geek City: Clustered or Nonclustered? Why not both? 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/kalen_delaney/archive/2008/04/24/clustered-or-nonclustered-why-not-both.aspx&amp;amp;title=Geek+City%3a+Clustered+or+Nonclustered%3f+Why+not+both%3f&amp;amp;;top=1" target="_blank" title = "Add Geek City: Clustered or Nonclustered? Why not both? 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=6399" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/index+hints/default.aspx">index hints</category><category domain="http://sqlblog.com/blogs/kalen_delaney/archive/tags/indexes/default.aspx">indexes</category></item></channel></rss>