<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www2.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 : SQL Server 2008</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx</link><description>Tags: SQL Server 2008</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Did You Know? I gave two presentations last week</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2010/06/14/-two-presentations-last-week.aspx</link><pubDate>Mon, 14 Jun 2010 15:05:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:26183</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/26183.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=26183</wfw:commentRss><description>Even though I didn't make it to TechEd this year, it didn't mean I was quiet last week. On Wednesday, I was in Colorado, giving a talk for the new Colorado PASS User Group, which is a joint venture between 3 different existing groups from Colorado Springs,...(&lt;a href="http://www2.sqlblog.com/blogs/kalen_delaney/archive/2010/06/14/-two-presentations-last-week.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=26183" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/internals/default.aspx">internals</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/user+groups/default.aspx">user groups</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/conference/default.aspx">conference</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/compression/default.aspx">compression</category></item><item><title>Geek City: Two Compression Questions and Parameter Metadata</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2009/03/10/two-compression-questions-and-parameter-metadata.aspx</link><pubDate>Tue, 10 Mar 2009 17:46:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:12539</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/12539.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=12539</wfw:commentRss><description>&lt;P&gt;I am teaching the SQL 2008 version of my course for the first time this week. My life is still is disarray and spare time is practically non-existent.&amp;nbsp; During the evenings after I class I am trying to get caught up on several projects that I fell way behind on&amp;nbsp;over the last month when most of my time was spent in the hospital. Blogging has been put on the back burner, but I thought I could share some of the questions that came up in class on the first day.&amp;nbsp; I usually try to track down answers to open questions, and then share them with the students the next day.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;I&gt;1. Why can't the stored procedure sp_estimate_data_compression_savings be available on SQL Server 2008 Standard Edition, instead of just Enterprise, Developer and Evaluation? We realize that compression is an Enterprise only feature, but if non-Enterprise users could see how much space they would save, it might help them determine whether Enterprise Edition is worth while?&lt;/I&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;(OK, here's a really geeky part... speaking of Enterprise, my #1 son sent me &lt;A href="http://www.traileraddict.com/trailer/star-trek-xi/feature-trailer"&gt;this link&lt;/A&gt; yesterday. ) &lt;/P&gt;
&lt;P&gt;Now I'm not saying that Microsoft should be obnoxious about this and say "See what you could save if you upgraded to Enterprise",&amp;nbsp; and do that whether the user wants to know or not. It would be on request, when the user ran this procedure. &lt;/P&gt;
&lt;P&gt;I also understand that the procedure actually applies compression to a sample of pages to compute the savings potential. And it was confirmed last night when I started researching this question that Enterprise features are just turned on and off through a switch so it actually would be easy enough to just not do the check for Enterprise Edition within this stored procedure. Microsoft is looking at possibly making this change, but it looks like it might not happen before the next major release.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;I&gt;2. Since page compression is applied on a page by page basis, what's the point of compressing a read-only table? Each page would be compressed, perhaps into a small amount of space, but if no new rows were added, the empty space on each page wouldn't get used and we would still have the same number of pages in the table.&lt;/I&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Although it is true that compression is applied on each page individually, you need to rebuild the table or index in order to compress it, with ALTER TABLE or ALTER INDEX.&amp;nbsp; And rebuilding a table or index moves the data to all new pages. So as the table is being rebuilt, when a page gets full, it is compressed, but then more rows can be added, and when are sufficient number are added, it gets recompressed, and keeps getting recompressed as more rows are added, until there is no chance of any more more rows being added. So during the rebuild process the table really isn't read-only, as the original data is being inserted into the a new copy of the table. You could end up with far few pages.&lt;/P&gt;
&lt;P&gt;This is pretty easy to test out, by just compressing a relatively full table of your own into a test table (so no one will update it) and then compressing it. It should take less space. &lt;/P&gt;
&lt;P&gt;There are lots of compression scripts, plus a lot more detail about how compression works, in my new book, which is scheduled for release TOMORROW!!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;I&gt;3. Where is the metadata that contains the default values of SQL Server stored procedure parameters?&lt;/I&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Uh, the answer appears to be 'None of the above'. There is no metadata, either system views or system tables (viewable using the DAC) that contains this information. &lt;/P&gt;
&lt;P&gt;You can read this Connect request for more details (and even vote for it if you like): &lt;/P&gt;
&lt;P&gt;&lt;A title=https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=234143 href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=234143"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=234143&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It does seem strange that this information is not available and it's hard to believe SQL Server parses the procedure definition every time it wants to know the default.&amp;nbsp; It turns out that even if all you want to know is whether or not a default exists is not easy to find. (You might want to know that to be able to determine if a parameter is optional.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So now you know.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=12539" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/metadata/default.aspx">metadata</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/compression/default.aspx">compression</category></item><item><title>Did You Know? A New SQL Server 2008 Books Online Update is Available</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2009/02/02/SQL-Server-2008-books-online-update.aspx</link><pubDate>Tue, 03 Feb 2009 01:45:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:11671</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>0</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/11671.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=11671</wfw:commentRss><description>&lt;P&gt;When I searched for "sql server 2008 books online update", the first non-advertising hit I got was labeled August 2008, and I already have a Books Online download for August. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/kalen_delaney/WindowsLiveWriter/DidYouKnowANewSQLServer2008BooksOnlineUp_F97C/search1_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=101 alt=search1 src="http://sqlblog.com/blogs/kalen_delaney/WindowsLiveWriter/DidYouKnowANewSQLServer2008BooksOnlineUp_F97C/search1_thumb.jpg" width=520 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, when I clicked on the link I was taken to a page to download a brand new January 2009 Update::&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/kalen_delaney/WindowsLiveWriter/DidYouKnowANewSQLServer2008BooksOnlineUp_F97C/BOL%202008_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=310 alt="BOL 2008" src="http://sqlblog.com/blogs/kalen_delaney/WindowsLiveWriter/DidYouKnowANewSQLServer2008BooksOnlineUp_F97C/BOL%202008_thumb.jpg" width=586 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So here's the link:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.microsoft.com/downloads/details.aspx?FamilyId=765433F7-0983-4D7A-B628-0A98145BCB97&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?FamilyId=765433F7-0983-4D7A-B628-0A98145BCB97&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=765433F7-0983-4D7A-B628-0A98145BCB97&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&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;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=11671" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/documentation/default.aspx">documentation</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>Geek City: Too Many Indexes!</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2009/01/18/too-many-indexes.aspx</link><pubDate>Sun, 18 Jan 2009 20:37:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:11244</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>1</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/11244.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=11244</wfw:commentRss><description>&lt;P&gt;I wrote about &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2008/09/20/too-many-columns.aspx" target=_blank&gt;"Too Many Columns"&lt;/A&gt; last September, and along with changes in SQL Server 2008 that allow lots of columns, there is also the ability to create more than the old maximum of 249 nonclustered indexes on a table. I knew this fact, but somehow I overlooked it when updating the chapter on table structures in my new book. My omission also got past all the editors, and I just realized my mistake when reviewing the Indexes chapter, which was being updated for SQL 2008 by Kimberly Tripp.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I found that Books Online has not been completely updated (and I have filed a doc bug on this already). This page still says the limit is 249&amp;nbsp; nonclustered indexes per table:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://msdn.microsoft.com/en-us/library/ms190197.aspx href="http://msdn.microsoft.com/en-us/library/ms190197.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms190197.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;However, the page for CREATE TABLE at &lt;A title=http://msdn.microsoft.com/en-us/library/ms174979.aspx href="http://msdn.microsoft.com/en-us/library/ms174979.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms174979.aspx&lt;/A&gt; does say:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Each table can contain a maximum of 999 nonclustered indexes, and 1 clustered index. These include the indexes generated to support any PRIMARY KEY and UNIQUE constraints defined for the table.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You can take my script to create a table with lots of columns, and edit it to create a UNIQUE constraint on every column. 
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;DECLARE @create varchar(max);&lt;BR&gt;DECLARE @tabname sysname;&lt;BR&gt;DECLARE @numcols int; &lt;BR&gt;DECLARE @col int;&lt;BR&gt;SELECT @numcols = 900;&lt;BR&gt;SELECT @tabname = 'wide' + CONVERT(varchar, @numcols); &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;SELECT @create = 'CREATE TABLE ' + @tabname + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' (ID int IDENTITY, '; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;SELECT @col = 1;&lt;BR&gt;WHILE @col &amp;lt; @numcols BEGIN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 0 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' int UNIQUE,';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&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; ' char(5) UNIQUE,';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&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; ' varchar(25) UNIQUE,';&lt;BR&gt;SELECT @col = @col + 1;&lt;BR&gt;END;&lt;BR&gt;SELECT @create = @create + 'col' + CONVERT(varchar, @col) + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' int default 0);'&lt;BR&gt;PRINT @create&amp;nbsp; &lt;BR&gt;EXECUTE (@create) &lt;/FONT&gt;
&lt;P&gt;After the table is created, you can examine &lt;EM&gt;sys.indexes&lt;/EM&gt;: 
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;SELECT name, index_id, type_desc&lt;BR&gt;FROM sys.indexes&lt;BR&gt;WHERE object_id = object_id('wide900');&lt;/FONT&gt; 
&lt;P&gt;You'll definitely see more than 249 indexes! In addition, you might note that there is a gap in the &lt;EM&gt;index_id&lt;/EM&gt; values. The values 251 - 255 are not used, and this is for backward compatibility. In much older versions, &lt;EM&gt;index_id&lt;/EM&gt; (or &lt;EM&gt;indid&lt;/EM&gt;) 255 was reserved for the LOB data belonging to a table, and the values from 251 - 254 were reserved. So that range is still not used. But you can see that I have &lt;EM&gt;index_id&lt;/EM&gt; values from 256 - 905 in this table. 
&lt;P&gt;So, thanks Kim~ 
&lt;P&gt;One more place that Books Online could use a little tweaking is in the section on Programmability Enhancements: 
&lt;P&gt;&lt;A title=http://msdn.microsoft.com/en-us/library/cc645577.aspx href="http://msdn.microsoft.com/en-us/library/cc645577.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645577.aspx&lt;/A&gt; 
&lt;P&gt;The section on "Wide Tables" seems to imply that you need to have an XML column set in order to get 1000 indexes. It doesn't actually say that, so it's not really a bug, but it does seem to imply it: 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Wide tables are tables that contain one or more column sets. A wide table can contain up to 30000 columns, 1000 indexes, and 30000 statistics.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Because you can only reach the 30000 column limit with a wide table, it seems to imply that the 1000 index limit is only for wide tables. But as my script shows, it is not. You can have up to 1024 columns in a non-wide table, and you can now have indexes on every one of those columns. 
&lt;P&gt;But do you want that many? That's for another post, another time... 
&lt;P&gt;Have fun! 
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=11244" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/nonclustered+index/default.aspx">nonclustered index</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/books/default.aspx">books</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/indexes/default.aspx">indexes</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>Did You Know? I just submitted my last chapter!</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/12/05/my-last-chapter.aspx</link><pubDate>Fri, 05 Dec 2008 18:38:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:10317</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>7</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/10317.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=10317</wfw:commentRss><description>&lt;P&gt;Less than an hour ago, I sent my last chapter of my next book "SQL Server 2008 Internals" to my editor!&lt;/P&gt;
&lt;P&gt;Note that I said "my" last chapter, not "the" next chapter, as two of my co-authors still need to complete their chapters. But I've finished my chapters! Now this is still more to do, in addition to the waiting for the other two chapters to arrive. There are author reviews, and some rewrites, and Introduction, etc, to write, but after all these years, I know that stuff is minor.&lt;/P&gt;
&lt;P&gt;So it's really going to happen... one more book! &lt;/P&gt;
&lt;P&gt;Although &lt;A href="http://www.amazon.com/gp/product/0735626243?ie=UTF8&amp;amp;tag=insqse-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=0735626243" target=_blank&gt;Amazon&lt;/A&gt; indicates it will be available February 18, it probably will be out in mid-March.&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;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=10317" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/books/default.aspx">books</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>Did You Know? You can search the web-only Books Online</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/11/11/search-the-web-only-books-online.aspx</link><pubDate>Wed, 12 Nov 2008 01:22:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9934</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/9934.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=9934</wfw:commentRss><description>&lt;P&gt;You might be aware (&lt;A href="http://sqlblog.com/blogs/tibor_karaszi/archive/2008/11/05/new-web-update-for-sql-server-2008-books-online.aspx" target=_blank&gt;from other bloggers on this site&lt;/A&gt;) that there is a new web-only Books Online for SQL Server 2008 available at &lt;A title=http://msdn.microsoft.com/en-us/library/dd239407.aspx. href="http://msdn.microsoft.com/en-us/library/dd239407.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd239407.aspx.&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Like Tibor, I prefer a downloadable BOL, partly because I do a lot of research and writing while traveling and I don't always have an internet connection, like at 42,000 ft (~14000m) above the Atlantic Ocean. &lt;/P&gt;
&lt;P&gt;However, I need the latest documentation while I am finishing up my book, so I decided to start using it today, now that I am back from my travels to the UK. However, I discovered another reason while I like the desktop copy of BOL better and that is the searching functionality. The web-only BOL only has the search box to search the ENTIRE MSDN site, and it's not nearly as convenient as the search capabilities in the local documentation. &lt;/P&gt;
&lt;P&gt;To my delight, I just found out from Alan Brewer, from the SQL Documentation Team, &amp;nbsp;that Microsoft has a nice search macro to help limit your search on MSDN to just SQL Server 2008 topics:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://search.live.com/macros/sql_server_user_education/sql2008bolsearch/"&gt;http://search.live.com/macros/sql_server_user_education/sql2008bolsearch/&lt;/A&gt; 
&lt;P&gt;It's still not as nice as the local searching, but since web-only is all we have for now, for the most recent BOL, it's definitely a good thing.&lt;/P&gt;
&lt;P&gt;There is also a 2005 online search macro at:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/sqlserverue/archive/2007/10/01/eliminate-extranneous-search-results.aspx"&gt;http://blogs.msdn.com/sqlserverue/archive/2007/10/01/eliminate-extranneous-search-results.aspx&lt;/A&gt;&lt;/P&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;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=9934" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/BOL/default.aspx">BOL</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/documentation/default.aspx">documentation</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>Geek City: Clearing a Single Plan From Cache in SQL Server 2008</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/10/31/clearing-a-single-plan-from-cache-in-sql-server-2008.aspx</link><pubDate>Fri, 31 Oct 2008 23:43:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9787</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>4</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/9787.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=9787</wfw:commentRss><description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I just today found out about something that was in plain sight in the Books Online... but the documentation is so vast, I haven't discovered everything yet. &lt;/P&gt;
&lt;P&gt;I blogged about &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2007/09/29/geek-city-clearing-a-single-plan-from-cache.aspx" target=_blank&gt;clearing a single plan from cache in SQL Server 2005&lt;/A&gt; a while back, and mentioned a rumor that there would be a new way to do this in SQL Server 2008. And then just today, someone posted a comment on that blog post, asking about the new 2008 method. &lt;/P&gt;
&lt;P&gt;One of my contacts on the SQL Server team at Microsoft just sent me an email telling me about new features related to plan caching, as I am starting to work on updating that chapter for my 2008 book. He mentioned that DBCC now takes parameters, and one of the parameters is a plan handle!&lt;/P&gt;&lt;PRE&gt;DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]&lt;/PRE&gt;
&lt;P&gt;There is full example in the Books Online, so I won't repeat it here. If you don't have a local copy of BOL handy, you can read about the new option to DBCC FREEPROCCACHE online here:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://msdn.microsoft.com/en-us/library/ms174283.aspx href="http://msdn.microsoft.com/en-us/library/ms174283.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms174283.aspx&lt;/A&gt;&lt;/P&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;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=9787" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/metadata/default.aspx">metadata</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/plan+cache/default.aspx">plan cache</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>Did You Know? It's SQL Know How!</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/09/26/sqlknowhow.aspx</link><pubDate>Fri, 26 Sep 2008 16:05:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9104</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>1</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/9104.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=9104</wfw:commentRss><description>&lt;P&gt;I am very excited to be part of a new SQL Server Training Group, which was organized in the UK by &lt;A href="http://www.sqlknowhow.com/aboutus.aspx" target=_blank&gt;4 SQL Server MVPs&lt;/A&gt; (current and former).&amp;nbsp; I know this is a shameless plug, but I am not apologizing. I am actually going to the UK for the benefit of the SQLKnowHow guys, and I'm just trying to help them out even more by telling you all about their events!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.sqlknowhow.com/" target=_blank&gt;SQLKnowHow&lt;/A&gt; has been offering one day seminars and multi-day training events since last summer, and my first event with them will&amp;nbsp; in early November. &lt;/P&gt;
&lt;P&gt;This is, of course, not my first trip to the UK, or my first time speaking at an event organized by my friend Tony Rogerson, founder of the (in)famous and awesome &lt;A href="http://sqlserverfaq.com/" target=_blank&gt;UK SQL Server Community&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;The venue is in Harpenden, Hertfordshire, which I happen to know well, because that is where Tony lives, along with his wonderful wife and his amazing little boy. In truth, I am actually looking forward to seeing Tony's son even more than Tony. (After all, I can see Tony at conferences, and can communicate by email whenever I need to. Plus (sorry Tony), his son is much cuter.)&lt;/P&gt;
&lt;P&gt;Now that the previous event with &lt;A href="http://sqlserverbible.com/about.htm" target=_blank&gt;Paul Nielsen&lt;/A&gt; has completed, seats are starting to fill fast for my seminars. I am presenting two one-day seminars and a three-day course:&lt;/P&gt;
&lt;P&gt;3 November: &lt;A href="http://www.sqlknowhow.com/events/insidesql1.aspx" target=_blank&gt;SQL Server Data Storage Formats:&lt;/A&gt; &lt;STRONG&gt;Internals, Performance and Best Practices&lt;BR&gt;&lt;/STRONG&gt;&lt;EM&gt;(I have just finished writing the chapter for my next book on all the cool new storage, with compression, sparse columns and filestream, and I am really excited about this topic!)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;4 November: &lt;A href="http://www.sqlknowhow.com/events/insidesql2.aspx" target=_blank&gt;SQL Server Concurrency Control&lt;/A&gt;: &lt;STRONG&gt;Locking, Blocking and Row Versioning&lt;BR&gt;&lt;/STRONG&gt;&lt;EM&gt;(This is always one of my favorite topics, because it is crucial to good performance, but is frequently overlooked in tuning discussions.)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;5-7 November: &lt;A href="http://www.sqlknowhow.com/events/insidesql3.aspx"&gt;SQL Server Data Internals and Tuning&lt;/A&gt;&lt;BR&gt;(This 3-day seminar is a condensed version of my 5-day course which I have taught all over the world. We will start where the Data Storage Formats seminar leaves off, and look at how your storage structures can affect query performance. We'll go deeper into the structure of indexes and then talk about how your choice of indexes affects your query performance. We'll look at query tuning techniques, and plan caching, including new behaviors in SQL Server 2008.) 
&lt;P&gt;The great guys at SQLKnowHow are offering an early bird discount, too. Plus swag... plus great food....what else could you want? 
&lt;P&gt;See you there! 
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=9104" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/training/default.aspx">training</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/UK/default.aspx">UK</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/seminars/default.aspx">seminars</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item><item><title>Geek City: Too Many Columns!</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/09/20/too-many-columns.aspx</link><pubDate>Sun, 21 Sep 2008 01:52:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:9013</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>9</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/9013.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=9013</wfw:commentRss><description>&lt;P&gt;As I am working on my new SQL Server 2008 internals book, I am finding many test situations in which I need to create a table with LOTS of columns. First of all, you're probably aware of the new SPARSE column feature that allows you to have up to 30,000 columns in a table!&amp;nbsp; I did some testing with sparse columns, but just today I realized I had never actually created a table with more than the old limit of 1024.&amp;nbsp; In addition, the new row compression had some special tricks for dealing with lots of columns, and groups columns into clusters of 30 columns each. (You'll have to wait for the new book to get the details.)&lt;/P&gt;
&lt;P&gt;Yesterday, when writing about row compression, I realized I needed an easier way to create wide tables, so I wrote a script that allowed me to specify the number of columns, and also get a little creative with the datatypes, lengths and properties of the columns I was creating. I'll show you that script in just a minute!&lt;/P&gt;
&lt;P&gt;Then just today, I read a &lt;A href="http://sqlblogcasts.com/blogs/simons/archive/2008/09/18/Getting-more-than-1024-columns-in-a-table.aspx" target=_blank&gt;blog entry by Simon Sabin&lt;/A&gt;, who indicated that even with sparse columns, you could not create a table with more than 1024 columns. In the CREATE TABLE statement, you had to limit yourself, but then could use ALTER TABLE to add more columns. Although I hadn't tested this yet, I was intrigued, and realized I could use my new script to test out this claim. &lt;/P&gt;
&lt;P&gt;So here is my original script. You can replace the 100 (for the value of @numcols) by the number of columns you'd like, but the script will create one more, because it starts with a ID int identity column. So the script as is will create a table with 11 columns. In the loop that adds columns to the creation string, I had three different datatypes of columns that I can use. One third of the columns will be type int with a default of 0, one third will be char(5) with a default of 'hello' and one third will be varchar(25) with a default of 'this is a longer message'. You can modify this however you like. You can change the datatypes within the loop, or add more conditionals and change expression to use modulo of some other number. &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;DECLARE @create varchar(max);&lt;BR&gt;DECLARE @tabname sysname;&lt;BR&gt;DECLARE @numcols int; &lt;BR&gt;DECLARE @col int;&lt;BR&gt;SELECT @numcols = 100;&lt;BR&gt;SELECT @tabname = 'wide' + CONVERT(varchar, @numcols); &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;SELECT @create = 'CREATE TABLE ' + @tabname + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' (ID int IDENTITY, '; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;SELECT @col = 1;&lt;BR&gt;WHILE @col &amp;lt; @numcols BEGIN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 0 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' int default 0,';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&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; ' char(5) default ''hello'',';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&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; ' varchar(25) default ''this is a longer message'',';&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=1&gt;SELECT @col = @col + 1;&lt;BR&gt;END;&lt;BR&gt;SELECT @create = @create + 'col' + CONVERT(varchar, @col) + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' int default 0);'&lt;BR&gt;PRINT @create&amp;nbsp; &lt;BR&gt;EXECUTE (@create)&amp;nbsp; &lt;BR&gt;EXEC ('INSERT INTO '+ @tabname + ' DEFAULT VALUES');&lt;BR&gt;EXEC ('SELECT * FROM '+ @tabname);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;To use this script to test the creation of a table with more than 1024 columns, I knew some (or most?) of the columns would need to be sparse. In addition, I found &lt;A href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=356932" target=_blank&gt;this Connect entry&lt;/A&gt; which indicated that if you do have more than 1024 columns, the table must have a column set, so it was easy enough to make that the last column that is added to the create string after the loop.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;DECLARE @create varchar(max);&lt;BR&gt;DECLARE @tabname sysname;&lt;BR&gt;DECLARE @numcols int; &lt;BR&gt;DECLARE @col int;&lt;BR&gt;SELECT @numcols = 1200;&lt;BR&gt;SELECT @tabname = 'wide' + CONVERT(varchar, @numcols); &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;SELECT @create = 'CREATE TABLE ' + @tabname + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' (ID int IDENTITY, '; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=1&gt;SELECT @col = 1;&lt;BR&gt;WHILE @col &amp;lt; @numcols BEGIN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 0 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' int sparse,';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&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; ' varchar(5) sparse,';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (@col % 3) = 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; SELECT @create = @create + 'col' + CONVERT(varchar, @col) +&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; ' varchar(25) sparse,';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @col = @col + 1;&lt;BR&gt;END;&lt;BR&gt;SELECT @create = @create + 'col' + CONVERT(varchar, @col) + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' xml column_set for all_sparse_columns);';&lt;BR&gt;PRINT @create&amp;nbsp; &lt;BR&gt;EXECUTE (@create)&amp;nbsp; &lt;BR&gt;EXEC ('INSERT INTO '+ @tabname + ' DEFAULT VALUES');&lt;BR&gt;EXEC ('SELECT * FROM '+ @tabname);&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; 
&lt;P&gt;Running this script, I was able to create a table with 1200 columns. 
&lt;P&gt;And you can too, if you're using SQL Server 2008. 
&lt;P&gt;Have fun! 
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=9013" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/scripts/default.aspx">scripts</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/sparse+columns/default.aspx">sparse columns</category></item><item><title>Did You Know? It's Official...I'm a Geek!</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/09/16/im-a-geek.aspx</link><pubDate>Tue, 16 Sep 2008 17:08:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:8915</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>2</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/8915.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=8915</wfw:commentRss><description>&lt;P&gt;I almost didn't respond to the request for an interview with Richard Morris of Simple Talk. There were a few strange things in the request that made me think it might be spam or phishing. But I asked some trusted colleagues, and found out it was for real, and you can read the result here:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.simple-talk.com/content/article.aspx?article=563 href="http://www.simple-talk.com/content/article.aspx?article=563"&gt;http://www.simple-talk.com/content/article.aspx?article=563&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thanks, Richard!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=8915" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/travelers+lunchbox/default.aspx">travelers lunchbox</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/interview/default.aspx">interview</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/personal/default.aspx">personal</category></item><item><title>Did You Know? My First Talk on SQL 2008</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/04/02/my-first-talk-on-sql-2008.aspx</link><pubDate>Thu, 03 Apr 2008 00:13:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6004</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>4</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/6004.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=6004</wfw:commentRss><description>&lt;P&gt;I gave my first SQL Server 2008 presentation yesterday, and also spoke at a &lt;A href="http://www.microsoft.com/heroeshappenhere/register/default.mspx" target=_blank&gt;Launch Event&lt;/A&gt; for the first time. It was a terrific experience, primarily because it forced me to really start digging into SQL Server 2008. I had been doing so much 2005 training recently, I just really hadn't had a chance to really USE 2008, although I have dutifully installed all the CTPs.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;My one-hour talk covered 3 main areas:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Policy-based Management&lt;/LI&gt;
&lt;LI&gt;Performance Studio&lt;/LI&gt;
&lt;LI&gt;Multi-server Management&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;In my prep the evening before, I had been able to go through the whole thing in about 55 minutes, and I usually end up talking faster when in front of an audience. So figured I had time to show a few extra things in the demos, as well as show off the new ZoomIt presentation tool that I talked about in &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2008/04/01/the-most-amazing-tool.aspx" target=_blank&gt;my previous post&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;I have no idea what happened, but I was just barely finished with the first demo, and I looked at the clock and realized 45 minutes had gone by! I have absolutely no idea how that happened, and I would really like to apologize to all the people in the audience for having to deal with me rushing through the Performance Studio demo and not being able to say much at all about Multi-server management.&amp;nbsp; I must have just been having too much fun with policies, but that is really no excuse.&lt;/P&gt;
&lt;P&gt;I will be giving the same talk&amp;nbsp;at our &lt;A href="http://www.netda.net/" target=_blank&gt;local (Puget Sound) .NET Developers Association&lt;/A&gt; Meeting on April 21, so if you want to hear the rest of the story, and see the rest of my demos, come on by!&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=5&gt;~Kalen&lt;/FONT&gt; 
&lt;P&gt;&lt;A href="http://www.insidesqlserver.com/"&gt;www.InsideSQLServer.com&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.sqlserverdvd.com/"&gt;www.SQLServerDVD.com&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=6004" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/training/default.aspx">training</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/Management+Tools/default.aspx">Management Tools</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/user+groups/default.aspx">user groups</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category></item></channel></rss>