<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>John Sansom - SQL Server DBA in the UK &#187; Tools</title>
	<atom:link href="http://www.johnsansom.com/index.php/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johnsansom.com</link>
	<description>SQL Server DBA Blog, with straightforward advice, quality resources and musings about SQL Server</description>
	<lastBuildDate>Fri, 10 Sep 2010 12:45:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Superb listing of free SQL Server tools</title>
		<link>http://www.johnsansom.com/index.php/2009/06/superb-listing-of-free-sql-server-tools/</link>
		<comments>http://www.johnsansom.com/index.php/2009/06/superb-listing-of-free-sql-server-tools/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 21:02:10 +0000</pubDate>
		<dc:creator>John Sansom</dc:creator>
				<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.johnsansom.com/?p=659</guid>
		<description><![CDATA[Paul Randal pointed me in the direction of an awesome resource list of FREE SQL Server tools. There is an absolute mountain of quality stuff here and I wanted to share it with you all. Free SQL Server Tools that might make your life easier Be sure to me know which resources you use and [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Paul Randal" href="http://www.sqlskills.com/blogs/paul/"></a>Paul Randal pointed me in the direction of an awesome resource list of FREE SQL Server tools. There is an absolute mountain of quality stuff here and I wanted to share it with you all.</p>
<p style="padding-left: 30px;"><a title="Free SQL Server Tools" href="http://weblogs.sqlteam.com/mladenp/archive/2007/11/20/Free-SQL-Server-tools-that-might-make-your-life-a.aspx">Free SQL Server Tools that might make your life easier</a></p>
<p>Be sure to me know which resources you use and how you get on with them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnsansom.com/index.php/2009/06/superb-listing-of-free-sql-server-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automate SQL Server Index Defragmentation,Optimisation</title>
		<link>http://www.johnsansom.com/index.php/2009/03/automate-sql-server-index-defragmentationoptimisation/</link>
		<comments>http://www.johnsansom.com/index.php/2009/03/automate-sql-server-index-defragmentationoptimisation/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 13:47:19 +0000</pubDate>
		<dc:creator>John Sansom</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Index Optimisation]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.johnsansom.com/?p=367</guid>
		<description><![CDATA[This week I came across what could quite possibly be, the best SQL Server index defrag script I have seen. This little beauty is fully customisable and is freely available courtesy of Michelle Ufford (aka SQL Fool) on her blog SQLFool.com As you know, it is just not practical to use a SQL Server Maintenance [...]]]></description>
			<content:encoded><![CDATA[<p>This week I came across what could quite possibly be, the best SQL Server index defrag script I have seen.</p>
<p>This <a title="SQL Server Index Defragmentation Script" href="http://sqlfool.com/2009/03/automated-index-defrag-script/">little beauty</a> is fully customisable and is freely available courtesy of Michelle Ufford (aka SQL Fool) on her blog <a title="SQLFool.com" href="http://sqlfool.com/">SQLFool.com</a></p>
<p>As you know, it is just not practical to use a SQL Server Maintenance Plan to manage the index optimisation of an enterprise scale database. This then leads all good DBA&#8217;s to create their own custom built script which is all well and good but why re-invent the wheel, right!</p>
<p>Every SQL Server DBA should have a custom Index Defrag Script in their toolbox and this one has earned a well deserved place in the <a title="SQL Server Performance" href="http://johnsansom.com/index.php/sql-server-resources/sql-server-performance/">performance tuning area</a> of this site.</p>
<p>Get your hands on the script here at <a title="Index Defragmentation Script" href="http://sqlfool.com/2009/03/automated-index-defrag-script/">SQLFool.com</a></p>
<p>Do you have  any scripts or tools that have made your life as a DBA easier? Let me know and I will add them to the site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnsansom.com/index.php/2009/03/automate-sql-server-index-defragmentationoptimisation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Performance Comparison of (SELECT TOP 1) Verses MAX()</title>
		<link>http://www.johnsansom.com/index.php/2009/02/performance-comparison-of-select-top-1-verses-max/</link>
		<comments>http://www.johnsansom.com/index.php/2009/02/performance-comparison-of-select-top-1-verses-max/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 15:25:53 +0000</pubDate>
		<dc:creator>John Sansom</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Index Optimisation]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[comparison select top 1]]></category>
		<category><![CDATA[MAX()]]></category>
		<category><![CDATA[query tuning]]></category>
		<category><![CDATA[SQL Server Performance Tuning]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://johnsansom.com/?p=262</guid>
		<description><![CDATA[I recently came across a post on Stackoverflow regarding the performance of using a SELECT TOP 1 query in comparison to using the MAX() function. My initial thoughts on this were that the MAX() function would provide the best performance however, in order to be absolutely certain and prove my initial hypothesis I decided to [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1700" class="wp-caption alignright" style="width: 310px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; float: right;"><a href="http://www.santechsolutions.co.uk"><img class="size-full wp-image-1700 " title="Santech Solutions" src="http://www.johnsansom.com/wp-content/uploads/2009/03/logofulcolor.gif" alt="Santech Solutions - Affordable SQL Server services" width="300" height="60" /></a><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">&quot;SQL Server Performance Tuning Experts&quot;</p></div>
<p>I recently came across a post on <a href="http://stackoverflow.com/questions/590079/ ">Stackoverflow </a>regarding the performance of using a SELECT TOP 1 query in comparison to using the MAX() function.</p>
<p>My initial thoughts on this were that the MAX() function would provide the best performance however, in order to be absolutely certain and prove my initial hypothesis I decided to put the theory to the test.</p>
<p><strong>Create the Test Environment</strong></p>
<p>To effectively test the various T-SQL statements we need some data to play with. The script below will create a table containing one million records and was adapted from the article <a href="http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/249/creating-random-sql-server-test-data.aspx">Creating Random SQL Server Test Data</a> by Mitchel Sellers.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> tmpTable<br />
<span style="color: #66cc66;">&#40;</span><br />
ID INT IDENTITY<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
SomeData VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
SomeDate datetime<br />
<span style="color: #66cc66;">&#41;</span><br />
GO<br />
<br />
DECLARE @RowCount INT<br />
DECLARE @RowString VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><br />
DECLARE @Random INT<br />
DECLARE @Upper INT<br />
DECLARE @Lower INT<br />
DECLARE @InsertDate DATETIME<br />
<br />
<span style="color: #993333; font-weight: bold;">SET</span> @Lower <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">730</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @Upper <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @RowCount <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span><br />
<br />
WHILE @RowCount &amp;amp;lt; <span style="color: #cc66cc;">1000000</span><br />
BEGIN<br />
<span style="color: #993333; font-weight: bold;">SET</span> @RowString <span style="color: #66cc66;">=</span> CAST<span style="color: #66cc66;">&#40;</span>@RowCount <span style="color: #993333; font-weight: bold;">AS</span> VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span><br />
@Random <span style="color: #66cc66;">=</span> ROUND<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>@Upper <span style="color: #66cc66;">-</span> @Lower <span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> RAND<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">+</span> @Lower<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> @InsertDate <span style="color: #66cc66;">=</span> DATEADD<span style="color: #66cc66;">&#40;</span>dd<span style="color: #66cc66;">,</span> @Random<span style="color: #66cc66;">,</span> GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span><br />
tmpTable <span style="color: #66cc66;">&#40;</span>SomeData<span style="color: #66cc66;">,</span> SomeDate<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">VALUES</span><br />
<span style="color: #66cc66;">&#40;</span><br />
REPLICATE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'0'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">-</span> DATALENGTH<span style="color: #66cc66;">&#40;</span>@RowString<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">+</span> @RowString<span style="color: #66cc66;">,</span><br />
DATEADD<span style="color: #66cc66;">&#40;</span>dd<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span> @InsertDate<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span><br />
<br />
<span style="color: #993333; font-weight: bold;">SET</span> @RowCount <span style="color: #66cc66;">=</span> @RowCount <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">1</span><br />
END</div></div>
<p><strong>Activate SQL Statistical Logging</strong></p>
<p>To evaluate the performance of each of the T-SQL queries, we are going to want to review information regarding both the number of I/O requests issued by SQL Server and the time that is takes to perform the queries, so enable both STATISTICS IO and STATISTICS TIME.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SET</span> STATISTICS IO <span style="color: #993333; font-weight: bold;">ON</span><br />
<span style="color: #993333; font-weight: bold;">SET</span> STATISTICS TIME <span style="color: #993333; font-weight: bold;">ON</span></div></div>
<p><strong>Ensuring a Fair Test</strong></p>
<p>In order to ensure a clean slate to work from for our testing, it is a good idea to free the SQL Server plan cache prior to the execution of each of our T-SQL statements to be tested. The following statements will achieve this requirement.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DBCC FREEPROCCACHE <span style="color: #808080; font-style: italic;">--Free the procedure cache</span><br />
DBCC FREESYSTEMCACHE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ALL'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">--Free the plan cache</span></div></div>
<p><strong>Performance Comparison with no index on the test table</strong></p>
<p>So the first query:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DBCC FREEPROCCACHE; DBCC FREESYSTEMCACHE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ALL'</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> TOP <span style="color: #cc66cc;">1</span> ID <span style="color: #993333; font-weight: bold;">FROM</span> tmpTable <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> id <span style="color: #993333; font-weight: bold;">DESC</span></div></div>
<p>This produces the query plan shown in Figure 1 and contains three operators. A <em>Table Scan</em>, which is to be expected as there is no index on the table and a <em>Sort</em> operator that is responsible for 95% of the cost of the overall plan.</p>
<div id="attachment_258" class="wp-caption aligncenter" style="width: 480px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><img class="size-full wp-image-258" style="border: 1px solid black;" title="top_no_index" src="http://johnsansom.com/wp-content/uploads/2009/02/top_no_index.jpg" alt="Figure 1: Select Top query, with no index." width="470" height="124" /><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Figure 1: SELECT TOP 1 , with no index.</p></div>
<p>Executing the query produces the following results:</p>
<p><span style="color: #008000;">SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 4 ms.<br />
Table &#8216;tmpTable&#8217;. Scan count 1, logical reads 6050, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.</span></p>
<p><span style="color: #008000;">SQL Server Execution Times: CPU time = 344 ms,  elapsed time = 338 ms.</span></p>
<p>Executing the second query using the MAX() operator:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DBCC FREEPROCCACHE; DBCC FREESYSTEMCACHE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ALL'</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">SELECT</span> MAX<span style="color: #66cc66;">&#40;</span>ID<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> tmpTable</div></div>
<p>This produces the query plan shown in Figure 2 and contains three operators. Again, a <em>Table Scan</em> is performed however this time a <em>Stream Aggregate</em> operator is used and the <em>Table Scan </em>accounts for 88% of the query cost.</p>
<div id="attachment_260" class="wp-caption aligncenter" style="width: 499px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><img class="size-full wp-image-260" style="border: 1px solid black;" title="max_no_index" src="http://johnsansom.com/wp-content/uploads/2009/02/max_no_index.jpg" alt="max_no_index" width="489" height="137" /><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Figure 2: SELECT MAX(), with no index</p></div>
<p>Executing the query produces the following results:</p>
<p><span style="color: #008000;">SQL Server Execution Times: CPU time = 0 ms,  elapsed time = 4 ms.</span></p>
<p><span style="color: #008000;">Table &#8216;tmpTable&#8217;. Scan count 1, logical reads 4546, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.</span></p>
<p><span style="color: #008000;">SQL Server Execution Times: CPU time = 281 ms,  elapsed time = 280 ms.</span></p>
<p><strong>Performance Comparison with no index on the test table</strong></p>
<p>Create a clustered index on the test table:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> CLUSTERED <span style="color: #993333; font-weight: bold;">INDEX</span> cl_ID <span style="color: #993333; font-weight: bold;">ON</span> tmpTable<span style="color: #66cc66;">&#40;</span>ID<span style="color: #66cc66;">&#41;</span></div></div>
<p>Now execute the first query once again. Looking at how the estimated execution plan differs, Figure 3, notice that the <em>Sort </em>operator changes to a pure <em>Top </em>operator (that incidentally has an estimated number of rows of 1) and that all the cost of the query is placed on the <em>Clustered Index Scan</em> operator. This effectively removes the need for the <em>Sort </em>and hence it&#8217;s replacement in this plan.</p>
<div id="attachment_261" class="wp-caption aligncenter" style="width: 487px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><img class="size-full wp-image-261" style="border: 1px solid black;" title="top_index" src="http://johnsansom.com/wp-content/uploads/2009/02/top_index.jpg" alt="Figure 3: SELECT TOP 1 , with clustered index." width="477" height="120" /><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Figure 3: SELECT TOP 1 , with clustered index.</p></div>
<p>The results of executing this query are:</p>
<p><span style="color: #008000;">SQL Server parse and compile time:  CPU time = 0 ms, elapsed time = 1 ms.</span></p>
<p><span style="color: #008000;">Table &#8216;tmpTable&#8217;. Scan count 1, logical reads 3, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.</span></p>
<p><span style="color: #008000;">SQL Server Execution Times: CPU time = 0 ms,  elapsed time = 1 ms.</span></p>
<p>Now execute the second query once again. Again, this produces a different plan in comparison to when the query was executed without a clustered index on the table however, the key point is that the <em>Clustered Index Scan</em> operator that bears 100% of the estimated cost of the plan.  This demonstrates that the execution cost of both queries is almost identical, when executed on a table &amp; column covered by a clustered index.</p>
<div id="attachment_259" class="wp-caption aligncenter" style="width: 654px;  border: 1px solid #dddddd; background-color: #f3f3f3; padding-top: 4px; margin: 10px; text-align:center; display: block; margin-right: auto; margin-left: auto;"><img class="size-full wp-image-259" style="border: 1px solid black;" title="max_index" src="http://johnsansom.com/wp-content/uploads/2009/02/max_index.jpg" alt="Figure 4: SELECT MAX(), with clustered index." width="644" height="129" /><p style=' padding: 0 4px 5px; margin: 0;'  class="wp-caption-text">Figure 4: SELECT MAX(), with clustered index.</p></div>
<p><script src="js/shCore.js"></script> <script src="js/shBrushCSharp.js"></script>The results of executing this query are:</p>
<p><span style="color: #008000;">SQL Server parse and compile time:  CPU time = 0 ms, elapsed time = 2 ms.</span></p>
<p><span style="color: #008000;">Table &#8216;tmpTable&#8217;. Scan count 1, logical reads 3, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.</span></p>
<p><span style="color: #008000;">SQL Server Execution Times: CPU time = 0 ms,  elapsed time = 1 ms.</span></p>
<p><strong>Conclusion</strong></p>
<p>When a clustered index is present on the table &amp; column that is to be selected, both the MAX() operator and the query (SELECT TOP 1 ColumnName order by ColumnName) have almost identical performance.</p>
<p>When there is no clustered index on the table &amp; column to be queried, the MAX() operator offers the better performance.</p>
<p>I hope you enjoyed the article and please feel free to post any comments, questions and feedback below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnsansom.com/index.php/2009/02/performance-comparison-of-select-top-1-verses-max/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Being Organised</title>
		<link>http://www.johnsansom.com/index.php/2009/01/being-organised/</link>
		<comments>http://www.johnsansom.com/index.php/2009/01/being-organised/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 14:51:33 +0000</pubDate>
		<dc:creator>John Sansom</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://johnsansom.com/?p=5</guid>
		<description><![CDATA[An essential skill trait for a good DBA in my view is being organised. With the responsibility of administering and managing vast numbers of servers/jobs/processes simultaneously across the globe, it goes without saying that being organised can come in handy. What with so much going on at any given time, it can be tricky to [...]]]></description>
			<content:encoded><![CDATA[<p><span lang="EN-GB">An essential skill trait for a good DBA in my view is being organised. With the responsibility of administering and managing vast numbers of servers/jobs/processes simultaneously across the globe, it goes without saying that being organised can come in handy.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">What with so much going on at any given time, it can be tricky to stay on top of tasks and manage priorities. If like myself you enjoy getting things done and getting them done efficiently, then you too may find my latest discovery to be of value.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">It is a web based task/project management application. It is intuitive to use, provides scheduled reminders and best of all is completely free.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB">Take a look at <a title="OnlineTaskList" href="http://www.onlinetasklist.com/" target="_self">www.onlinetasklist.com</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johnsansom.com/index.php/2009/01/being-organised/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
