<?xml version="1.0" encoding="utf-8"?>
<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>SQLblog.com - The SQL Server blog spot on the web</title>
    <description>THE SQL Server Blog Spot on the Web</description>
    <link>http://sqlblog.com/roller/default.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Community Server v2.0 (http://www.communityserver.org)</generator>
    <item>
      <title>Eighteen Days Until TechEd Developers North America 2008!</title>
      <description>This afternoon, I attended a briefing for TechEd North America 2008 presenters and staff, and yesterday I got my booth schedule for the event.&amp;#160; I've got my Hands-On Lab for SQL Tricks finished, and I was happily surprised to hear earlier this week...(&lt;a href="http://blogs.technet.com/wardpond/archive/2008/05/16/eighteen-days-until-teched-developers-north-america-2008.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3056530" width="1" height="1"&gt;</description>
      <link>http://blogs.technet.com/wardpond/archive/2008/05/16/eighteen-days-until-teched-developers-north-america-2008.aspx</link>
      <source url="http://blogs.technet.com/wardpond/default.aspx">Ward Pond's SQL Server blog</source>
      <author>Ward Pond</author>
      <dc:creator>Ward Pond</dc:creator>
      <comments>http://blogs.technet.com/wardpond/comments/3056530.aspx</comments>
      <guid isPermaLink="False">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3056530</guid>
      <pubDate>Fri, 16 May 2008 19:45:31 GMT</pubDate>
    </item>
    <item>
      <title>Career News: Goin' Mobile</title>
      <description>I'm goin' home And when I wanna go home I'm goin' mobile Well, I'm gonna find a home And we'll see how it feels Goin' mobile Keep me movin' &amp;#160;&amp;#160;&amp;#160;&amp;#160; - Goin' Mobile , Pete Townsend ( The Who ) Frequent readers of this space will know that...(&lt;a href="http://blogs.technet.com/wardpond/archive/2008/05/16/career-news-goin-mobile.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3056498" width="1" height="1"&gt;</description>
      <link>http://blogs.technet.com/wardpond/archive/2008/05/16/career-news-goin-mobile.aspx</link>
      <source url="http://blogs.technet.com/wardpond/default.aspx">Ward Pond's SQL Server blog</source>
      <author>Ward Pond</author>
      <dc:creator>Ward Pond</dc:creator>
      <comments>http://blogs.technet.com/wardpond/comments/3056498.aspx</comments>
      <guid isPermaLink="False">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3056498</guid>
      <pubDate>Fri, 16 May 2008 18:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Log Buffer #97: a Carnival of the Vanities for DBAs</title>
      <description>The 97th edition of Log Buffer, the weekly review of database blogs, has been published on Brian &amp;#8220;Krow&amp;#8221; Aker&amp;#8217;s Idle Thoughts.
We have Jeff Smith and Ward Pond standing by for two upcoming editions.  And if you&amp;#8217;d like to contribute, make yourself known in the DBA community-at-large (and have some fun in the process), you [...]</description>
      <link>http://www.pythian.com/blogs/1011/log-buffer-97-a-carnival-of-the-vanities-for-dbas</link>
      <source url="http://www.pythian.com/blogs">Pythian Group Blog » SQL Server</source>
      <author>David Edwards</author>
      <dc:creator>David Edwards</dc:creator>
      <comments>http://www.pythian.com/blogs/1011/log-buffer-97-a-carnival-of-the-vanities-for-dbas#comments</comments>
      <guid isPermaLink="False">http://www.pythian.com/blogs/1011/log-buffer-97-a-carnival-of-the-vanities-for-dbas</guid>
      <pubDate>Fri, 16 May 2008 13:28:19 GMT</pubDate>
    </item>
    <item>
      <title>Log Buffer #97: Coming Soon</title>
      <description>Log Buffer #97 is unaccountably delayed, but have no fear &amp;#8212;  it will appear before too long. 
Stay tuned.
Bookmark online using:These icons link to social bookmarking sites where readers can share and discover new web pages.</description>
      <link>http://www.pythian.com/blogs/1013/log-buffer-97-coming-soon</link>
      <source url="http://www.pythian.com/blogs">Pythian Group Blog » SQL Server</source>
      <author>David Edwards</author>
      <dc:creator>David Edwards</dc:creator>
      <comments>http://www.pythian.com/blogs/1013/log-buffer-97-coming-soon#comments</comments>
      <guid isPermaLink="False">http://www.pythian.com/blogs/1013/log-buffer-97-coming-soon</guid>
      <pubDate>Fri, 16 May 2008 13:08:27 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server 2008 Change Tracking and Sync Services ARE made for each other... in VS2008 SP1</title>
      <description>&lt;p&gt;
