<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.sqlserver.org.au/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>Transaction blog</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/default.aspx</link><description /><dc:language>en-AU</dc:language><generator>CommunityServer 2.0 (Build: 60217.2664)</generator><item><title>Things you know now</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2009/03/16/1488.aspx</link><pubDate>Mon, 16 Mar 2009 05:33:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1488</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1488.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1488</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.sqlskills.com/BLOGS/PAUL/post/Things-you-know-now.aspx"&gt;Paul Randal&lt;/A&gt; has called me out today in the&amp;nbsp;"Things you know now" series of blogs that is presently moving through the SQL Server blogsphere. I'm usually in awe of &lt;A href="http://www.sqlskills.com/BLOGS/PAUL/"&gt;Paul&lt;/A&gt;'s ability to churn interesting information out at a fast pace&amp;nbsp;about SQL Server (&amp;amp; life!!) but for just this once, I'm going to try &amp;amp; keep up with him and publish today if possible, keep the momentum going etc..&lt;/P&gt;
&lt;P&gt;The idea behind "Things you know now" is to share things we have learned that we didn't know early on in our careers. Clearly I haven't learned not to respond to things like this yet, so here goes! &lt;/P&gt;
&lt;P&gt;There are two things that spring to mind - &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;* Question everything you read&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Years ago, I accepted most of what I read as gospel. If the material&amp;nbsp;was published in a book it HAD to be accurate, right? My first revelation that this might not be true came ~17 years ago when&amp;nbsp;a friend pointed out that a history book I was reading at the time was authored by&amp;nbsp;a notorious WWII holocaust denier. I wasn't far into the book when my friend pointed this out, but as&amp;nbsp;I read on I realised that I&amp;nbsp;could easily&amp;nbsp;have read the entire book without realising the bias of its author.&lt;/P&gt;
&lt;P&gt;No IT author deserves to be compared with THAT author (who doesn't deserve to be mentioned) but it is important to recognise that all authors have their strengths, weaknesses &amp;amp; biases and their work&amp;nbsp;sometimes reflects this. I'm not saying that most IT books are rubbish - just that you do need to read between the lines sometimes &amp;amp; recognise that not every author actually has significant experience in everything he / she writes about. Maintaining a healthy level of skepticism also helps you to think through what other possibilities there might be, other than the "truth" you're reading &amp;amp; this can be a great foundation for creative thinking.&lt;/P&gt;
&lt;P&gt;Of course there is much to be learned from reading &amp;amp; two of the best in the SQL Server business&amp;nbsp;are Paul &amp;amp; his lovely wife Kim! I encourage all to read their work.. AND question it (c:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;* Don't love computers too much - they won't love you back.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Computers are interesting things; SQL Server&amp;nbsp;particularly so -&amp;nbsp;especially from a performance tuning point of view! There's great satisfaction to be gained from helping others solve problems they're struggling with &amp;amp; I have enjoyed doing this enormously since opening my business "MyDBA" 5 years ago where we specialise in this field. Coming home from a day where you've made somebody's database system or query run hundreds of times faster is, indeed, very satisfying.&lt;/P&gt;
&lt;P&gt;Unfortunately, staying at work late into the evening to tune more queries&amp;nbsp;can also be tempting.&amp;nbsp;Writing&amp;nbsp;high quality&amp;nbsp;programs can similarly stimulate the&amp;nbsp;endorphins!&lt;/P&gt;
&lt;P&gt;It is easy to get addicted to computers, especially if you're that very common kind of IT person who takes a lot of pride in what you do. It's a complicated business &amp;amp; despite Microsoft's best endeavours to make things simple for us, it just ain't so in so many cases.&lt;/P&gt;
&lt;P&gt;It's important to recognise that computers will never give you back the time you give to them &amp;amp; other things in your life WILL suffer if you over-indulge.&lt;/P&gt;
&lt;P&gt;Somebody who was retiring from a very active life spent in newsgroups once (back in the year ~2000) posted to the public SQL Server newsgroups "Don't love computers too much - they won't love you back" &amp;amp; I think this is really good advice, so I'm repeating it here. I have spent many, many late nights working with computers &amp;amp; my personality has hardened as a result. I've had some fantastic&amp;nbsp;girls in my life but have never married,&amp;nbsp;most probably&amp;nbsp;due to addiction with going to extremes in my professional life.&lt;/P&gt;
&lt;P&gt;Balance your life - take pride in your IT work but also recognise that the tools we work with aren't perfect so there's no reason to think others can expect perfection from you (try writing the perfect error handler, or the SQL program with perfect efficiency). Do your best &amp;amp; be as proud of going home as you are in the quality of your work.&lt;/P&gt;
&lt;P&gt;Hopefully this&amp;nbsp;has been&amp;nbsp;somewhat useful! &lt;/P&gt;
&lt;P&gt;I hereby tag the following Aussie SQL people: &lt;A href="http://geekswithblogs.net/darrengosbell/Default.aspx"&gt;Darren Gosbell&lt;/A&gt;, &lt;A href="http://msmvps.com/blogs/robfarley/"&gt;Rob Farley&lt;/A&gt; and &lt;A href="http://mitch-wheat.blogspot.com/"&gt;Mitch Wheat&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Definitely time to go home too! (c:&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1488" width="1" height="1"&gt;</description></item><item><title>Conditional Reporting in SQL Reports (Dave Does Data)</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2009/02/17/1464.aspx</link><pubDate>Tue, 17 Feb 2009 09:13:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1464</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1464.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1464</wfw:commentRss><description>&lt;P&gt;David Lean (SQL Server Technology Specialist at Microsoft Australia for many years) began a highly informative SQL Server blog last year - "Dave Does Data": &lt;A href="http://blogs.msdn.com/davidlean"&gt;http://blogs.msdn.com/davidlean&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;In a monster post today, Dave documents the techniques&amp;nbsp;he uses to colour Charts (&amp;amp; Tables) in Reporting Services. It's a fairly comprehensive guide. ~54 screen pages over 4 posts that will help anyone trying to look as good as Dave does with SSRS reports!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/davidlean/archive/2009/02/17/sql-reporting-how-to-conditional-color-1-4-the-basics-report-expressions-custom-code.aspx"&gt;http://blogs.msdn.com/davidlean/archive/2009/02/17/sql-reporting-how-to-conditional-color-1-4-the-basics-report-expressions-custom-code.aspx&lt;/A&gt; &lt;BR&gt;&lt;A href="http://blogs.msdn.com/davidlean/archive/2009/02/17/sql-reporting-how-to-conditional-color-2-4-functions-for-tables-charts.aspx"&gt;http://blogs.msdn.com/davidlean/archive/2009/02/17/sql-reporting-how-to-conditional-color-2-4-functions-for-tables-charts.aspx&lt;/A&gt; &lt;BR&gt;&lt;A href="http://blogs.msdn.com/davidlean/archive/2009/02/17/sql-reporting-how-to-conditional-color-3-4-tint-shade-functions.aspx"&gt;http://blogs.msdn.com/davidlean/archive/2009/02/17/sql-reporting-how-to-conditional-color-3-4-tint-shade-functions.aspx&lt;/A&gt; &lt;BR&gt;&lt;A href="http://blogs.msdn.com/davidlean/archive/2009/01/30/sql-reporting-how-to-color-coding-based-on-data-values-for-tables-charts-1-n.aspx"&gt;http://blogs.msdn.com/davidlean/archive/2009/01/30/sql-reporting-how-to-color-coding-based-on-data-values-for-tables-charts-1-n.aspx&lt;/A&gt; &lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please pass the&amp;nbsp;word along..&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1464" width="1" height="1"&gt;</description></item><item><title>Duplicate indexes</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/04/29/1233.aspx</link><pubDate>Tue, 29 Apr 2008 01:42:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1233</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1233.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1233</wfw:commentRss><description>&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#000000 size=2&gt;SQL Server curiously allows duplicate indexes to be created on a table with precisely identical definitions.&amp;nbsp;There is absolutely zero benefit from this practise yet significant harm can result - including:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;Performance degradation from maintenance overhead during updates, inserts &amp;amp; deletes&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT size=2&gt;Increased transaction log activity (filling tlogs, disks &amp;amp; breaking Log Shipping)&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT size=2&gt;Increased backup sizes (indexes make backups bigger, requiring more disk space, longer maintenance windows &amp;amp; consuming more energy during backups)&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#000000 size=2&gt;Other major RDBMS platforms don't allow this nonsense yet MS apparently don't consider fixing this terribly important, given &lt;A href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=313227"&gt;their response in this Connect item&lt;/A&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#000000 size=2&gt;I began a discussion about this topic in the SQL MVP dicussion forum last week &amp;amp; I think there was a fair consensus that something should be done. Fellow MVPs who work in performance tuning commented that they&amp;nbsp;encounter duplicate indexes&amp;nbsp;commonly in their work (I see it regularly). If you agree MS should do something to fix this, I encourage you to vote on this Connect item to try &amp;amp; influence change:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;A href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=313227"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=313227&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;If you are wondering whether you have any duplicate indexes on your system, try this procedure out. Any duplicates listed should almost certainly be removed (unless they're explicitly referred to in query index&amp;nbsp;hints, which would break if you remove the named indexes)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;To use this proc, create it in the master database then call it using this syntax from within your db:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;exec&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;sp_MSForEachTable&lt;/SPAN&gt; &lt;SPAN&gt;'usp_duplicateindexes''?'''&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=2&gt;Here's the proc script:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;USE&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;master&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;GO&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;procedure&lt;/SPAN&gt; [dbo]&lt;SPAN&gt;.&lt;/SPAN&gt;[usp_duplicateindexes] &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;@tablename &lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;255&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;as&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;set&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;nocount&lt;/SPAN&gt; &lt;SPAN&gt;on&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; @tablename&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--dump sp_helpindex into temp table&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;object_id&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'tempdb..#helpindex'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; 0 &lt;SPAN&gt;drop&lt;/SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex &lt;SPAN&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;index_name &lt;SPAN&gt;varchar&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;900&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;not&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;/SPAN&gt; &lt;SPAN&gt;primary&lt;/SPAN&gt; &lt;SPAN&gt;key&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; index_description &lt;SPAN&gt;varchar&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; index_keys &lt;SPAN&gt;varchar&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;insert&lt;/SPAN&gt;&lt;SPAN&gt; #helpindex &lt;SPAN&gt;exec&lt;/SPAN&gt; &lt;SPAN&gt;sp_helpindex&lt;/SPAN&gt; @tablename&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--add [inccols] to temp table &amp;amp; cursor over output, adding included col defs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;alter&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex &lt;SPAN&gt;add&lt;/SPAN&gt; inccols &lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;declare&lt;/SPAN&gt;&lt;SPAN&gt; cr &lt;SPAN&gt;cursor&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; si&lt;SPAN&gt;.&lt;/SPAN&gt;name&lt;SPAN&gt;,&lt;/SPAN&gt; sc&lt;SPAN&gt;.&lt;/SPAN&gt;name&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; sysobjects so&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;join&lt;/SPAN&gt;&lt;SPAN&gt; sysindexes si &lt;SPAN&gt;on&lt;/SPAN&gt; so&lt;SPAN&gt;.&lt;/SPAN&gt;id &lt;SPAN&gt;=&lt;/SPAN&gt; si&lt;SPAN&gt;.&lt;/SPAN&gt;id&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;join&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;sys.index_columns&lt;/SPAN&gt; ic &lt;SPAN&gt;on&lt;/SPAN&gt; si&lt;SPAN&gt;.&lt;/SPAN&gt;id &lt;SPAN&gt;=&lt;/SPAN&gt; ic&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;object_id&lt;/SPAN&gt; &lt;SPAN&gt;and&lt;/SPAN&gt; si&lt;SPAN&gt;.&lt;/SPAN&gt;indid &lt;SPAN&gt;=&lt;/SPAN&gt; ic&lt;SPAN&gt;.&lt;/SPAN&gt;index_id&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;join&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;sys.columns&lt;/SPAN&gt; sc &lt;SPAN&gt;on&lt;/SPAN&gt; ic&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;object_id&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; sc&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;object_id&lt;/SPAN&gt; &lt;SPAN&gt;and&lt;/SPAN&gt; ic&lt;SPAN&gt;.&lt;/SPAN&gt;column_id &lt;SPAN&gt;=&lt;/SPAN&gt; sc&lt;SPAN&gt;.&lt;/SPAN&gt;column_id&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;where&lt;/SPAN&gt;&lt;SPAN&gt; so&lt;SPAN&gt;.&lt;/SPAN&gt;xtype &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;'U'&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; so&lt;SPAN&gt;.&lt;/SPAN&gt;name &lt;SPAN&gt;=&lt;/SPAN&gt; @tablename&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; ic&lt;SPAN&gt;.&lt;/SPAN&gt;is_included_column &lt;SPAN&gt;=&lt;/SPAN&gt; 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;order&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;by&lt;/SPAN&gt; si&lt;SPAN&gt;.&lt;/SPAN&gt;name&lt;SPAN&gt;,&lt;/SPAN&gt; ic&lt;SPAN&gt;.&lt;/SPAN&gt;index_column_id&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;declare&lt;/SPAN&gt;&lt;SPAN&gt; @siname &lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;),&lt;/SPAN&gt; @scname &lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;open&lt;/SPAN&gt;&lt;SPAN&gt; cr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;fetch&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;next&lt;/SPAN&gt; &lt;SPAN&gt;from&lt;/SPAN&gt; cr &lt;SPAN&gt;into&lt;/SPAN&gt; @siname&lt;SPAN&gt;,&lt;/SPAN&gt; @scname&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;while&lt;/SPAN&gt; &lt;SPAN&gt;@@fetch_status&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;update&lt;/SPAN&gt; #helpindex &lt;SPAN&gt;set&lt;/SPAN&gt; inccols &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;isnull&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;inccols &lt;SPAN&gt;,&lt;/SPAN&gt; &lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;+&lt;/SPAN&gt; @scname &lt;SPAN&gt;+&lt;/SPAN&gt; &lt;SPAN&gt;', '&lt;/SPAN&gt; &lt;SPAN&gt;where&lt;/SPAN&gt; index_name &lt;SPAN&gt;=&lt;/SPAN&gt; @siname&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;fetch&lt;/SPAN&gt; &lt;SPAN&gt;next&lt;/SPAN&gt; &lt;SPAN&gt;from&lt;/SPAN&gt; cr &lt;SPAN&gt;into&lt;/SPAN&gt; @siname&lt;SPAN&gt;,&lt;/SPAN&gt; @scname&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;update&lt;/SPAN&gt;&lt;SPAN&gt; #helpindex &lt;SPAN&gt;set&lt;/SPAN&gt; inccols &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;left(&lt;/SPAN&gt;inccols&lt;SPAN&gt;,&lt;/SPAN&gt; &lt;SPAN&gt;datalength&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;inccols&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt; 2&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;where&lt;/SPAN&gt; &lt;SPAN&gt;right(&lt;/SPAN&gt;inccols&lt;SPAN&gt;,&lt;/SPAN&gt; 2&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;', '&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;close&lt;/SPAN&gt;&lt;SPAN&gt; cr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;deallocate&lt;/SPAN&gt;&lt;SPAN&gt; cr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--dump duplicates into second temp table &amp;amp; pump results if there are any&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;object_id&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'tempdb..#helpindex2'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; 0 &lt;SPAN&gt;drop&lt;/SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex2 &lt;SPAN&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;index_name &lt;SPAN&gt;varchar&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;900&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;not&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;/SPAN&gt; &lt;SPAN&gt;primary&lt;/SPAN&gt; &lt;SPAN&gt;key&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; index_description &lt;SPAN&gt;varchar&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; index_keys &lt;SPAN&gt;varchar&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; inccols &lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;1000&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;insert&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;into&lt;/SPAN&gt; #helpindex2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;index_name&lt;SPAN&gt;,&lt;/SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;index_description&lt;SPAN&gt;,&lt;/SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;index_keys&lt;SPAN&gt;,&lt;/SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;inccols&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; #helpindex hi&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;join&lt;/SPAN&gt;&lt;SPAN&gt; #helpindex h2 &lt;SPAN&gt;on&lt;/SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;index_keys&lt;SPAN&gt;=&lt;/SPAN&gt;h2&lt;SPAN&gt;.&lt;/SPAN&gt;index_keys&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;index_description&lt;SPAN&gt;=&lt;/SPAN&gt;h2&lt;SPAN&gt;.&lt;/SPAN&gt;index_description&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt; hi&lt;SPAN&gt;.&lt;/SPAN&gt;index_name&lt;SPAN&gt;&amp;lt;&amp;gt;&lt;/SPAN&gt;h2&lt;SPAN&gt;.&lt;/SPAN&gt;index_name&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;@@rowcount&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; @tablename &lt;SPAN&gt;as&lt;/SPAN&gt; "tablename"&lt;SPAN&gt;,&lt;/SPAN&gt; &lt;SPAN&gt;*&lt;/SPAN&gt; &lt;SPAN&gt;from&lt;/SPAN&gt; #helpindex2 &lt;SPAN&gt;order&lt;/SPAN&gt; &lt;SPAN&gt;by&lt;/SPAN&gt; index_name&lt;SPAN&gt;,&lt;/SPAN&gt; index_keys&lt;SPAN&gt;,&lt;/SPAN&gt; inccols&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--cleanup temp objects&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;object_id&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'tempdb..#helpindex2'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; 0 &lt;SPAN&gt;drop&lt;/SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;object_id&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'tempdb..#helpindex'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; 0 &lt;SPAN&gt;drop&lt;/SPAN&gt; &lt;SPAN&gt;table&lt;/SPAN&gt; #helpindex&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1233" width="1" height="1"&gt;</description></item><item><title>Which query is scanning that index?</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/04/27/1229.aspx</link><pubDate>Sun, 27 Apr 2008 11:05:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1229</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1229.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1229</wfw:commentRss><description>&lt;P&gt;SQL 2005's db_dm_index_usage_stats DMV allows DBAs to analyse how often indexes are being used (or not used), including individual counts for seeks, scans &amp;amp; lookups on each index in your database. I was thrilled when I first saw this DMV as there was previously no way to determine whether indexes&amp;nbsp;weren't being used &amp;amp; could be safely removed&amp;nbsp;from a table without risk of queries suddenly full scanning the table &amp;amp; bringing a system's performance to its knees.&lt;/P&gt;
&lt;P&gt;Another useful metric reported by db_dm_index_usage_stats is its user_scans column. This reports how many times each index has been fully scanned without a filter predicate&amp;nbsp;(not range scanned). Full scans are&amp;nbsp;usually bad&amp;nbsp;from a performance perspective so it is useful to know whether you have any&amp;nbsp;indexes that are being fully&amp;nbsp;scanned.&lt;/P&gt;
&lt;P&gt;Even more useful would be to know which QUERIES are scanning those indexes so you could do something about tuning them. Unfortunately, db_dm_index_usage_stats doesn't quite go this far but I recently decided to try &amp;amp; develop a script to work this out. After scratching around the various performance DMVs &amp;amp; not getting very far, I decided to post a question to the SQL MVP discussion forum.&lt;/P&gt;
&lt;P&gt;Thankfully, an ex SQL MVP who now works for Microsoft on the SQL dev team - Umachandar Jayachandran - came up with&amp;nbsp;this innovative&amp;nbsp;approach:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=MsoNormal&gt;&lt;SPAN&gt;with&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;xmlnamespaces&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'http://schemas.microsoft.com/sqlserver/2004/07/showplan'&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; s&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;top&lt;/SPAN&gt; 50 st&lt;SPAN&gt;.&lt;/SPAN&gt;text&lt;SPAN&gt;,&lt;/SPAN&gt; qp&lt;SPAN&gt;.&lt;/SPAN&gt;query_plan&lt;SPAN&gt;,&lt;/SPAN&gt; qs&lt;SPAN&gt;.&lt;/SPAN&gt;ec &lt;SPAN&gt;as&lt;/SPAN&gt; exec_count&lt;SPAN&gt;,&lt;/SPAN&gt; qs&lt;SPAN&gt;.&lt;/SPAN&gt;tlr &lt;SPAN&gt;as&lt;/SPAN&gt; total_reads&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt; s&lt;SPAN&gt;.&lt;/SPAN&gt;sql_handle&lt;SPAN&gt;,&lt;/SPAN&gt; s&lt;SPAN&gt;.&lt;/SPAN&gt;plan_handle&lt;SPAN&gt;,&lt;/SPAN&gt; &lt;SPAN&gt;max&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;s&lt;SPAN&gt;.&lt;/SPAN&gt;execution_count&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; ec&lt;SPAN&gt;,&lt;/SPAN&gt; &lt;SPAN&gt;max&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;s&lt;SPAN&gt;.&lt;/SPAN&gt;total_logical_reads&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; tlr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;sys.dm_exec_query_stats&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; s&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;where&lt;/SPAN&gt; s&lt;SPAN&gt;.&lt;/SPAN&gt;max_logical_reads &lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; 100&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;group&lt;/SPAN&gt; &lt;SPAN&gt;by&lt;/SPAN&gt; s&lt;SPAN&gt;.&lt;/SPAN&gt;sql_handle&lt;SPAN&gt;,&lt;/SPAN&gt; s&lt;SPAN&gt;.&lt;/SPAN&gt;plan_handle&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; qs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;cross&lt;/SPAN&gt; &lt;SPAN&gt;apply&lt;/SPAN&gt; sys.dm_exec_query_plan&lt;SPAN&gt;(&lt;/SPAN&gt;qs&lt;SPAN&gt;.&lt;/SPAN&gt;plan_handle&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; qp&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;cross&lt;/SPAN&gt; &lt;SPAN&gt;apply&lt;/SPAN&gt; sys.dm_exec_sql_text&lt;SPAN&gt;(&lt;/SPAN&gt;qs&lt;SPAN&gt;.&lt;/SPAN&gt;sql_handle&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; st&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;cross&lt;/SPAN&gt; &lt;SPAN&gt;apply&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt; &lt;SPAN&gt;distinct&lt;/SPAN&gt; relop&lt;SPAN&gt;.&lt;/SPAN&gt;value&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'@Index'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;'nvarchar(130)'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; IndexRef&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; qp&lt;SPAN&gt;.&lt;/SPAN&gt;query_plan&lt;SPAN&gt;.&lt;/SPAN&gt;nodes&lt;SPAN&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;N&lt;SPAN&gt;'//s:Batch/s:Statements/s:StmtSimple/s:QueryPlan[1]//&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;s:RelOp[@PhysicalOp = ("Index Scan")]/*[local-name() = ("IndexScan")]/&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;s:Object[@Database = ("[DBNameHere]") &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;and @Table = ("[TableNameHere]") &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;and @Index = ("[IndexNameHere]")]'&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; ro&lt;SPAN&gt;(&lt;/SPAN&gt;relop&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; r&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Notice that this query leverages three performance DMVs:&lt;/P&gt;
&lt;P&gt;* dm_exec_query_stats - identifies base query performance stats&lt;/P&gt;
&lt;P&gt;* dm_exec_query_plan - cross joined to aggregated view of dm_query_stats to pick up the XML query plan for each query.&lt;/P&gt;
&lt;P&gt;* dm_exec_sql_text - also cross joined to pick up each sql statement.&lt;/P&gt;
&lt;P&gt;The innovative part of this query is the way it uses XQuery syntax to interrogate the XML typed query_plan column from dm_exec_query_plan, traversing the XML Showplan structure of the query_plan column's nodes collection. It starts at the Batch element, navigating through Statements/StmtSimple/QueryPlan before searching through RelOp elements for one with PhysicalOp attribute =&amp;nbsp;"Index Scan" and an&amp;nbsp;IndexScan element with&amp;nbsp;a child Object element containing the required&amp;nbsp;DBname, TableName &amp;amp; IndexName. This sounds like quite a mouthful, but if you compare the above sentence with&amp;nbsp;some XML output from a query plan which scans an index you should be able to follow the XML traversal fairly easily.&lt;/P&gt;
&lt;P&gt;Behind the scenes, this query is actually trawling the procedure cache, performing the above parse operation on every plan in the cache. On systems with large caches (10s of Gb) this might take minutes, but this shouldn't result in a significant performance degradation as the scan is non-blocking &amp;amp; although it works a single CPU hard, it shouldn't consume multi CPUs (it hasn't in my testing so far at least). The filter on max_logical_reads attempts to limit the number of plans parsed. Whilst I have set the filter to 100 reads here, you might experiment with this based on the size of index scans you're evaluating.&amp;nbsp;There's no&amp;nbsp;point parsing query plans that don't have a maximum logical reads count at least the same size as the index scan. Setting this filter to a size close to the number of pages your scanned index is using for storage will usually eliminate the&amp;nbsp;majority of smaller plans within the cache&amp;nbsp;from being XML parsed.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Keep in mind that this query only works with execution plans currently cached in the procedure cache. This is a consequence of using these DMVs which are limited to accessing contents of the current cache. Because the procedure cache is fairly transient, results may vary if the system is under memory pressure or if you restart SQL Server regularly, or manually clear procedure cache (eg by using dbcc freeproccache).&lt;/P&gt;
&lt;P&gt;Another limitation of this query is that it only shows stored procedures, without showing the specific statements within stored procedures that are scanning the index. This shouldn't be too hard to work out by looking at the stored proc code, but other DMVs can help zero in on the actual statements. I'll try &amp;amp; improve this aspect of the&amp;nbsp;code when time permits.&lt;/P&gt;
&lt;P&gt;Thanks so much UC for your help with this valuable script! (c:&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1229" width="1" height="1"&gt;</description><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1002.aspx">SQL Server - Scripts</category><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1005.aspx">SQL Server - Technical</category></item><item><title>update to usp_helpindexusagestats</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/04/18/1222.aspx</link><pubDate>Thu, 17 Apr 2008 15:04:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1222</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1222.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1222</wfw:commentRss><description>&lt;P&gt;Here's an update to the utility SP [usp_helpindexusagestats] I posted a few weeks back, in response to a comment from &lt;A href="http://mitch-wheat.blogspot.com/"&gt;Mitch Wheat&lt;/A&gt; that he was receiving empty result sets, which could have occurred if the original version was run against a system with an empty cache for the db_dm_index_usage_stats() DMV. This version outer joins output from the DMV against output from&amp;nbsp;MS shipped [sp_helpindex] vs the original version's&amp;nbsp;inner join approach, which most likely explains the experience Mitch had the original version.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#0000ff size=3&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;create&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;procedure&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; [dbo]&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;[usp_helpindexusagestats]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;@tablename &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;as&lt;/P&gt;
&lt;P&gt;set&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;nocount&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=3&gt;
&lt;P&gt;--collect output from system supplied [sp_helpindex]&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;if&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;object_id&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT color=#ff0000 size=3&gt;'tempdb..#helpindex'&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; 0 &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;drop&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;table&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; #helpindex&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;create&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;table&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; #helpindex &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;
&lt;P&gt;index_name &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;not&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;null&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;primary&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;key&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt; index_description &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;null&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt; index_keys &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;null)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;insert&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; #helpindex &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;exec&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#800000 size=3&gt;sp_helpindex&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; @tablename&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;alter&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;table&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; #helpindex &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;add&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; inccols &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;null&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=3&gt;
&lt;P&gt;--cursor over output, adding included columns&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;declare&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; cr &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;cursor&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;for&lt;/P&gt;
&lt;P&gt;select&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;name&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sc&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;name&lt;/P&gt;
&lt;P&gt;from&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; sysobjects so&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;join&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sysindexes si &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; so&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;id &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;id&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;join&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=3&gt;sys.index_columns&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ic &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;id &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ic&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;object_id&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;and&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;indid &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ic&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;index_id&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;join&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=3&gt;sys.columns&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sc &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ic&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;object_id&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sc&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;object_id&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;and&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ic&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;column_id &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sc&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;column_id&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;where&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; so&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;xtype &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=3&gt;'U'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;and&lt;/FONT&gt;&lt;FONT size=3&gt; so&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;name&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT size=3&gt; @tablename&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;and&lt;/FONT&gt;&lt;FONT size=3&gt; ic&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;is_included_column &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT size=3&gt; 1&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;order&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;by&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;name&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ic&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;index_column_id&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;declare&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; @siname &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;),&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; @scname &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;varchar&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;1000&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;open&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; cr&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;fetch&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; next &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;from&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; cr &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;into&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; @siname&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; @scname&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;while&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;@@fetch_status&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; 0&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;begin&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;update&lt;/FONT&gt;&lt;FONT size=3&gt; #helpindex &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;set&lt;/FONT&gt;&lt;FONT size=3&gt; inccols &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;isnull&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT size=3&gt;inccols &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=3&gt;''&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;+&lt;/FONT&gt;&lt;FONT size=3&gt; @scname &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;+&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=3&gt;', '&lt;/FONT&gt;&lt;FONT size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;where&lt;/FONT&gt;&lt;FONT size=3&gt; index_name &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT size=3&gt; @siname&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;fetch&lt;/FONT&gt;&lt;FONT size=3&gt; next &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;from&lt;/FONT&gt;&lt;FONT size=3&gt; cr &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;into&lt;/FONT&gt;&lt;FONT size=3&gt; @siname&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt; @scname&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;end&lt;/P&gt;
&lt;P&gt;update&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; #helpindex &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;set&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; inccols &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;left(&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;inccols&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;datalength&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;(&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;inccols&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;-&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; 2&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;where&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;right(&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;inccols&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; 2&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;)&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=3&gt;', '&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;close&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; cr&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;deallocate&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; cr&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=3&gt;
&lt;P&gt;--return output, joining index usage stats DMV output&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;select&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; hi&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;index_name&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; hi&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;index_description&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; hi&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;index_keys&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; hi&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;inccols &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;as&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; included_columns&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ius&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;index_id&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; user_seeks&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; user_scans&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; user_lookups&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; user_updates&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; last_user_seek&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; last_user_scan&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;,&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; last_user_lookup&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;
&lt;P&gt;from&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; #helpindex hi&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;join&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sysindexes si &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;name&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; hi&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;index_name &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;collate&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; database_default&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;left&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;join&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; sysobjects so &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;id &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; so&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;id&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;left&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;join&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#008000 size=3&gt;sys.dm_db_index_usage_stats&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ius &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;on&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ius&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;object_id&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;id &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;
&lt;P&gt;and&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ius&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;index_id &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; si&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;indid &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;and&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; ius&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;.&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt;database_id &lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=3&gt;db_id&lt;/FONT&gt;&lt;FONT color=#808080 size=3&gt;()&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=3&gt;drop&lt;/FONT&gt;&lt;FONT color=#000000 size=3&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=3&gt;table&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; #helpindex&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1222" width="1" height="1"&gt;</description><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1002.aspx">SQL Server - Scripts</category><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1005.aspx">SQL Server - Technical</category></item><item><title>How SQL Server could help save the environment..</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/04/04/1207.aspx</link><pubDate>Thu, 03 Apr 2008 15:36:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1207</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1207.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1207</wfw:commentRss><description>&lt;P&gt;Millions of database backups are performed every day &amp;amp; night around the world, consuming mountains of disk space &amp;amp; generating massive levels of power consumption as enormous numbers of bytes are copied to disk, then to tape or other removable media.&lt;/P&gt;
&lt;P&gt;Assuming something like ~25% &amp;gt; 50% of the data contained within an average database relates to indexes (the ratio is often mugh higher), an option to exclude indexes from database backups would&amp;nbsp;make it&amp;nbsp;possible to reduce the amount of data required to perform backups, in turn reducing backup time &amp;amp; energy consumed by backup operations. I don't know how to go about estimating how much time &amp;amp; power could be saved from such a feature, but surely it would have to be huge.&lt;/P&gt;
&lt;P&gt;Because indexes are only re-sorted copies of table columns, no loss in data integrity results from eliminating index data from backups, so I decided to register a feedback item&amp;nbsp;on Microsoft's "Connect" website here:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=331220"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=331220&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The benefits from Microsoft including an option to eliminate index data from full database backups include:&lt;/P&gt;
&lt;P&gt;(a) Significantly faster backups&lt;/P&gt;
&lt;P&gt;(b) Reduced disk space&lt;/P&gt;
&lt;P&gt;(c) Reduced energy consumption (less data copied to millions of daily backups around the world translates to less disk head movement &amp;amp; therefore less energy spent on backups)&lt;/P&gt;
&lt;P&gt;Of course, any such feature should be optional as some will prefer to continue backing up index data.&lt;/P&gt;
&lt;P&gt;If you agree with this feature request &amp;amp; would like to see Microsoft add it to a future version of SQL Server, please record a vote on the connect item link above!&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1207" width="1" height="1"&gt;</description></item><item><title>usp_helpindexusagestats: a helpfull index analysis script</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/02/23/1184.aspx</link><pubDate>Fri, 22 Feb 2008 22:32:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1184</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1184.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1184</wfw:commentRss><description>&lt;P&gt;Here's an index analysis script I put together recently which combines output from sp_helpindex (also with included columns, which the regular sp_helpindex lacks) and the dm_db_index_usage_stats() DMV.&lt;/P&gt;
&lt;P&gt;I use this script primarily to identify which indexes are sub-sets of each other &amp;amp; can therefore be consolidated into a single index with the added information about usage patterns so I also have an understanding of how often the indexes are being accessed by queries.&lt;/P&gt;
&lt;P&gt;create procedure usp_helpindexusagestats&lt;BR&gt;&amp;nbsp; @tablename varchar(1000)&lt;BR&gt;as&lt;/P&gt;
&lt;P&gt;set nocount on&lt;/P&gt;
&lt;P&gt;if object_id('tempdb..#helpindex') &amp;gt; 0 drop table #helpindex&lt;/P&gt;
&lt;P&gt;create table #helpindex (&lt;BR&gt;&amp;nbsp;&amp;nbsp; index_name varchar (1000) not null primary key&lt;BR&gt;&amp;nbsp;, index_description varchar (1000) null&lt;BR&gt;&amp;nbsp;, index_keys varchar (1000) null&lt;BR&gt;)&lt;/P&gt;
&lt;P&gt;insert #helpindex&lt;BR&gt;exec sp_helpindex @tablename&lt;/P&gt;
&lt;P&gt;alter table #helpindex add inccols varchar(1000) null&lt;/P&gt;
&lt;P&gt;declare cr cursor for&lt;BR&gt;select si.name, sc.name&lt;BR&gt;from sysobjects so&lt;BR&gt;join sysindexes si on so.id = si.id&lt;BR&gt;join sys.index_columns ic on si.id = ic.object_id and si.indid = ic.index_id&lt;BR&gt;join sys.columns sc on ic.object_id = sc.object_id and ic.column_id = sc.column_id&lt;BR&gt;where so.xtype = 'U'&lt;BR&gt;&amp;nbsp; and so.name = @tablename&lt;BR&gt;&amp;nbsp; and ic.is_included_column = 1&lt;BR&gt;order by si.name, ic.index_column_id&lt;/P&gt;
&lt;P&gt;declare @siname varchar(1000), @scname varchar(1000)&lt;/P&gt;
&lt;P&gt;open cr&lt;/P&gt;
&lt;P&gt;fetch next from cr into @siname, @scname&lt;/P&gt;
&lt;P&gt;while @@fetch_status = 0&lt;BR&gt;&amp;nbsp;begin&lt;/P&gt;
&lt;P&gt;&amp;nbsp; update #helpindex set inccols = isnull(inccols , '') + @scname + ', ' where index_name = @siname&lt;/P&gt;
&lt;P&gt;&amp;nbsp; fetch next from cr into @siname, @scname&lt;BR&gt;&amp;nbsp;end&lt;/P&gt;
&lt;P&gt;update #helpindex set inccols = left(inccols, datalength(inccols) - 2)&lt;BR&gt;where right(inccols, 2) = ', '&lt;/P&gt;
&lt;P&gt;close cr&lt;BR&gt;deallocate cr&lt;/P&gt;
&lt;P&gt;select hi.index_name&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , hi.index_description&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , hi.index_keys&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , hi.inccols as included_columns&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ius.index_id&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , user_seeks&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , user_scans&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , user_lookups&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , user_updates&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , last_user_seek&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , last_user_scan&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , last_user_lookup&lt;BR&gt;from&amp;nbsp; #helpindex hi&lt;BR&gt;join&amp;nbsp; sysindexes si on si.name = hi.index_name collate database_default&lt;BR&gt;join sysobjects so on si.id = so.id&lt;BR&gt;left join sys.dm_db_index_usage_stats ius on ius.object_id = si.id and ius.index_id = si.indid and ius.database_id = db_id()&lt;BR&gt;where so.name = @tablename&lt;/P&gt;
&lt;P&gt;drop table #helpindex&lt;BR&gt;go&lt;/P&gt;
&lt;P&gt;This usp_ should first be created within the user database &amp;amp; can then be called simply as follows:&lt;/P&gt;
&lt;P&gt;exec usp_helpindexusagestats 'MyTableName'&lt;/P&gt;
&lt;P&gt;Output includes some rich information about the indexes on the table including column names (keys &amp;amp; included columns) and also usage stats information about how often seeks, scans &amp;amp; lookups are being performed on each index. &lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1184" width="1" height="1"&gt;</description></item><item><title>A great idea for solving annoying collation issues</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/02/05/1166.aspx</link><pubDate>Tue, 05 Feb 2008 13:44:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1166</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1166.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1166</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://msmvps.com/blogs/robfarley/"&gt;Rob Farley&lt;/A&gt; recently &lt;A href="http://msmvps.com/blogs/robfarley/archive/2008/01/31/the-end-of-collation-woes-in-sql-server.aspx"&gt;blogged about an excellent idea for solving the annoying collation issues&lt;/A&gt; so many struggle with during updates, consolitations or server rebuilds.&lt;/P&gt;
&lt;P&gt;Currently SQL Server throws errors if tables are joined with columns that have incompatible collations (eg, tempdb has SQL_Latin_General_CI_AS but user dbs have Latin_General1).&lt;/P&gt;
&lt;P&gt;Rob's idea is to provide a database level option which configures SQL Server to automatically use the collation of the left or right hand column in a join (or instance collation) instead of just failing. This would save users from&amp;nbsp;many common collation problem &amp;amp; significantly easier than re-installing SQL Server or rebuilding databases with changed collations (presently a tedious task)&lt;/P&gt;
&lt;P&gt;Rob has also posted a Feedback item on Microsoft's Connect site here:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=324910"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=324910&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you like this idea, it would help if you could add your vote to the connect item to help give it some sway with Microsoft. It's too late for this to make it into SQL 2008, but you&amp;nbsp;could help influence its release into SQL 11, 2 to 3 years from now..&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1166" width="1" height="1"&gt;</description></item><item><title>Sad news - Ken Henderson passed away yesterday</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2008/01/29/1161.aspx</link><pubDate>Tue, 29 Jan 2008 13:32:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:1161</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/1161.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=1161</wfw:commentRss><description>&lt;P&gt;Unfortunately for the SQL Server community, &lt;A href="http://blogs.msdn.com/sqlrem/archive/2008/01/28/ken-henderson-we-will-always-remember-you.aspx"&gt;Ken Henderson passed away yesterday&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Many will remember Ken for his&amp;nbsp;"Gurus Guide" SQL Server books which are amongst the most highly regarded technical resources available. I had the privilege of working with Ken as a reviewer of&amp;nbsp;the final edition of this series &amp;amp; learned a great deal during the process from a true master of SQL Server technology. &lt;/P&gt;
&lt;P&gt;In addition to Ken's professional duties at Microsoft, he also participated in many community events as a speaker, wrote in-depth technical articles and maintained an &lt;A href="http://blogs.msdn.com/khen1234/"&gt;excellent technical blog&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I learned significantly from Ken's various works, particularly in relation to the finer points of disk IO, memory management and SQL Server's UMS / SQLOS process scheduling internals. &lt;/P&gt;
&lt;P&gt;I wish I had the chance to have met him in person to thank him for his willingness to draw on his experiences and share very useful technical&amp;nbsp;information&amp;nbsp;with everyone who was interested.&lt;/P&gt;
&lt;P&gt;RIP Ken and my condolences to your family.&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=1161" width="1" height="1"&gt;</description></item><item><title>Debunking myths about clustered indexes - part 5b - a real world solution</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2007/06/12/725.aspx</link><pubDate>Tue, 12 Jun 2007 13:42:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:725</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/725.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=725</wfw:commentRss><description>&lt;P&gt;In my last post, I discussed a real world clustered index design problem which had far-reaching consequences on a high volume &amp;amp; profile website. In this post I'll discuss the problem in further detail &amp;amp; post the solution which solved the problem&lt;/P&gt;
&lt;P&gt;In this scenario, a Clustered Index (CIX) was&amp;nbsp;placed on an identity column but the main query which accesses the table at very high frequency did not use the identity column for filtering or joining in any way. The only reason the CIX was defined on this column is that SQL Server places CIXs on Primary Keys by default (afaik, no more thought went into the decision than this).&lt;/P&gt;
&lt;P&gt;The fact that the identity column was not used by the query for filtering (in either WHERE or JOIN) means that it's b-tree lookup structure was totally wasted on this query (&amp;amp; this query is by far the most performance sensitive query that accesses the table). This is a common problem when placing a CIX on IDENTITY columns.&lt;/P&gt;
&lt;P&gt;This might not be so bad if another index could have been created to "cover" the query, but the query accesses more columns (&amp;amp; bytes) than are allowed&amp;nbsp;in an&amp;nbsp;index (this system was using SQL Server&amp;nbsp;2000) so another index cannot be designed to totally suit the needs of the query.&lt;/P&gt;
&lt;P&gt;The MS support engineers who worked on this case tried to design Non-Clustered Indexes (NCIXs) with as many columns as possible but ultimately, the other columns not included in the index also have to be retrieved &amp;amp; forcing SQL Server to perform extremely expensive Clustered Index Bookmark Lookups. Even though these occur in memory, they are still enormously expensive &amp;amp; totally brought this high profile system down week after week last year during peak workloads.&lt;/P&gt;
&lt;P&gt;The solution:&lt;/P&gt;
&lt;P&gt;Because CIXs become the storage container for the tables they are built on (the table's rows are stored in the leaf pages of a CIX), they naturally contain all columns. A limited number of columns can be used for the index keys, but all columns exist on the leaf pages. Hence, CIXs always cover queries, although not necessarily in their index keys.&lt;/P&gt;
&lt;P&gt;The trick to solving this particular problem was to recognise that placing the CIX keys on a few of the filtered columns would allow SQL Server to perform a partial range scan over however many rows those columns return &amp;amp; then evaluate the wildcard search in the affids column within the leaf pages as it scans over that range. This is far more efficient then evaluating those extra colums over an extremely expensive Bookmark Lookup, whether in memory or not, as no additional IOs need to be performed (where at least three extra reads are required PER ROW with the CIX bookmark lookup, massively increasing total reads performed by the query).&lt;/P&gt;
&lt;P&gt;It appears that the engineers who worked on this problem either didn't consider altering the existing CIX or maybe they simply believed blindly in the "best practise" of placing CIXs on identity columns. Either way, they didn't try changing the CIX design &amp;amp; consequently failed to solve the problem.&lt;/P&gt;
&lt;P&gt;So finally, the solution was to replace the identity based CIX with the following definition:&lt;/P&gt;
&lt;P&gt;create clustered index cix_article on article (clid, grptype, chksmcurr, chksmver)&lt;/P&gt;
&lt;P&gt;With this CIX, the query can simply traverse its b-tree, locating the range where clid = 2 &amp;amp;&amp;nbsp;grptype = 'news', then scan that range whilst&amp;nbsp;testing the other predicates - chksmcurr = chksmver, the wildcard search in affids etc. As it identifies each row, it can extract all other column values, sort &amp;amp; produce the top&amp;nbsp;5&amp;nbsp;rows. Crucially, no Bookmark Lookups are required.&lt;/P&gt;
&lt;P&gt;Immediately after installing this index, the site dropped from extremtly high CPU utilisation (&amp;gt; 90% consistently at peak load) to less than 10% even at peak load.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The reason why CPU load was reduced by such a substantial margin is that Bookmark Lookups are extremely expensive, even though the CIX b-tree pages are typically in memory. They often happen as such high frequency that they can easily overload even the most powerful systems. Note that in this case, the DB size was only ~2Gb, the server had 16Gb RAM, 8 high end CPUs &amp;amp; high end SAN storage. All that hardware couldn't handle the massive logical query inefficiency.&lt;/P&gt;
&lt;P&gt;It's also crucial to note that the identity column was not involved in the query's filter predicates (although it was returned in the SELECT list). This is a significant problem with placing CIXs on identity columns if performance sensitive queries do not actually use that column for filtering - it not only wastes a useful b-tree structure (one that covers any query) it also introduces a costly&amp;nbsp;layer of indirection for Bookmark Lookups if the query accesses many columns and cannot be easily covered with a NCIX. Many people place CIXs on identity columns to achieve fragmentation objectives without considering the opportunity cost with query processing (which is nearly always far more important than avoiding fragmentation, which is another very poorly understood topic in general)&lt;/P&gt;
&lt;P&gt;Note also that I am demonstrating the usefulness of a CIX in this particular discussion (yes, they're often useful - just not always) but I am also showing why using identity columns blindly is a bad idea. &lt;/P&gt;
&lt;P&gt;Ultimately, you need to think through how a query accesses its underlying data structures to get the best out of index design &amp;amp; resist the temptation to simply roll out "best practises" generically..&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=725" width="1" height="1"&gt;</description></item><item><title>Debunking myths about clustered indexes - part 5 - a real world example</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2007/06/08/695.aspx</link><pubDate>Thu, 07 Jun 2007 14:20:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:695</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/695.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=695</wfw:commentRss><description>&lt;FONT color=#008000 size=3&gt;&lt;SPAN&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;This post discusses a problem experienced last year on one of the highest profile&amp;nbsp;websites in Australia which highlights how blindly following generic "best practises" can cause serious damage to real-world systems.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;Previously, in this series:&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;&lt;BR&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;A href="/blogs/greg_linwood/archive/2006/09/10/363.aspx"&gt;Part 1 (CIXs worsen bookmark lookups)&lt;/A&gt; &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;A href="/blogs/greg_linwood/archive/2006/09/11/365.aspx"&gt;Part 2 (CIXs are NOT better for range scans)&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;A href="/blogs/greg_linwood/archive/2006/09/16/377.aspx"&gt;Part 3 (example script)&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;A href="/blogs/greg_linwood/archive/2006/09/25/387.aspx"&gt;Part&amp;nbsp;4 (CIXs, TPC-C &amp;amp; Oracle clusters)&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;The effects of this simple indexing problem severely impacted the&amp;nbsp;huge number of online users (millions) who use this website. The MS engineers who worked on the problem failed to produce a solution, even though a simple solution exists because they blindly followed published "best practises" rather than thinking the problem through &lt;BR&gt;logically. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;This is a great case study &amp;amp; will benefit many who take the time to read &amp;amp; attempt to solve this problem.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;Some background info:&lt;BR&gt;a) This query provides "top 5" article functionality for the&amp;nbsp;website's front page (most recent, relevant etc)&lt;BR&gt;b) The application caches most requests but cache refreshes, timeouts or system re-starts cause the query to be run at&amp;nbsp;very high frequency (many times per second)&lt;BR&gt;c) High execution frequency, coupled with high cost of the&amp;nbsp;query bring the site down regularly.&lt;BR&gt;d) Hardware is over-spec'd - 8 x CPU, significantly more RAM than data (database is totally in memory) and storage is high end EMC SAN.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;Senior MS support engineers were engaged to solve this problem but gave up on this after weeks of trying but there is a simple solution - can you see it?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;Here are a few tips: &lt;BR&gt;a) Although not all DDL is posted, all that is relevant is here&lt;BR&gt;b) You cannot "cover" the query with a traditional NCIX&amp;nbsp;because there are more than 16 columns referenced by the query &amp;amp; some filter columns exceed the 900 byte limit imposed by SQL 2000 (this was a SQL 2000 system)&lt;BR&gt;c) Don't get distracted by the sub-queries, they're actually&amp;nbsp;not important to the solution (due to the AND condition)&lt;BR&gt;d) Forget the current execution plans (which aren't provided). These would only tell you what's currently going wrong even if you had them. They'd give you no information on how to&amp;nbsp;actually solve the problem. They were not actually used in production of the solution other than to prove the solution.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;To solve this problem, you really need to think beyond regular "best practises" and consider how you can use SQL Server's indexing features in a way that provides the simplest, efficient path that SQL Server can use to identify the top 5 "articles" based on the business rules (filters). Thinking logically about this problem is the key to finding a solution.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;Why am I posting this challenge?&lt;BR&gt;a) To demonstrate how wrong published CIX index design "best practises"&amp;nbsp;(eg on ID columns) truely are and how badly they often affect real world systems (in this case, a huge user population).&lt;BR&gt;b) To encourage developers and DBAs to think about index design in more sophisticated ways than blindly following generic "best practises".&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2&gt;I will post the solution that was actually implemented soon but for now, can you find a solution?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;use&lt;/SPAN&gt;&lt;SPAN&gt; tempdb&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;object_id&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'article'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;drop&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;table&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;table&lt;/SPAN&gt;&lt;SPAN&gt; article &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;id &lt;/SPAN&gt;&lt;SPAN&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;identity&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; 1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;not&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;primary&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;key&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;clustered&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; clid &lt;/SPAN&gt;&lt;SPAN&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; affids &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1000&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; grptype &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;500&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; [type] &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;500&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; chksmcurr &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;50&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; chksmver &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;50&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; crdt &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; creator &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;100&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; dtend &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; dtstart &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; vseqno &lt;/SPAN&gt;&lt;SPAN&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; protcont &lt;/SPAN&gt;&lt;SPAN&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; date &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; [time] &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; headline &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1000&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; shheadline &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;1000&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; pullquote &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;8000&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; prodprior &lt;/SPAN&gt;&lt;SPAN&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; grpprior &lt;/SPAN&gt;&lt;SPAN&gt;int&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; author &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;255&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; source &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;255&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; crdt2 &lt;/SPAN&gt;&lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; params &lt;/SPAN&gt;&lt;SPAN&gt;varchar&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;5000&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; article2 &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;crdt2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; article3 &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;clid&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; article4 &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;prodprior&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; article5 &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;creator&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; article6 &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;crdt&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; creator&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; vseqno&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--recommended by MS support engineers&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--but worsened the problem (much higher CPU)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; ndx_article2 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;clid&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; grptype&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; chksmcurr&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;chksmver&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; affids&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; crdt&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; creator&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;dtend&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; dtstart&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; vseqno&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; [date] &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;[time] &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; crdt2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--also recommended by MS support engineers&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;--but worsened the problem (much higher CPU)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;create&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;&lt;SPAN&gt; ndx_article3 &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; article&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;clid&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; grptype&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;chksmcurr&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; chksmver&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; affids&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;crdt&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; creator&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; dtend&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; dtstart&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;vseqno&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; prodprior&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; grpprior&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; date &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;[time] &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; crdt2&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;go&lt;/SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;top&lt;/SPAN&gt;&lt;SPAN&gt; 5&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;id&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;params&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;affids&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;protcont &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;headline &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;shheadline &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;date &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;time&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;author &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;source &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;pullquote &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; atparam&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; gt&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;params &lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; gtparam &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;article a&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;join&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;grptype gt &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;grptype &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; gt&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;grptype &lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;clid &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; gt&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;clid &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;join&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;articletype at &lt;/SPAN&gt;&lt;SPAN&gt;on&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; at&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;type&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;where&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;clid &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;creator &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;''&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;crdt &lt;/SPAN&gt;&lt;SPAN&gt;is&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;vseqno &lt;/SPAN&gt;&lt;SPAN&gt;is&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;vseqno &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;top&lt;/SPAN&gt;&lt;SPAN&gt; 1 vseqno &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; article v &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;where&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;crdt &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; v&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;crdt&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;creator &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; v&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;creator &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;order&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;by&lt;/SPAN&gt;&lt;SPAN&gt; vseqno &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;grptype &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;'news'&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;dtstart &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;=&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;getdate&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;isdate&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;dtstart&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; 0&lt;/SPAN&gt;&lt;SPAN&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;dtend &lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;getdate&lt;/SPAN&gt;&lt;SPAN&gt;()&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;isdate&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;dtend&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; 0&lt;/SPAN&gt;&lt;SPAN&gt;)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;((&lt;/SPAN&gt;&lt;SPAN&gt;','&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;affids &lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;','&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;like&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;'%,713,%'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;','&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;affids &lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;','&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;not&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;like&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;'%,706,%'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;chksmcurr &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;chksmver &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;order&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;by&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;prodprior &lt;/SPAN&gt;&lt;SPAN&gt;asc&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;grpprior &lt;/SPAN&gt;&lt;SPAN&gt;asc&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;date &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt; a&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;time&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;desc&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=695" width="1" height="1"&gt;</description></item><item><title>Appalled at the news media's handling of the Virginia College massacre</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2007/04/19/581.aspx</link><pubDate>Thu, 19 Apr 2007 03:10:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:581</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/581.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=581</wfw:commentRss><description>&lt;P&gt;I am disgusted that the &lt;A href="http://www.theage.com.au/"&gt;Age&lt;/A&gt;, the &lt;A href="http://www.theaustralian.news.com.au/"&gt;Australian&lt;/A&gt; the &lt;A href="http://www.news.com.au/heraldsun/"&gt;Herald Sun&lt;/A&gt; (my local news rags)&amp;nbsp;are all&amp;nbsp;showing pictures of the Virginia College gunman pointing guns right at our faces. Unfortunately, many other news sources around the world are also probably showing the same menacing pictures&amp;nbsp;purely for their&amp;nbsp;sensationalistic commercial value&lt;/P&gt;
&lt;P&gt;Sure -&amp;nbsp;they should report on the story as it is certainly&amp;nbsp;important news&amp;nbsp;which the community needs to know about, but why publish menacing&amp;nbsp;pictures of this *** who has just blown away 32 young lives, now&amp;nbsp;pointing a gun directly at our faces?&lt;/P&gt;
&lt;P&gt;Can you imagine what it would be like for the parents of victims, already deeply in shock&amp;nbsp;to now see this @sshole pointing a gun at their faces on the TV?&lt;/P&gt;
&lt;P&gt;I'm disappointed in our media's sense of judgement about this.&lt;/P&gt;
&lt;P&gt;Maybe they should spend more time discussing the heroic acts performed by people such as&amp;nbsp;&lt;A href="http://en.wikipedia.org/wiki/Liviu_Librescu"&gt;Liviu Librescu &lt;/A&gt;than the cowardice of the shooter (who's name isn't worth mentioning)&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=581" width="1" height="1"&gt;</description></item><item><title>SQL Server SP2 GDR</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2007/04/12/572.aspx</link><pubDate>Wed, 11 Apr 2007 23:20:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:572</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/572.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=572</wfw:commentRss><description>&lt;P&gt;The info below&amp;nbsp;was posted to the SQL Server MVP discussion forum a couple of days ago by James Howey (from the MS SQL team)&amp;nbsp;&amp;amp; has been approved for re-distribution. It covers some details on problems associated with SQL 2005 SP2 &amp;amp; details about the GDR / QFE process which might interest DBAs.&lt;/P&gt;
&lt;P&gt;Bob Ward (also MS SQL team) has blogged some more useful details on this topic here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/psssql/archive/2007/04/06/post-sql-server-2005-service-pack-2-sp2-fixes-explained.aspx"&gt;http://blogs.msdn.com/psssql/archive/2007/04/06/post-sql-server-2005-service-pack-2-sp2-fixes-explained.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;* * * * * * * * * * * *&lt;/P&gt;
&lt;P&gt;We recently posted updates to address an issue in two SP2 Maintenance Plan tasks. The KB article describes the symptoms as follows:&lt;/P&gt;
&lt;P&gt;FIX: The Check Database Integrity task and the Execute T-SQL Statement task in a maintenance plan may lose database context in certain circumstances in SQL Server 2005&lt;/P&gt;
&lt;P&gt;In Microsoft SQL Server 2005 Service Pack 2 (SP2), the following tasks in a maintenance plan may lose database context in certain circumstances:&lt;BR&gt;. Check Database Integrity&lt;BR&gt;. Execute T-SQL Statement&lt;/P&gt;
&lt;P&gt;For example, if a Check Database Integrity task is configured to check integrity on multiple databases, the task repeatedly checks the default database.&lt;/P&gt;
&lt;P&gt;For the Execute T-SQL Statement task, this problem occurs if the following conditions are true:&lt;BR&gt;. The Execute T-SQL Statement task contains multiple batches.&lt;BR&gt;. The batches are separated by the GO statement.&lt;BR&gt;. No batches use the USE statement to specify the database.&lt;BR&gt;. The statements in each batch do not contain the database name.&lt;/P&gt;
&lt;P&gt;In this scenario, those statements in the second batch and in succeeding batches will be executed against the default database.&lt;/P&gt;
&lt;P&gt;This fix is shipped in two different packages:&lt;BR&gt;. The GDR release is available via &lt;A href="http://support.microsoft.com/kb/934458"&gt;http://support.microsoft.com/kb/934458&lt;/A&gt;&lt;BR&gt;. The QFE release is available via &lt;A href="http://support.microsoft.com/kb/934459"&gt;http://support.microsoft.com/kb/934459&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;What is the difference between a GDR and QFE release? GDRs are a new means of providing support. GDR fixes are reserved for those issues identified by SQL Server support as important enough to install on every instance of SQL Server. QFEs are used for the majority of fixes where the effects of the problem are not widespread or severe enough to warrant a GDR.&lt;/P&gt;
&lt;P&gt;GDRs and QFEs are associated with certain build numbers. Build numbers 3043 through 3149 are reserved for GDR releases. Build numbers 3150 and up are reserved for QFEs. By reserving lower build numbers for GDR releases, users can continue to take advantage of GDR fixes, without having to install QFEs, which aggregate all the fixes shipped since the most recent service pack. Once a QFE is installed, GDRs will no longer update your system, because the build number is too low, and you have to install QFEs to pick up new fixes.&lt;/P&gt;
&lt;P&gt;Why is this fix a GDR? This fix was promoted to GDR because users that relied on the Check Database Integrity task to validate their databases were not informed of database integrity issues that they expected to be detected. The fix also addresses issues in the Execute T-SQL task, but, since these issues typically lead to script failure, duly noted by SQL Server, the T-SQL issues alone were not enough to justify the GDR.&lt;/P&gt;
&lt;P&gt;Those users who now, or in the future, rely on the Check Database Integrity Task or the Execute T-SQL task in a maintenance plan should install the GDR. Others may skip the GDR.&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=572" width="1" height="1"&gt;</description><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1006.aspx">SQL Server - other</category></item><item><title>Chiune Sugihara</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2007/04/06/569.aspx</link><pubDate>Fri, 06 Apr 2007 12:22:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:569</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/569.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=569</wfw:commentRss><description>&lt;P&gt;I just watched the PBS documentary "&lt;A href="http://www.pbs.org/wgbh/sugihara/"&gt;Sugihara: Conspiracy of Kindness&lt;/A&gt;" for the second time in a few months on TV tonight. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://en.wikipedia.org/wiki/Chiune_Sugihara"&gt;Chiune Sugihara&lt;/A&gt; saved thousands of Jewish lives&amp;nbsp;during WWII&amp;nbsp;whilst serving as&amp;nbsp;Japanese consul in Lithuania by issuing transit visas against instructions from his home office in Japan. After returning to Japan at the completion of the war &amp;amp; losing his diplomatic post, he lived in obscurity in Russia for many years &amp;amp; refused all&amp;nbsp;assistance from those he had helped. Many years later, one of those he saved waited 4 years to meet him to ask why he took such tremendous risks to help those he didn't know. He said: &lt;/P&gt;
&lt;P&gt;"In life, do what's right because it's right, then leave it alone".&lt;/P&gt;
&lt;P&gt;An amazing guy..&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=569" width="1" height="1"&gt;</description><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1004.aspx">Personal stuff</category></item><item><title>Congratulations Peter Ward!</title><link>http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2007/04/02/567.aspx</link><pubDate>Mon, 02 Apr 2007 02:51:00 GMT</pubDate><guid isPermaLink="false">6d5687b6-8fdc-4d13-899b-485dc578ece0:567</guid><dc:creator>Greg_Linwood</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.sqlserver.org.au/blogs/greg_linwood/comments/567.aspx</comments><wfw:commentRss>http://blogs.sqlserver.org.au/blogs/greg_linwood/commentrss.aspx?PostID=567</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.wardyit.com/blog/"&gt;Peter&lt;/A&gt;, I hear you've been given Microsoft's MVP award for your work with SQL Server MVP - congratulations! I believe this now makes&amp;nbsp;up 6 Aussie SQL MVPs.. (c:&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;Greg&lt;/P&gt;&lt;img src="http://blogs.sqlserver.org.au/aggbug.aspx?PostID=567" width="1" height="1"&gt;</description><category domain="http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/category/1003.aspx">Australian SQL Server User Group</category></item></channel></rss>