This item was mentioned in other blogs too, but just to mention it again (so my SQLCE
and Sync Services friends won't think I overlooked it)...
&lt;/p&gt;
&lt;p&gt;
Visual Studio 2008 SP1 Beta contains direct support for using SQL Server 2008 Change
Tracking. When you use ADO.NET 1.0 Sync Services with a SQL Server 2008 database,
the Sync Services designer (that's Add/New Item/Local Database Data Cache) adds a
checkbox that allows you simply to "Use SQL Server Change Tracking". No extra triggers,
no tombstone tables, change tracking does it all for you. Visual Studio generates
some scripts to enable change tracking at a&amp;nbsp;database level and at a table level
for the tables you select.
&lt;/p&gt;
&lt;p&gt;
There's some nice generated code that warns you if you need to resync because you
haven't synchronized often enough. And you can tweak the SQL scripts for more control.
You can specify a&amp;nbsp;CHANGE_RETENTION (the default is 2 days) and whether or not
AUTO_CLEANUP is ON (it's on by default)&amp;nbsp;in your ALTER DATABASE statement. And
if you want to write your own, more granular synchronization or conflict resolution
code, you can specify WITH TRACK_COLUMNS_UPDATED = ON (default is OFF). &lt;/p&gt;
&lt;p&gt;
Something that puzzled me was, although the SQL Server Books Online states: "Using
snapshot isolation is the easiest way for you to help ensure that all change tracking
information is consistent. For this reason, we strongly recommend that snapshot isolation
be set to ON for the database.", the ALTER DATABASE DDL generated by Visual Studio
did not include the option to SET ALLOW_SNAPSHOT_ISOLATION ON. Enabling snapshot isolation
in SQL Server does involve a non-trivial amount of overhead, so it looks like they
set it to the least overhead option and let you decide if you need snapshot isolation
after reading the arguments/scenarios where it's useful&amp;nbsp;in Books Online. Probably
a wise choice.
&lt;/p&gt;
&lt;p&gt;
Synchronization&amp;nbsp;Framework is an&amp;nbsp;exciting technology, given that there's
so many possible uses of synchronization with "Local Data Caches" and, with the support
for Sync Services in mobile devices. The next release of the Synchronization Framework
(2.0, there's a beta out already) even contains support for Peer-to-Peer synchronization
through the model. Perhaps this will fit some additional&amp;nbsp;"replication&amp;nbsp;via
services" in databases. We'll have to wait and see if the Peer-to-Peer sync provider
even supports databases, I guess.&amp;nbsp;Always something interesting going on...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sqlskills.com/blogs/bobb/aggbug.ashx?id=1240b5a7-5437-4a80-ba78-232412f1c7d3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This blog is sponsored by &lt;a rel="nofollow" target="_blank" href="http://www.sqlskills.com"&gt;SQLSkills&lt;/a&gt;.</description>
      <link>http://www.sqlskills.com/blogs/bobb/2008/05/16/SQLServer2008ChangeTrackingAndSyncServicesAREMadeForEachOtherInVS2008SP1.aspx</link>
      <source url="http://pipes.yahoo.com/pipes/pipe.info?_id=85142a7c17be56670fbddefa43f25c8d">SQLskills.com Aggregated Feed</source>
      <guid isPermaLink="False">http://www.sqlskills.com/blogs/bobb/PermaLink,guid,1240b5a7-5437-4a80-ba78-232412f1c7d3.aspx</guid>
      <pubDate>Fri, 16 May 2008 12:12:04 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server 2008 data types in LINQ to SQL and EF, they (mostly) did it</title>
      <description>&lt;p&gt;
Last fall I'd asked the folks on the data access team about the possibility of including
the new SQL Server 2008 data types in the new data access object mapping layers. At
that time they said "no" but they also asked "why do you want it?" and "are people
expecting it?". Someone must have had some compelling arguments.
&lt;/p&gt;
&lt;p&gt;
I'm sure you've read this in other blogs, but in Visual Studio 2008 SP1 Beta, which
arrived Monday, there was...drumroll please...support for all four date and time types
in not only LINQ to SQL, but in ADO.NET Entity Framework. Thanks! I'm still a bit
surprised about the inclusion of DateTimeOffset in EF (its a SQL Server-specific data
type and EF is more platform-neutral than LINQ to SQL), but it was a cool surprise
to have them there.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;
Everyone's blog entry also points out there is some special support for Filestream
storage&amp;nbsp;(including a System.Data.Types.SqlFilestream class), but they identify
Filestream as a data type. Filestream is a storage format rather than a data type,
the actual data type is varbinary(max). Minor terminology nit. You can read and write
FILESTREAM based types without resorting to PInvoke. Cool.
&lt;/p&gt;
&lt;p&gt;
Of course, there were some SQL Server 2008 data types (the SQLCLR-based types) that
aren't "in there". These are the spatial types (Geometry and Geography) and the HierarchyID
data type. Perhaps for EF/LINQ to SQL version 2. These types are correctly identified
in Server Explorer in a table but attempting to add a table containing them to an
EF diagram fails (it actually leaves the type out of the diagram) and in LINQ to SQL
throws an error "the data type is not supported". &lt;/p&gt;
&lt;p&gt;
That means if you have one of these types in your SQL Server 2008 database, you need
to do something funky like treat it as a varbinary(max) and deserialize it (think
IBinarySerialize)&amp;nbsp;on the client yourself. Because the SQLCLR-based data types
would have a one-to-one mapping to .NET classes (Geometry = Microsoft.SqlServer.Types.SqlGeometry,
Geography = SqlGeography, HierarchyID = SqlHierarchyID) these would possibly be straightforward
to implement in the next release. They WOULD be a potential model-breaker in that
you would have "columns" (entity properties) that have their own properties and methods.
Another whole level of indirection.
&lt;/p&gt;
&lt;p&gt;
I've said before that IMHO, spatial support is the "killer developer feature" in SQL
Server 2008. Let's hope for more API support in future. But THANKS for the inclusion
of the date and time types.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sqlskills.com/blogs/bobb/aggbug.ashx?id=6ee055aa-47ab-4dd7-a1d0-fd3936d54ff2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This blog is sponsored by &lt;a rel="nofollow" target="_blank" href="http://www.sqlskills.com"&gt;SQLSkills&lt;/a&gt;.</description>
      <link>http://www.sqlskills.com/blogs/bobb/2008/05/16/SQLServer2008DataTypesInLINQToSQLAndEFTheyMostlyDidIt.aspx</link>
      <source url="http://pipes.yahoo.com/pipes/pipe.info?_id=85142a7c17be56670fbddefa43f25c8d">SQLskills.com Aggregated Feed</source>
      <guid isPermaLink="False">http://www.sqlskills.com/blogs/bobb/PermaLink,guid,6ee055aa-47ab-4dd7-a1d0-fd3936d54ff2.aspx</guid>
      <pubDate>Fri, 16 May 2008 11:43:03 GMT</pubDate>
    </item>
    <item>
      <title>First blog entry in a month...what's up</title>
      <description>&lt;p&gt;
After posting the last blog entry, I realized that I hadn't blogged in about a month.
Hmmmm...
&lt;/p&gt;
&lt;p&gt;
Well, since last month I posted the demos for my &lt;a rel="nofollow" target="_blank" href="http://www.devconnections.com/shows/sqlspring2006/default.asp?s=75"&gt;SQLConnections&lt;/a&gt; talks
on the SQLskills website (under PastConferences). I really had a good time at SQLConnections,
its been a while since I'd been invited to speak there. Thanks to those folks who
showed up and said hi.
&lt;/p&gt;
&lt;p&gt;
I've been updating my classes for SQL Server 2008 while waiting for the next CTP.
Don't know when that's coming, but everyone's guess is "sometime in June". And I've
found a few more neat things in SQL Server 2008 that I'll get around to writing about
some day soon. And did some experimenting with the Visual Studio 2008 SP1 Beta (see
previous post).
&lt;/p&gt;
&lt;p&gt;
And I've done a lot of yardwork and gardening. I've been outside almost every day;
might even lose that pastey-white "programmer who never sees the sun" look. But its
97 degrees in Portland today (yes, 97, really) and its a bit hot for gardening.
&lt;/p&gt;
&lt;p&gt;
Next stop...&lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/events/teched2008/developer/default.mspx"&gt;TechEd
Developer Week&lt;/a&gt; in June. I'm doing a &lt;a rel="nofollow" target="_blank" href="https://www.msteched.com/dev/public/precons.aspx"&gt;precon
there on SQL Server 2008&lt;/a&gt; and a&amp;nbsp;couple of&amp;nbsp;other interesting talks. Wonder
if it will be 97 degrees in Orlando...&amp;nbsp;If you're in Orlando stop by and say hi. &lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sqlskills.com/blogs/bobb/aggbug.ashx?id=f67c7248-4a2f-4aab-825c-ed8ba4373210" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This blog is sponsored by &lt;a rel="nofollow" target="_blank" href="http://www.sqlskills.com"&gt;SQLSkills&lt;/a&gt;.</description>
      <link>http://www.sqlskills.com/blogs/bobb/2008/05/16/FirstBlogEntryInAMonthwhatsUp.aspx</link>
      <source url="http://pipes.yahoo.com/pipes/pipe.info?_id=85142a7c17be56670fbddefa43f25c8d">SQLskills.com Aggregated Feed</source>
      <guid isPermaLink="False">http://www.sqlskills.com/blogs/bobb/PermaLink,guid,f67c7248-4a2f-4aab-825c-ed8ba4373210.aspx</guid>
      <pubDate>Fri, 16 May 2008 11:20:03 GMT</pubDate>
    </item>
    <item>
      <title>Decent Overview of Policy-Based Management</title>
      <description>&lt;p&gt;This &lt;a href="http://www.mssqltips.com/tip.asp?tip=1492" target="_blank"&gt;article&lt;/a&gt; is a decent overview of Policy-Based Management.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8513431" width="1" height="1"&gt;</description>
      <link>http://blogs.msdn.com/dtjones/archive/2008/05/16/decent-overview-of-policy-based-management.aspx</link>
      <source url="http://blogs.msdn.com/dtjones/default.aspx">Dan's Blog</source>
      <author>dtjones</author>
      <dc:creator>dtjones</dc:creator>
      <comments>http://blogs.msdn.com/dtjones/comments/8513431.aspx</comments>
      <guid isPermaLink="False">91d46819-8472-40ad-a661-2c78acb4018c:8513431</guid>
      <pubDate>Fri, 16 May 2008 11:09:39 GMT</pubDate>
    </item>
    <item>
      <title>This blog will move</title>
      <description>&lt;P&gt;For reasons that may be clear from the address this blog will move to &lt;A href="http://blogs.msdn.com/wesleyb/"&gt;http://blogs.msdn.com/wesleyb/&lt;/A&gt;.&lt;BR&gt;I hope you will all continue to read my blog on this new address!&lt;/P&gt;&lt;img src="http://sqlug.be/aggbug.aspx?PostID=958" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/sqlug/ZffW/~4/291685603" height="1" width="1" /&gt;</description>
      <link>http://feeds.feedburner.com/~r/sqlug/ZffW/~3/291685603/this-blog-will-move.aspx</link>
      <source url="http://sqlug.be/blogs/wesleyb/default.aspx">EXEC dbo.LongTermMemory__Archive</source>
      <author>WesleyB</author>
      <dc:creator>WesleyB</dc:creator>
      <comments>http://sqlug.be/blogs/wesleyb/comments/958.aspx</comments>
      <guid isPermaLink="False">fde2b626-d7cf-4bd7-bca2-e0283ef59b8c:958</guid>
      <pubDate>Fri, 16 May 2008 10:44:00 GMT</pubDate>
    </item>
    <item>
      <title>Trace Events in ADO.NET Entity Framework</title>
      <description>&lt;p&gt;
Every once in a while I'll get inquires on a paper I wrote in 2004 about the ETW trace
providers for ADO.NET (named "Tracing Data Access"). I got an inquiry today, and since
I'd recently installed Visual Studio 2008 SP1 Beta, I thought I'd try it out on a
LINQ to SQL program and an Entity Framework program. &lt;/p&gt;
&lt;p&gt;
If you haven't read the paper, the &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms971550.aspx"&gt;original
is still available&lt;/a&gt; on MSDN, but &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/aa964124.aspx"&gt;an
embellished version&lt;/a&gt; (including SNAC tracing in addition to ADO.NET) was released
in 2006. I'm also doing a talk at TechEd on "End-to-End tracing in ADO.NET and SQL
Server 2008". If you're at all interested in client tracing or SQL Server 2008 Extended
Events, it will be worth your while to attend.
&lt;/p&gt;
&lt;p&gt;
Unless the LINQ to SQL program has its own ETW provider that I missed, I got no LINQ
to SQL specific trace events. Since LINQ to SQL is a thin layer over System.Data.SqlClient,
I do get the events for SqlClient however.
&lt;/p&gt;
&lt;p&gt;
Entity Framework however, is another matter. I not only get EF-specific trace events,&amp;nbsp;but
there appears to be some new trace namespace abbreviations for EF as well. These are
the ones I've seen while going through one trace of one simple EF program. I may have
missed some.
&lt;/p&gt;
&lt;p&gt;
dobj = System.Data.Objects&lt;br&gt;
ec&amp;nbsp;&amp;nbsp; = System.Data.EntityClient&lt;br&gt;
cqt&amp;nbsp; = System.Data.Common.CommandTrees&lt;br&gt;
pc&amp;nbsp;&amp;nbsp; = System.Data.Query.PlanCompiler
&lt;/p&gt;
&lt;p&gt;
There's quite a bit of trace information for some parts of EF, like the CommandTree
portion. But after a whole half-hour and a few traces, it appears that not all items
in EF are as thoroughly instrumented with trace events as, say, SqlClient. On the
other hand, EF provider for SQL Server will show lots of SqlClient-specific and System.Data.Common
events, as does LINQ to SQL.
&lt;/p&gt;
&lt;p&gt;
Another interesting thing I discovered from running the trace. It appears that EF
is using the ADO.NET DataSet in some way, perhaps (wild guess) for entity tracking
and change tracking. The way I came to this conclusion is that, I have a simple console
app that produced no DataSets, but my trace shows lots of DataSet activity. Perhaps
this is common knowledge, but it was a bit of a surprise to me.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sqlskills.com/blogs/bobb/aggbug.ashx?id=1d83ed40-dcc0-4467-b9f4-a7d49dd2890a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This blog is sponsored by &lt;a rel="nofollow" target="_blank" href="http://www.sqlskills.com"&gt;SQLSkills&lt;/a&gt;.</description>
      <link>http://www.sqlskills.com/blogs/bobb/2008/05/16/TraceEventsInADONETEntityFramework.aspx</link>
      <source url="http://pipes.yahoo.com/pipes/pipe.info?_id=85142a7c17be56670fbddefa43f25c8d">SQLskills.com Aggregated Feed</source>
      <guid isPermaLink="False">http://www.sqlskills.com/blogs/bobb/PermaLink,guid,1d83ed40-dcc0-4467-b9f4-a7d49dd2890a.aspx</guid>
      <pubDate>Fri, 16 May 2008 10:37:03 GMT</pubDate>
    </item>
    <item>
      <title>WinFS lives!</title>
      <description>&lt;P&gt;I listen to a lot of podcast series these days (a great way of filling up &lt;A class="" href="http://maps.live.com/?v=2&amp;amp;encType=1&amp;amp;cid=550F681DAD532637!4724" target=_blank&gt;my one hour train commute&lt;/A&gt;) and I've recently subscribed to &lt;A class="" href="http://perspectives.on10.ne/" target=_blank&gt;Perspectives&lt;/A&gt; with &lt;A class="" href="http://perspectives.on10.net/blogs/jonudell/" target=_blank&gt;Jon Udell&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;This morning I listened to his latest one &lt;A class="" href="http://perspectives.on10.net/blogs/jonudell/Where-is-WinFS-now/" target=_blank&gt;Where is WinFS now?&lt;/A&gt; which featured an interview with Quentin Clark from the SQL Server team. Quentin was prominent on the supposedly ill-fated WinFS project but in actual fact he explains how a lot of the technologies developed as part of WinFS have manifested themselves in released technologies today. Entity Framework, HierarchyID data type &amp;amp; Filestream are all set to be released in the next three or four months and all were incubated in WinFS.&lt;/P&gt;
&lt;P&gt;Well worth a listen if you like understanding how and where technologies originate.&lt;/P&gt;
&lt;P&gt;-Jamie&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11118" width="1" height="1"&gt;</description>
      <link>http://blogs.conchango.com/jamiethomson/archive/2008/05/16/winfs-lives.aspx</link>
      <source url="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server/default.aspx">SSIS Junkie : SQL Server</source>
      <author>jamie.thomson</author>
      <dc:creator>jamie.thomson</dc:creator>
      <comments>http://blogs.conchango.com/jamiethomson/comments/11118.aspx</comments>
      <guid isPermaLink="False">e847c0e7-38d9-45c0-b593-56747303e088:11118</guid>
      <pubDate>Fri, 16 May 2008 07:16:00 GMT</pubDate>
    </item>
    <item>
      <title>Viable tools for Service Broker</title>
      <description>Technically Service Broker can offer a huge value over any other comparable technology, but every project faces in the early stages the same barrier: the extremely steep learning curve faced by developers and dba in order deploy a Service Broker solution. As the adopters try to set up a simple scenario to &amp;#8216;play&amp;#8217; with the [...]</description>
      <link>http://rusanu.com/2008/05/16/viable-tools-for-service-broker/</link>
      <source url="http://rusanu.com/">rusanu.com</source>
      <author>remus</author>
      <dc:creator>remus</dc:creator>
      <comments>http://rusanu.com/2008/05/16/viable-tools-for-service-broker/#comments</comments>
      <guid isPermaLink="False">http://rusanu.com/2008/05/16/viable-tools-for-service-broker/</guid>
      <pubDate>Fri, 16 May 2008 06:05:39 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server Statistics</title>
      <description>b Cross Posted from blogs.technet.com/rob...(&lt;a href="http://sqlblogcasts.com/blogs/robcarrol/archive/2008/05/16/sql-server-statistics.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10401" width="1" height="1"&gt;</description>
      <link>http://sqlblogcasts.com/blogs/robcarrol/archive/2008/05/16/sql-server-statistics.aspx</link>
      <source url="http://sqlblogcasts.com/blogs/">SQL Server Community Blogs</source>
      <author>robcarrol</author>
      <dc:creator>robcarrol</dc:creator>
      <guid isPermaLink="False">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10401</guid>
      <pubDate>Fri, 16 May 2008 03:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Query Processing Presentation</title>
      <description>&lt;P&gt;Last week, I had the opportunity to &lt;A class="" title="[New England] NESQL Special Meeting, Featuring Craig Freedman" href="http://sqlblog.com/blogs/adam_machanic/archive/2008/05/02/new-england-nesql-special-meeting-featuring-craig-freedman.aspx"&gt;talk&lt;/A&gt; to the &lt;A title="New England SQL Server Users Group" href="http://www.nesql.org/"&gt;New England SQL Server Users Group&lt;/A&gt;.&amp;nbsp; I would like to thank the group for inviting me, &lt;A title="Adam Machanic" href="http://sqlblog.com/blogs/adam_machanic/"&gt;Adam Machanic&lt;/A&gt; for organizing the event, and &lt;A title="Red Gate" href="http://www.red-gate.com/"&gt;Red Gate&lt;/A&gt; for sponsoring it.&amp;nbsp; My talk was an introduction to query processing, query execution, and query plans in SQL Server.&amp;nbsp; I've had a request for the slides, so here they are.&amp;nbsp; Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8508493" width="1" height="1"&gt;</description>
      <link>http://blogs.msdn.com/craigfr/archive/2008/05/15/query-processing-presentation.aspx</link>
      <source url="http://blogs.msdn.com/craigfr/default.aspx">Craig Freedman's SQL Server Blog</source>
      <author>craigfr</author>
      <dc:creator>craigfr</dc:creator>
      <comments>http://blogs.msdn.com/craigfr/comments/8508493.aspx</comments>
      <guid isPermaLink="False">91d46819-8472-40ad-a661-2c78acb4018c:8508493</guid>
      <pubDate>Thu, 15 May 2008 12:39:00 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server and Windows Memory</title>
      <description>SQL Server 2000 Enterprise Edition introduced support for the&amp;nbsp;use of Windows 2000 Address Windowing Extensions (AWE) to address 8GB of memory on Windows 2000 Advanced Server and 32GB of memory on Windows 2000 Datacentre. With AWE, SQL Server can reserve memory not in use by other applications and the OS. Each instance must statically allocate the memory it needs. AWE memory can only be used for the data cache and not for executables, drivers, DLL&amp;#39;s, etc. 
&lt;p&gt;Cross Posted from blogs.technet.com/rob&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10399" width="1" height="1"&gt;</description>
      <link>http://sqlblogcasts.com/blogs/robcarrol/archive/2008/05/15/sql-server-and-windows-memory.aspx</link>
      <source url="http://sqlblogcasts.com/blogs/">SQL Server Community Blogs</source>
      <author>robcarrol</author>
      <dc:creator>robcarrol</dc:creator>
      <guid isPermaLink="False">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10399</guid>
      <pubDate>Thu, 15 May 2008 10:02:00 GMT</pubDate>
    </item>
    <item>
      <title>Windows Memory (PAE/AWE/3GB)</title>
      <description>SQL Server 2000 Enterrise Edition introduced support for the&amp;nbsp;use of Windows &amp;nbsp; 
&lt;p&gt;Cross Posted from blogs.technet.com/rob&lt;/p&gt;&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10398" width="1" height="1"&gt;</description>
      <link>http://sqlblogcasts.com/blogs/robcarrol/archive/2008/05/15/windows-memory-and-sql-server.aspx</link>
      <source url="http://sqlblogcasts.com/blogs/">SQL Server Community Blogs</source>
      <author>robcarrol</author>
      <dc:creator>robcarrol</dc:creator>
      <guid isPermaLink="False">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10398</guid>
      <pubDate>Thu, 15 May 2008 08:20:00 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server multiple instances and resource utilization - best practices</title>
      <description>A newbie or FAQ within Forums and Newsgroups that having multiple instances and how best to set the resources on the server such as memory, CPU etc. Should you configure each of the instances to use specific portions of the available Operating System resources then best to leave the default settings, for instance dynamic memory settings on SQL Server. As per the configuration of SQL Server you can easily mix versions of SQL Server (both 2000 and 2005) on the same machine running Windows server, such...(&lt;a href="http://sqlblogcasts.com/blogs/ssqanet/archive/2008/05/15/sql-server-multiple-instances-and-resource-utilization-best-practices.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlblogcasts.com/aggbug.aspx?PostID=10395" width="1" height="1"&gt;</description>
      <link>http://sqlblogcasts.com/blogs/ssqanet/archive/2008/05/15/sql-server-multiple-instances-and-resource-utilization-best-practices.aspx</link>
      <source url="http://sqlblogcasts.com/blogs/">SQL Server Community Blogs</source>
      <author>ssqa.net</author>
      <dc:creator>ssqa.net</dc:creator>
      <guid isPermaLink="False">fa8c4e8e-46a3-4193-8264-2c1a9cb3475d:10395</guid>
      <pubDate>Thu, 15 May 2008 05:48:00 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server Performance issues with Fragmentation and heavy usage of TEMPDB?</title>
      <description>Whenever a performance issue occurs on the SQL Server database best option for diagnosing and troubleshooting common problems by using publicly available tools such as Profiler, System Monitor (Perfmon), and Dynamic Management Views (DMVs) in SQL Server...(&lt;a href="http://sqlserver-qa.net/blogs/perftune/archive/2008/05/15/4240.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://sqlserver-qa.net/aggbug.aspx?PostID=4240" width="1" height="1"&gt;</description>
      <link>http://sqlserver-qa.net/blogs/perftune/archive/2008/05/15/4240.aspx</link>
      <source url="http://sqlserver-qa.net/blogs/perftune/default.aspx">SQL Server Security, Performance &amp; Tuning (SSQA.net)</source>
      <author>SQL Master</author>
      <dc:creator>SQL Master</dc:creator>
      <comments>http://sqlserver-qa.net/blogs/perftune/comments/4240.aspx</comments>
      <guid isPermaLink="False">e5229e21-c1bf-42d8-be15-8e3c8579d3f0:4240</guid>
      <pubDate>Thu, 15 May 2008 04:59:00 GMT</pubDate>
    </item>
    <item>
      <title>SQLTeach - Writing better queries presentation</title>
      <description>&lt;a href="http://www.webbtechsolutions.com/downloads/SQLTeach_Writing_Better_Queries_2008-05-14.zip"&gt;Here's a presentation&lt;/a&gt; that I gave yesterday afternoon at &lt;a href="http://www.devteach.com"&gt;DevTeach/SQLTeach&lt;/a&gt;. It's called Tips &amp;amp; Tricks for Writing Better Queries. It's very similar to the presentation I gave a month or so ago at the &lt;a href="http://nashville.sqlpass.org"&gt;Nashville SQL Server User Group&lt;/a&gt; meeting. &lt;br /&gt;
&lt;br /&gt;
To everyone who attended the session - thanks for spending a part of your day with me. I hope it was worth your while. Please feel free to email me if you have any additional questions or comments. And please remember to login to your SQLTeach account and submit your session evals. &lt;br /&gt;
&lt;br /&gt;
Cheers! &lt;br /&gt;
&lt;br /&gt;
Joe &lt;br /&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fjoew%2farchive%2f2008%2f05%2f15%2f60600.aspx"&gt;&lt;img border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fjoew%2farchive%2f2008%2f05%2f15%2f60600.aspx" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/joew/aggbug/60600.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=Vlyw6H"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=Vlyw6H" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=wZlLnH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=wZlLnH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=jEKZWh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=jEKZWh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=QC0IJh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=QC0IJh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=bnSlXH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=bnSlXH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=NDC5sH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=NDC5sH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=crJMiH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=crJMiH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/290974101" height="1" width="1" /&gt;</description>
      <link>http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~3/290974101/60600.aspx</link>
      <source url="http://weblogs.sqlteam.com/mainfeed2.aspx">The SQLTeam.com Weblogs</source>
      <author>Joe Webb</author>
      <dc:creator>Joe Webb</dc:creator>
      <comments>http://weblogs.sqlteam.com/joew/archive/2008/05/15/60600.aspx#comment</comments>
      <guid isPermaLink="False">http://weblogs.sqlteam.com/joew/archive/2008/05/15/60600.aspx</guid>
      <pubDate>Thu, 15 May 2008 03:37:38 GMT</pubDate>
    </item>
    <item>
      <title>How hard is it to pick the right non-clustered indexes?</title>
      <description>&lt;font face="Verdana" size="2"&gt;&lt;p&gt;
Kimberly and I were presenting at our local (Redmond) &lt;a rel="nofollow" target="_blank" href="http://www.netda.net/"&gt;.Net
Developers Association&lt;/a&gt; on Monday and the following question came up while Kimberly
was talking about missing and extra indexes (paraphrasing):
&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT:0px;"&gt; &lt;p&gt;
&lt;em&gt;What's the best non-clustered index to use for the query with a predicate &lt;font face="Courier New"&gt;WHERE
lastname = 'Randal' AND firstname = 'Paul' AND middleinitial = 'S'&lt;/font&gt;?&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; &lt;p dir="ltr"&gt;
Kimberly said that the order of the keys (e.g. lastname, firstname, middleinitial;
or middleinitial, lastname, firstname; etc) doesn't matter for this case. I thought
about it for a second and then argued, saying that the most selective column should
come first. We agreed to discuss with the group at the end, but I thought about it
some more and realized (and admitted to the group) that she's right - I should know
better than to question Kimberly's knowledge of indexing... :-)
&lt;/p&gt;
&lt;p dir="ltr"&gt;
She's right because for a pure equality query using AND for multiple predicates, the
Storage Engine will seek straight to the first exactly matching record in the index
(and then scan for more matches if it's a non-unique index). It doesn't matter what
order the index keys are defined because the Storage Engine is looking for an exact
match.
&lt;/p&gt;
&lt;p dir="ltr"&gt;
When I started arguing, I was thinking about a phone book, which is ordered by lastname,
firstname, middleinitial. You may think that a phone book is ordered that way because
lastname is the most selective. Wrong. It's because the lastname is what most people
know - it just happens to be the most selective of the three choices. Most SQL geeks
should be able to find Kimberly in a phone book by looking for Tripp, Kimberly. But
what if it was ordered by middleinital? I'd have no problem finding Kimberly, but
how many of you would remember that her middleinitial is L? Probably a few as we both
use our middle initials in our public names. What about if it was ordered by middleNAME?
Again, no problem for me but who how many other people know her middle name is Lynn?
&lt;/p&gt;
&lt;p dir="ltr"&gt;
Then I started thinking about other queries and how they would play into the index
choice to answer to the question above. If I also wanted to support a query with the
predicate &lt;font face="Courier New"&gt;WHERE lastname = 'Randal'&lt;/font&gt;, then having the
left-most index key be anything other than lastname won't work so well. If the key
order was firstname, middleinitial, lastname then all the distinct lastname values
would be spread through the index rather than being together. The index might still
be used to satisfy the query if it's the lowest cost index to use. However, having
lastname be the leading&amp;nbsp;key probably wouldn't work very well for a query with
a predicate of &lt;font face="Courier New"&gt;WHERE firstname = 'Paul'&lt;/font&gt;&lt;font face="Verdana"&gt; -
that argues for having firstname be the left-most index key. &lt;/font&gt;
&lt;/p&gt;
&lt;p dir="ltr"&gt;
Which should I choose? I probably I can't have both in the same index, so maybe I'd
have TWO non-clustered indexes, to support both queries. The answer depends on how
often the various queries are used and the trade-off between how much of a performance
gain the non-clustered index would provide against the performance drop of having
to maintain it during DML operations.
&lt;/p&gt;
&lt;p dir="ltr"&gt;
I hear time and again about people adding a non-clustered index for every column in
the table, thinking that this will help - and my thinking is that&amp;nbsp;this is wrong
because these indexes can only satisfy a query where the only predicate is the column
being indexed. I ran this argument past Kimberly and she added that these indexes
could also be used if the column is chosen as the most selective in a multi-predicate
query, and no other index has a lower cost than that one (a slim chance usually).
Even what I though of as a &lt;em&gt;simple case&lt;/em&gt; has caveats!
&lt;/p&gt;
&lt;p dir="ltr"&gt;
So what's the point of this post? Well, I wanted to show how indexing for one very
simple query is pretty straightforward, but as soon as the number of different queries
grows, and the query predicates get more complicated, indexing becomes more complex.
You really have to know your workload and your data to&amp;nbsp;know which columns are&amp;nbsp;used,
in what combinations, and how often&amp;nbsp;- and then it helps to know how indexes are
costed and used so that you can make intelligent choices about which indexes to define.
&lt;/p&gt;
&lt;p dir="ltr"&gt;
This thought-exercise has really shown me that I didn't know how much I don't know
about indexes - I know precisely how they work at the Storage Engine level but not
too much about how they're &lt;em&gt;used&lt;/em&gt; by the Query Processor. I have new-found
respect for Kimberly's indexing expertise. Luckily she's teaching a class at Microsoft
called &lt;em&gt;Indexing For Performance&lt;/em&gt; next week - I think I'll attend :-)
&lt;/p&gt;
&lt;/font&gt;&lt;img width="0" height="0" src="http://www.sqlskills.com/blogs/paul/aggbug.ashx?id=d5d40d17-98dc-43c2-9c5a-07dcff170684" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a rel="nofollow" target="_blank" href="http://www.SQLskills.com"&gt;SQLskills.com&lt;/a&gt;. (c) Paul S. Randal. This feed is for personal, non-commercial use.</description>
      <link>http://www.sqlskills.com/blogs/paul/2008/05/14/HowHardIsItToPickTheRightNonclusteredIndexes.aspx</link>
      <source url="http://pipes.yahoo.com/pipes/pipe.info?_id=85142a7c17be56670fbddefa43f25c8d">SQLskills.com Aggregated Feed</source>
      <guid isPermaLink="False">http://www.sqlskills.com/blogs/paul/PermaLink,guid,d5d40d17-98dc-43c2-9c5a-07dcff170684.aspx</guid>
      <pubDate>Wed, 14 May 2008 11:13:04 GMT</pubDate>
    </item>
    <item>
      <title>SQL Injection</title>
      <description>&lt;p&gt;Every now and then I see sites where commands are concatenated and sent to database server.&lt;br /&gt;
The author must really trust the user inputs!&lt;/p&gt;
&lt;p&gt;For every system built this way, you can expect at least one attack with SQL injection. In some cases you might not be aware of the attack, and sometimes you are aware.&lt;/p&gt;
&lt;p&gt;Here is an example of a "friendly" attack, that just promotes a site and when you click the link you execute a javascript who knows do what?&lt;/p&gt;
&lt;p&gt;In this link &lt;font face="Arial"&gt;&lt;a href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=102737"&gt;http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=102737&lt;/a&gt;&lt;br /&gt;
and this &lt;a target="_blank" href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=101673"&gt;http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=101673&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;there are examples of SQL injection attacks.&lt;/p&gt;
&lt;p&gt;As I wrote in the first topic, "What if the attack could have encrypted all columns!".&lt;br /&gt;
That would be easy spotted in front-end application.&lt;/p&gt;
&lt;p&gt;But what if the attack had scrambled all date columns? How long time would it then take to discover the SQL Injection attack?&lt;/p&gt;
&lt;p&gt;I hope this learns all newbies, noobs and beginners to NEVER EVER concatenate string to send to database.&lt;br /&gt;
Always use parametrized queries as a first line of defence.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/60598.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=gOSFDH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=gOSFDH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=4BLXXH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=4BLXXH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=j3CzPh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=j3CzPh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=MaMMEh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=MaMMEh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=CkaSxH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=CkaSxH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=ca0GUH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=ca0GUH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=kYi5UH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=kYi5UH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/290052234" height="1" width="1" /&gt;</description>
      <link>http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~3/290052234/SQL-Injection.aspx</link>
      <source url="http://weblogs.sqlteam.com/mainfeed2.aspx">The SQLTeam.com Weblogs</source>
      <author>Peter Larsson</author>
      <dc:creator>Peter Larsson</dc:creator>
      <comments>http://weblogs.sqlteam.com/peterl/archive/2008/05/14/SQL-Injection.aspx#comment</comments>
      <guid isPermaLink="False">http://weblogs.sqlteam.com/peterl/archive/2008/05/14/SQL-Injection.aspx</guid>
      <pubDate>Wed, 14 May 2008 05:14:47 GMT</pubDate>
    </item>
    <item>
      <title>Identifying Performance Bottlenecks</title>
      <description>&lt;p&gt;Thanks to everyone who attended my "Identifying Performance Bottlenecks" session this morning at &lt;a target="_blank" href="http://www.sqlteach.com/"&gt;DevTeach/SQLTeach&lt;/a&gt;. As promised, &lt;a target="_blank" href="http://www.webbtechsolutions.com/downloads/SQLTeach_Identifying_Performance_Bottlenecks.zip"&gt;here is the PowerPoint slide deck&lt;/a&gt; I used during the presentation. &lt;/p&gt;
&lt;p&gt;Regarding the question of on the performance of LINQ, Bob Beauchemin recently posted a series of blogs entries on the topic. &lt;a target="_blank" href="http://www.sqlskills.com/blogs/bobb/"&gt;Here's a link&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;And &lt;a target="_blank" href="http://sqlblog.com/blogs/louis_davidson/archive/tags/Dynamic+Management+Objects/default.aspx"&gt;here's a link to series of posts on the Dynamic Management Views (DMVs)&lt;/a&gt; that Louis Davidson authored.&lt;/p&gt;
&lt;p&gt;Cheers! &lt;/p&gt;
&lt;p&gt;Joe&lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fjoew%2farchive%2f2008%2f05%2f14%2f60599.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fjoew%2farchive%2f2008%2f05%2f14%2f60599.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/joew/aggbug/60599.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=bZ51HH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=bZ51HH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=z3J5FH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=z3J5FH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=hqpqUh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=hqpqUh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=mpjYnh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=mpjYnh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=s5s7RH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=s5s7RH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=gLJeWH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=gLJeWH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=4G0QgH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=4G0QgH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/290256770" height="1" width="1" /&gt;</description>
      <link>http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~3/290256770/60599.aspx</link>
      <source url="http://weblogs.sqlteam.com/mainfeed2.aspx">The SQLTeam.com Weblogs</source>
      <author>Joe Webb</author>
      <dc:creator>Joe Webb</dc:creator>
      <comments>http://weblogs.sqlteam.com/joew/archive/2008/05/14/60599.aspx#comment</comments>
      <guid isPermaLink="False">http://weblogs.sqlteam.com/joew/archive/2008/05/14/60599.aspx</guid>
      <pubDate>Wed, 14 May 2008 04:47:51 GMT</pubDate>
    </item>
    <item>
      <title>Full-time MCTs...Less Value?</title>
      <description>&lt;div style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;&lt;strong&gt;&lt;u&gt;Do you find that fulltime MCTs (and other teachers) are somewhat limited in their value to students?&lt;/u&gt;&lt;/strong&gt; To me...&lt;u&gt;&lt;strong&gt;all teachers should be practicing in the REAL WORLD what they are educating others on!&lt;/strong&gt;&lt;/u&gt; Now before I get any further I can already hear the comments..."what about demos/labs"...Demos &amp;amp; Labs are HARDLY REAL WORLD! In college, I had much the same thoughts..."why is this guy teaching me if he’s so good and not out there DOING IT"? &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;Personally, I enjoy teaching and even more so I enjoy seeing others learn, but if I only lived in academia my value to any potential students/attendees would be more limited! Why?&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;1.&lt;span style="FONT:7pt 'Times New Roman';"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;"&gt;I could not relate the technology as well to real world uses and labs/demos&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;2.&lt;span style="FONT:7pt 'Times New Roman';"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;"&gt;I could not relate to students/attendees when discussing certain pros/cons of architectures or given technologies/platforms.&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;3.&lt;span style="FONT:7pt 'Times New Roman';"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;"&gt;The bulk (if not all) of my material would be based on others writings and/or probably a limited amount of my own research.&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;I am by no means saying fulltime MCTs and other teachers do not provide value but when compared to someone who does the actual job in the real world (assuming the real world teacher also has comparable teaching skills) there is &lt;strong&gt;&lt;u&gt;NO COMPARISON&lt;/u&gt;&lt;/strong&gt;! And I suppose that is the pro of being a fulltime teacher, your presentation etc. skills should be much better honed but look at the cost!&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;span style="FONT-SIZE:8pt;"&gt;That’s my 2&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:8pt;LINE-HEIGHT:115%;"&gt;Derek&lt;/span&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/derekc/aggbug/60597.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=mDu6oH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=mDu6oH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=9A5BTH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=9A5BTH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=LdlaMh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=LdlaMh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=5XaVFh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=5XaVFh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=2xyJWH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=2xyJWH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=ns9vHH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=ns9vHH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=wtWWwH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=wtWWwH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/289903843" height="1" width="1" /&gt;</description>
      <link>http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~3/289903843/60597.aspx</link>
      <source url="http://weblogs.sqlteam.com/mainfeed2.aspx">The SQLTeam.com Weblogs</source>
      <author>Derek Comingore</author>
      <dc:creator>Derek Comingore</dc:creator>
      <comments>http://weblogs.sqlteam.com/derekc/archive/2008/05/13/60597.aspx#comment</comments>
      <guid isPermaLink="False">http://weblogs.sqlteam.com/derekc/archive/2008/05/13/60597.aspx</guid>
      <pubDate>Tue, 13 May 2008 22:51:24 GMT</pubDate>
    </item>
    <item>
      <title>The Architecture Layer</title>
      <description>Contemporary software engineering models include many loosely-defined layers.  Database developers might help with other layers, but for the most part a database administrator&amp;#8217;s domain is the persistence layer.  

Presentation
Application
Business Logic
Persistence (also called Storage)

The Daily WTF has an article on The Mythical Business Layer makes the case for not separating the business layer and [...]</description>
      <link>http://www.pythian.com/blogs/1003/the-architecture-layer</link>
      <source url="http://www.pythian.com/blogs">Pythian Group Blog » SQL Server</source>
      <author>Sheeri Cabral</author>
      <dc:creator>Sheeri Cabral</dc:creator>
      <comments>http://www.pythian.com/blogs/1003/the-architecture-layer#comments</comments>
      <guid isPermaLink="False">http://www.pythian.com/blogs/1003/the-architecture-layer</guid>
      <pubDate>Tue, 13 May 2008 10:46:03 GMT</pubDate>
    </item>
    <item>
      <title>Lightning fast collapsed date ranges and missing date ranges</title>
      <description>&lt;div&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;The last two days I have been involved in a rather interesting discussion.&lt;br /&gt;
&lt;br /&gt;
The original poster wanted a fast way to get missing date ranges in a series of date pairs.&lt;br /&gt;
Naturally I posted the link to the Script Library topic &lt;a href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=88422"&gt;&lt;font color="#800080"&gt;http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=88422&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
Traditional T-SQL proved to be very inefficient. Even when using the CTE approch which proved to be second fastest and still 100 to 1,600 times slower!&lt;br /&gt;
&lt;br /&gt;
I started out with creating 1,000 date pairs with following code&lt;br /&gt;
&lt;span style="COLOR:black;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:'Courier New';"&gt;-- Prepare sample data&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;span style="COLOR:blue;"&gt;TABLE&lt;/span&gt; #ProcessCellAllocation&lt;br /&gt;
              &lt;span style="COLOR:gray;"&gt;(&lt;br /&gt;
&lt;/span&gt;                     AllocationID &lt;span style="COLOR:blue;"&gt;INT&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;IDENTITY&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;1&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; 1&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NOT&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;                     ProcessCell &lt;span style="COLOR:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;50&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NOT&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;                     DateFrom &lt;span style="COLOR:blue;"&gt;DATETIME&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NOT&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;                     DateTo &lt;span style="COLOR:blue;"&gt;DATETIME&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;br /&gt;
&lt;/span&gt;                     Seq &lt;span style="COLOR:blue;"&gt;INT&lt;br /&gt;
&lt;/span&gt;              &lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;INSERT&lt;/span&gt;        #ProcessCellAllocation&lt;br /&gt;
                &lt;span style="COLOR:gray;"&gt;(&lt;br /&gt;
&lt;/span&gt;                     ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;br /&gt;
&lt;/span&gt;                     DateFrom&lt;br /&gt;
                &lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;SELECT&lt;/span&gt;        &lt;span style="COLOR:blue;"&gt;TOP&lt;/span&gt; 10000&lt;br /&gt;
              &lt;span style="COLOR:blue;"&gt;CHAR&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;65 &lt;span style="COLOR:gray;"&gt;+&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;ABS&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;NEWID&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;()))&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;%&lt;/span&gt; 26&lt;span style="COLOR:gray;"&gt;),&lt;br /&gt;
&lt;/span&gt;              25000 &lt;span style="COLOR:gray;"&gt;+&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;ABS&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;NEWID&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;()))&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;%&lt;/span&gt; 25000&lt;br /&gt;
&lt;span style="COLOR:blue;"&gt;FROM&lt;/span&gt;          syscolumns &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; c1&lt;br /&gt;
&lt;span style="COLOR:gray;"&gt;CROSS&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;JOIN&lt;/span&gt;    syscolumns &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; c2&lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR:blue;"&gt;UPDATE&lt;/span&gt; #ProcessCellAllocation&lt;br /&gt;
&lt;span style="COLOR:blue;"&gt;SET&lt;/span&gt;    DateTo &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;DATEADD&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;DAY&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;ABS&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;CHECKSUM&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:fuchsia;"&gt;NEWID&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;()))&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;%&lt;/span&gt; 30&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; DateFrom&lt;span style="COLOR:gray;"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;CREATE&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;CLUSTERED&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;INDEX&lt;/span&gt; IX_DateFrom &lt;span style="COLOR:blue;"&gt;ON&lt;/span&gt; #ProcessCellAllocation &lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; DateFrom&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; DateTo&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;WITH&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;FILLFACTOR&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 95&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;The various techniques used to produce the wanted results were very inefficient.&lt;br /&gt;
Ultimately I come up with this idea, which produced both collapsed date ranges and missing date ranges.&lt;br /&gt;
&lt;br /&gt;
I started out with clearing a preexisting Seq columns. I can clear all records or only a certain range of ProcessCells.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;UPDATE &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;#ProcessCellAllocation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;SET&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;    Seq &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;  ProcessCell &lt;span style="COLOR:gray;"&gt;BETWEEN&lt;/span&gt; &lt;span style="COLOR:red;"&gt;'A'&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;AND&lt;/span&gt; &lt;span style="COLOR:red;"&gt;'F'&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;I then initialize some variables to speed up counting&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;DECLARE&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;     @Seq &lt;span style="COLOR:blue;"&gt;INT&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:36pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;@ProcessCell &lt;span style="COLOR:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;50&lt;span style="COLOR:gray;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:36pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;@DateFrom &lt;span style="COLOR:blue;"&gt;DATETIME&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:36pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;@DateTo &lt;span style="COLOR:blue;"&gt;DATETIME&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;      &lt;span style="COLOR:blue;"&gt;TOP&lt;/span&gt; 1&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN:0cm 0cm 0pt 36pt;TEXT-INDENT:36pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;@Seq &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; 0&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;@ProcessCell &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            @DateFrom &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; DateFrom&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            @DateTo &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;        #ProcessCellAllocation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;ORDER&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt; &lt;span style="COLOR:blue;"&gt;BY&lt;/span&gt;    ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;                        &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;DateFrom&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;This is only for initializing the documented trick I use, the Clustered Index Update.&lt;br /&gt;
The code used for the actual update looks like this&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;UPDATE&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;      #ProcessCellAllocation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;SET&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;         @Seq &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt;      &lt;span style="COLOR:blue;"&gt;CASE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              &lt;span style="COLOR:blue;"&gt;WHEN&lt;/span&gt; DateFrom &lt;span style="COLOR:gray;"&gt;&amp;gt;&lt;/span&gt; @DateTo &lt;span style="COLOR:blue;"&gt;THEN&lt;/span&gt; @Seq &lt;span style="COLOR:gray;"&gt;+&lt;/span&gt; 1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              &lt;span style="COLOR:blue;"&gt;WHEN&lt;/span&gt; ProcessCell &lt;span style="COLOR:gray;"&gt;&amp;gt;&lt;/span&gt; @ProcessCell &lt;span style="COLOR:blue;"&gt;THEN&lt;/span&gt; @Seq &lt;span style="COLOR:gray;"&gt;+&lt;/span&gt; 1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              &lt;span style="COLOR:blue;"&gt;ELSE&lt;/span&gt; @Seq&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                        &lt;span style="COLOR:blue;"&gt;END&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            @DateFrom &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;CASE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                                    &lt;span style="COLOR:blue;"&gt;WHEN&lt;/span&gt; DateTo &lt;span style="COLOR:gray;"&gt;&amp;gt;&lt;/span&gt; @DateTo &lt;span style="COLOR:blue;"&gt;THEN&lt;/span&gt; DateFrom&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                                    &lt;span style="COLOR:blue;"&gt;WHEN&lt;/span&gt; ProcessCell &lt;span style="COLOR:gray;"&gt;&amp;gt;&lt;/span&gt; @ProcessCell &lt;span style="COLOR:blue;"&gt;THEN&lt;/span&gt; DateFrom&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                                    &lt;span style="COLOR:blue;"&gt;ELSE&lt;/span&gt; @DateFrom&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                        &lt;span style="COLOR:blue;"&gt;END&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            @DateTo &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt;   &lt;span style="COLOR:blue;"&gt;CASE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                                    &lt;span style="COLOR:blue;"&gt;WHEN&lt;/span&gt; DateTo &lt;span style="COLOR:gray;"&gt;&amp;gt;&lt;/span&gt; @DateTo &lt;span style="COLOR:blue;"&gt;THEN&lt;/span&gt; DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                                    &lt;span style="COLOR:blue;"&gt;WHEN&lt;/span&gt; ProcessCell &lt;span style="COLOR:gray;"&gt;&amp;gt;&lt;/span&gt; @ProcessCell &lt;span style="COLOR:blue;"&gt;THEN&lt;/span&gt; DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                                    &lt;span style="COLOR:blue;"&gt;ELSE&lt;/span&gt; @DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                        &lt;span style="COLOR:blue;"&gt;END&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            Seq &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; @Seq&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            @ProcessCell &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; ProcessCell&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;Now all work is done, and we can either show the collapgsed date ranges with this&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:'Courier New';"&gt;-- Get the collapsed date ranges&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;      ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            &lt;span style="COLOR:fuchsia;"&gt;MIN&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;DateFrom&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; DateFrom&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            &lt;span style="COLOR:fuchsia;"&gt;MAX&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;DateTo&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;        #ProcessCellAllocation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;GROUP&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt; &lt;span style="COLOR:blue;"&gt;BY&lt;/span&gt;    ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            Seq&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;ORDER&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt; &lt;span style="COLOR:blue;"&gt;BY&lt;/span&gt;    Seq&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;Or we can get the missing date ranges with this&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:green;FONT-FAMILY:'Courier New';"&gt;-- Get the missing date ranges&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;SELECT&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            a&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            a&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;DateFrom&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            b&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;FROM&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;        &lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                  &lt;span style="COLOR:blue;"&gt;SELECT&lt;/span&gt;            ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              Seq&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              &lt;span style="COLOR:fuchsia;"&gt;MAX&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;DateTo&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; DateFrom&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                  &lt;span style="COLOR:blue;"&gt;FROM&lt;/span&gt;        #ProcessCellAllocation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                  &lt;span style="COLOR:blue;"&gt;GROUP&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;BY&lt;/span&gt;    ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              Seq&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            &lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; a&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:'Courier New';"&gt;INNER&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt; &lt;span style="COLOR:gray;"&gt;JOIN&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                  &lt;span style="COLOR:blue;"&gt;SELECT&lt;/span&gt;            ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              Seq&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              &lt;span style="COLOR:fuchsia;"&gt;MIN&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;DateFrom&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; DateTo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                  &lt;span style="COLOR:blue;"&gt;FROM&lt;/span&gt;        #ProcessCellAllocation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                  &lt;span style="COLOR:blue;"&gt;GROUP&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;BY&lt;/span&gt;    ProcessCell&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;                              Seq&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;            &lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;AS&lt;/span&gt; b &lt;span style="COLOR:blue;"&gt;ON&lt;/span&gt; b&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;ProcessCell &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; a&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;ProcessCell&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;WHERE&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:'Courier New';"&gt;       a&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;Seq &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; b&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;Seq &lt;span style="COLOR:gray;"&gt;-&lt;/span&gt; 1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="COLOR:blue;"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;BY   a&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;Seq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;This technique is very fast!&lt;br /&gt;
&lt;br /&gt;
For 1,000 date pairs the algorithm runs in 80 ms.&lt;br /&gt;
For 10,000 date pairs the algorithm runs in 360 ms.&lt;br /&gt;
For 100,000 date pairs the algorithm runs in 900 ms.&lt;br /&gt;
For 1,000,000 date pairs the algorithm runs in 2250 ms.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/60595.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=8Qp9ZH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=8Qp9ZH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=n5STrH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=n5STrH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=CzIUvh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=CzIUvh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=bdtuPh"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=bdtuPh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=rkQ6GH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=rkQ6GH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=umFggH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=umFggH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?a=vuvWPH"&gt;&lt;img src="http://feeds.feedburner.com/~f/SqlteamcomWeblogs?i=vuvWPH" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/289469805" height="1" width="1" /&gt;</description>
      <link>http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~3/289469805/Lightning-fast-collapsed-date-ranges-and-missing-date-ranges.aspx</link>
      <source url="http://weblogs.sqlteam.com/mainfeed2.aspx">The SQLTeam.com Weblogs</source>
      <author>Peter Larsson</author>
      <dc:creator>Peter Larsson</dc:creator>
      <comments>http://weblogs.sqlteam.com/peterl/archive/2008/05/13/Lightning-fast-collapsed-date-ranges-and-missing-date-ranges.aspx#comment</comments>
      <guid isPermaLink="False">http://weblogs.sqlteam.com/peterl/archive/2008/05/13/Lightning-fast-collapsed-date-ranges-and-missing-date-ranges.aspx</guid>
      <pubDate>Tue, 13 May 2008 10:16:41 GMT</pubDate>
    </item>
  </channel>
</rss>