<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-118582969150400398</id><updated>2024-08-30T22:05:41.101-07:00</updated><category term="administration"/><category term="capacity planning"/><category term="General"/><category term="development"/><category term="security"/><category term="Backups"/><category term="sql2k8"/><category term="Indexes"/><category term="Memory"/><category term="Reporting Services"/><category term="Scripting"/><category term="database mail"/><category term="ddl trigger"/><category term="fragmentation"/><category term="recovery"/><category term="scripting logins"/><title type='text'>Data Services</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-3669881472541496080</id><published>2008-12-05T14:07:00.000-08:00</published><updated>2008-12-05T14:33:15.132-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Memory"/><title type='text'>cache store flush</title><content type='html'>I came across this post while going through links for the cache store flush messages -&lt;br /&gt;&lt;a href=&quot;http://blogs.msdn.com/sqlprogrammability/archive/2007/01/17/10-0-plan-cache-flush.aspx&quot;&gt;http://blogs.msdn.com/sqlprogrammability/archive/2007/01/17/10-0-plan-cache-flush.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/3669881472541496080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/3669881472541496080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3669881472541496080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3669881472541496080'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/12/cache-store-flush.html' title='cache store flush'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-631275877721337130</id><published>2008-11-12T08:05:00.000-08:00</published><updated>2008-11-12T08:07:25.477-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="Backups"/><title type='text'>a &quot;cool&quot; system</title><content type='html'>&lt;a href=&quot;http://www.sqlskills.com/BLOGS/PAUL/post/High-end-backup-compression-numbers.aspx&quot;&gt;http://www.sqlskills.com/BLOGS/PAUL/post/High-end-backup-compression-numbers.aspx&lt;/a&gt;&lt;br /&gt;isn&#39;t that cool?</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/631275877721337130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/631275877721337130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/631275877721337130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/631275877721337130'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/11/cool-system.html' title='a &quot;cool&quot; system'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-4415351063924637745</id><published>2008-10-14T07:33:00.000-07:00</published><updated>2008-10-14T07:38:24.415-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripting"/><category scheme="http://www.blogger.com/atom/ns#" term="sql2k8"/><title type='text'>dmo with sql2k8</title><content type='html'>I personally have been a great fan of Sql DMO for many years while managing hundreds of sql server boxes with a small team. It helped me a lot in audit and common maintenance tasks. With the introduction of Smo, Dmo became a deprecated feature in Sql2k5. With Sql2k8, MS has gone one step further and avoided installing Dmo automatically. However, if you still want to use Dmo for Sql2k8, you can download the feature pack from here -&lt;br /&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyId=C6C3E9EF-BA29-4A43-8D69-A2BED18FE73C&amp;amp;displaylang=en&quot;&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=C6C3E9EF-BA29-4A43-8D69-A2BED18FE73C&amp;amp;displaylang=en&lt;/a&gt;. However, it would be nice to start using Smo and Powershell now.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/4415351063924637745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/4415351063924637745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/4415351063924637745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/4415351063924637745'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/10/dmo-with-sql2k8.html' title='dmo with sql2k8'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-3881527948531472641</id><published>2008-10-14T07:08:00.000-07:00</published><updated>2008-10-14T07:18:59.073-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="sql2k8"/><title type='text'>refreshing intellisense cache</title><content type='html'>The intellisense shipped with sql2k8 SSMS is something very helpful. There is a way to refresh the local Intellisense cache to reflect the latest changes. Go to Edit --&gt; IntelliSense --&gt; Refresh Local Cache.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/3881527948531472641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/3881527948531472641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3881527948531472641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3881527948531472641'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/10/refreshing-intellisense-cache.html' title='refreshing intellisense cache'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-5783449966177341725</id><published>2008-10-14T05:08:00.000-07:00</published><updated>2008-10-14T06:22:29.268-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development"/><title type='text'>recompilations by temp tables Vs table variables</title><content type='html'>There is an interesting post from the sqlcat team on the difference the recompilations make while using a temp table or table variable. See it here - &lt;a href=&quot;http://blogs.msdn.com/sqlcat/archive/2008/10/09/table-variable-vs-temp-table-and-estimated-vs-actual-query-plan.aspx&quot;&gt;http://blogs.msdn.com/sqlcat/archive/2008/10/09/table-variable-vs-temp-table-and-estimated-vs-actual-query-plan.aspx&lt;/a&gt;&lt;br /&gt;There are a few other links that may be useful -&lt;br /&gt;&lt;a href=&quot;http://blogs.msdn.com/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx&quot;&gt;http://blogs.msdn.com/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html&quot;&gt;http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://support.microsoft.com/default.aspx/kb/305977&quot;&gt;http://support.microsoft.com/default.aspx/kb/305977&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/5783449966177341725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/5783449966177341725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/5783449966177341725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/5783449966177341725'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/10/recompilations-by-temp-tables-vs-table.html' title='recompilations by temp tables Vs table variables'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-8396960195564185078</id><published>2008-10-06T06:07:00.000-07:00</published><updated>2008-10-06T06:09:29.068-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><category scheme="http://www.blogger.com/atom/ns#" term="sql2k8"/><title type='text'>cu1 for Sql2k8</title><content type='html'>Hardly a month since the release of sql2k8, the first cu has been released. Find the link here  - &lt;a href=&quot;http://support.microsoft.com/kb/956717&quot;&gt;http://support.microsoft.com/kb/956717&lt;/a&gt;. To see the instructions on the installation, go here &lt;a href=&quot;http://blogs.msdn.com/psssql/archive/2008/09/26/welcome-to-sql-server-2008-patching.aspx&quot;&gt;http://blogs.msdn.com/psssql/archive/2008/09/26/welcome-to-sql-server-2008-patching.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/8396960195564185078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/8396960195564185078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/8396960195564185078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/8396960195564185078'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/10/cu1-for-sql2k8.html' title='cu1 for Sql2k8'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-5031090295096783822</id><published>2008-09-22T02:55:00.000-07:00</published><updated>2008-09-22T03:05:48.241-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Backups"/><title type='text'>changing default backup directory</title><content type='html'>Ever wondered how to change the default path for backups while using SSMS? Open registry editor and open HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x&lt;instance_number&gt;\MSSqlServer, where x is the instance number. On the right pane, modify the key value for &lt;strong&gt;BackupDirectory&lt;/strong&gt; to the path of your choice.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/5031090295096783822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/5031090295096783822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/5031090295096783822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/5031090295096783822'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/09/changing-default-backup-directory.html' title='changing default backup directory'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-3640267068336745531</id><published>2008-09-18T23:14:00.000-07:00</published><updated>2008-09-18T23:20:07.283-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>auditing table access in Sql2k8</title><content type='html'>It is difficult in auditing the SELECT staments in SQL Server. As triggers cant be used for this purpose, trace seems to be the only option until v2005. The new audit objects in v2008 should be a cool new feature to improve the audit tasks. &lt;a href=&quot;http://blogs.msdn.com/euanga/archive/2008/05/28/sql-2008-how-do-i-tell-if-a-specific-table-is-still-being-used-in-an-app.aspx&quot;&gt;http://blogs.msdn.com/euanga/archive/2008/05/28/sql-2008-how-do-i-tell-if-a-specific-table-is-still-being-used-in-an-app.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/3640267068336745531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/3640267068336745531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3640267068336745531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3640267068336745531'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/09/auditing-table-access-in-sql2k8.html' title='auditing table access in Sql2k8'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-3368447136493133576</id><published>2008-09-01T02:49:00.000-07:00</published><updated>2008-09-01T02:55:34.624-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="recovery"/><title type='text'>rebuilding SQL Server 2008 system databases</title><content type='html'>Here is a post from the pss team on how to rebuild the system databases in SQL Server 2008. Find the post here &lt;a href=&quot;http://blogs.msdn.com/psssql/archive/2008/08/29/how-to-rebuild-system-databases-in-sql-server-2008.aspx&quot;&gt;http://blogs.msdn.com/psssql/archive/2008/08/29/how-to-rebuild-system-databases-in-sql-server-2008.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/3368447136493133576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/3368447136493133576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3368447136493133576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3368447136493133576'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/09/rebuilding-sql-server-2008-system.html' title='rebuilding SQL Server 2008 system databases'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-3259573321539239599</id><published>2008-08-21T22:11:00.000-07:00</published><updated>2008-08-21T22:13:36.983-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="capacity planning"/><title type='text'>sql2k5 scale out articles</title><content type='html'>Find a bunch of links to find the ins and outs of scaling out with Sql Server 2005 -&lt;br /&gt;&lt;a href=&quot;http://blogs.msdn.com/sqlcat/archive/2008/06/12/sql-server-scale-out.aspx&quot;&gt;http://blogs.msdn.com/sqlcat/archive/2008/06/12/sql-server-scale-out.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/3259573321539239599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/3259573321539239599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3259573321539239599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3259573321539239599'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/08/sql2k5-scale-out-articles.html' title='sql2k5 scale out articles'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-6986142130087119039</id><published>2008-08-21T21:52:00.000-07:00</published><updated>2008-08-21T21:57:35.786-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><title type='text'>multi-server query with SSMS 2008</title><content type='html'>A cool new feature with SSMS 2008 &lt;a href=&quot;http://blogs.msdn.com/sqlrem/archive/2008/02/04/multiple-server-query-execution-in-sql-server-2008.aspx&quot;&gt;http://blogs.msdn.com/sqlrem/archive/2008/02/04/multiple-server-query-execution-in-sql-server-2008.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/6986142130087119039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/6986142130087119039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6986142130087119039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6986142130087119039'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/08/multi-server-query-with-ssms-2008.html' title='multi-server query with SSMS 2008'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-5426317378137767030</id><published>2008-08-21T04:56:00.000-07:00</published><updated>2008-08-21T05:00:13.309-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>cumulative update 9 released</title><content type='html'>SQL Server 2005 Sp2 cumulative update 9 has been released. Happy installations!&lt;br /&gt;&lt;a href=&quot;http://support.microsoft.com/kb/953752&quot;&gt;http://support.microsoft.com/kb/953752&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/5426317378137767030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/5426317378137767030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/5426317378137767030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/5426317378137767030'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/08/cumulative-update-9-released.html' title='cumulative update 9 released'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-1224689209938153434</id><published>2008-08-21T04:21:00.000-07:00</published><updated>2008-08-21T04:28:04.587-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>zeroing for log files</title><content type='html'>Instant file initialization is an excellent feature that came with Windows 2003 which is made use by SQL Server 2005.  When instant file initialization is enabled, the zeroing process for the SQL Server data files is disabled which reduces substantially the time required for file write and growth processes. However, instant file initialization cannot be done for SQL Server log files. The reason is that there are parity bits required by log file sectors to help in crash recovery processes, and if zeroing is disabled, the already existing data in the sectors can be misinterpreted as parity bits and can cause issues. There is a post from Paul Randal explaining the architectural reason. Find the post at &lt;a href=&quot;http://www.sqlskills.com/blogs/paul/2008/08/20/SearchEngineQA24WhyCantTheTransactionLogUseInstantInitialization.aspx&quot;&gt;http://www.sqlskills.com/blogs/paul/2008/08/20/SearchEngineQA24WhyCantTheTransactionLogUseInstantInitialization.aspx&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/1224689209938153434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/1224689209938153434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/1224689209938153434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/1224689209938153434'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/08/zeroing-for-log-files.html' title='zeroing for log files'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-6382146120459051595</id><published>2008-08-07T04:45:00.000-07:00</published><updated>2008-08-07T04:50:02.882-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>SQL Server 2008 Released!</title><content type='html'>After the long waits, Microsoft has officially announced the release of the new version of SQL Server to our lives! Read the full story here &lt;a href=&quot;http://www.microsoft.com/Presspass/press/2008/aug08/08-06SQLServer2008PR.mspx&quot;&gt;http://www.microsoft.com/Presspass/press/2008/aug08/08-06SQLServer2008PR.mspx&lt;/a&gt;&lt;br /&gt;Along with that, a new edition - &quot;Web Edition&quot; - also has been announced which would be used for internet facing web applications &lt;a href=&quot;http://blogs.msdn.com/irelandlicensing/archive/2008/07/11/microsoft-sql-server-2008-web-edition.aspx#8824528&quot;&gt;http://blogs.msdn.com/irelandlicensing/archive/2008/07/11/microsoft-sql-server-2008-web-edition.aspx#8824528&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/6382146120459051595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/6382146120459051595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6382146120459051595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6382146120459051595'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/08/sql-server-2008-released.html' title='SQL Server 2008 Released!'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-6536893698861872192</id><published>2008-07-28T06:37:00.000-07:00</published><updated>2008-07-28T06:51:11.010-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><title type='text'>Database Versions</title><content type='html'>As DBAs, these days we get databases of different types. Say, databases that have been created with the current version or databases that belong to old applications that have gone through a few upgradations (from 7 to 2000 to 2005 etc). The question is how can we find out what was the original version of SQL Server when the database was created. There is an undocumented command to find this out - DBCC DBINFO. You can see two entries in the output - dbi_version and dbi_createversion. The value for dbi_version denotes the current version of the database while dbi_createversion denotes the version of SQL Server when the database was originally created. A value of 515 stands for SQL Server 7.0, A value of 539 stands for SQL Server 2000, a value of 611 stands for SQL Server 2005 and a value of 612 stands for SQL Server 2005 with vardecimal option enabled. For more information on DBCC DBINFO command, see Paul&#39;s post at &lt;a href=&quot;http://www.sqlskills.com/blogs/paul/2008/07/11/SearchEngineQA20BootPagesAndBootPageCorruption.aspx&quot;&gt;http://www.sqlskills.com/blogs/paul/2008/07/11/SearchEngineQA20BootPagesAndBootPageCorruption&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/6536893698861872192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/6536893698861872192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6536893698861872192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6536893698861872192'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/07/database-versions.html' title='Database Versions'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-688767091015524815</id><published>2008-07-21T04:09:00.000-07:00</published><updated>2008-08-21T22:15:11.539-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type='text'>Tools to avoid SQL Injection</title><content type='html'>Owing to the recent mass SQL injection attacks, Microsoft has worked to come up with a few tools to reduce the chances of attacks of the same type. Find the link here -&lt;br /&gt;&lt;a href=&quot;http://blogs.technet.com/swi/archive/2008/06/24/new-tools-to-block-and-eradicate-sql-injection.aspx&quot;&gt;http://blogs.technet.com/swi/archive/2008/06/24/new-tools-to-block-and-eradicate-sql-injection.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/688767091015524815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/688767091015524815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/688767091015524815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/688767091015524815'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/07/tools-to-avoid-sql-injection.html' title='Tools to avoid SQL Injection'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-7761319319039149736</id><published>2008-07-17T05:45:00.000-07:00</published><updated>2008-07-17T06:22:03.502-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><title type='text'>Tracking FileGrowth</title><content type='html'>I was always of the opinion that we should avoid using the “autogrow” option ON for production databases - whether small applications or large applications), simply because of the lot of overhead it creates in the expansion of the file, connection issues while the expansion happens, and most importantly, the amount of fragmentation it creates. Recently while going through a production issue, I heard this question from a fellow administrator that how we can find out when a file growth happened (This is a database where the autogrow is set to ON). I dug through some resources, but accidentally found out that is getting tracked in the default trace. We can just0 query the trace file to obtain the growth events. Joining the result with sys.Trace_Events will give us more clear results. Run the below given query and ensure that the path to the trace file is correct -&lt;br /&gt;SELECT TrcEv.Name, Trc.DatabaseName, Trc.FileName, Trc.StartTime FROM fn_trace_gettable(E:\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\log_6.trc&#39;, NULL) AS Trc INNER JOIN sys.trace_events TrcEv ON Trc.EventClass = TrcEv.trace_event_id WHERE TrcEv.Name LIKE &#39;%Auto Grow&#39;&lt;br /&gt;ORDER BY StartTime.&lt;br /&gt;If you want to see, how the initial size of the file and the growth factor affects the file growth (and the index fragmentation of course), try the small example given below-&lt;br /&gt;&lt;br /&gt;CREATE DATABASE GrowthTest&lt;br /&gt;GO&lt;br /&gt;USE GrowthTest&lt;br /&gt;GO&lt;br /&gt;CREATE TABLE dbo.Employee&lt;br /&gt;(EmployeeName VARCHAR(3000))&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;DECLARE @i INT&lt;br /&gt;SET @i =1&lt;br /&gt;WHILE @i &lt; 10000&lt;br /&gt;BEGIN&lt;br /&gt;INSERT INTO Employee VALUES(REPLICATE(&#39;A&#39;, 3000))&lt;br /&gt;END&lt;br /&gt;(I assume that the filegrowth for your model database is the default settings) After this, run the above given query once more to see how many times the autogrowth happened.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/7761319319039149736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/7761319319039149736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/7761319319039149736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/7761319319039149736'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/07/tracking-filegrowth.html' title='Tracking FileGrowth'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-2406922122940600200</id><published>2008-07-10T23:29:00.000-07:00</published><updated>2008-07-10T23:31:10.467-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>Sql2k8 on August pricelist</title><content type='html'>Microsoft officially announcing that SQL Server 2008 will be released in August, and that too with no price increase!&lt;br /&gt;&lt;a href=&quot;http://www.eweek.com/c/a/Application-Development/Microsoft-to-Deliver-SQL-Server-2008-in-August/&quot;&gt;http://www.eweek.com/c/a/Application-Development/Microsoft-to-Deliver-SQL-Server-2008-in-August/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://blogs.technet.com/dataplatforminsider/archive/2008/07/09/sql-server-2008-available-on-august-price-list.aspx&quot;&gt;http://blogs.technet.com/dataplatforminsider/archive/2008/07/09/sql-server-2008-available-on-august-price-list.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/2406922122940600200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/2406922122940600200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/2406922122940600200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/2406922122940600200'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/07/sql2k8-on-august-pricelist.html' title='Sql2k8 on August pricelist'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-7488712018688884444</id><published>2008-07-10T23:19:00.000-07:00</published><updated>2008-07-10T23:28:31.394-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="Backups"/><title type='text'>Backups with COPY_ONLY option</title><content type='html'>We have heard a lot that having regular backups is a must in any database environment. But, there are cases where having even regular full, differential and log backups will not ensure that the database is secure, and you can lose the work for hours or days. This happens due to backup chain break when someone takes a full backup apart from the regular scheduled backups and the subsequent differential backups will have a different backup_lsn. The remedy is using the COPY_ONLY option with full backups which doesn’t break the chain. Paul Randal has illustrated the importance of this with a post which I noticed recently only &lt;a href=&quot;http://www.sqlskills.com/blogs/paul/2007/10/15/BACKUPWITHCOPYONLYHowToAvoidBreakingTheBackupChain.aspx&quot;&gt;http://www.sqlskills.com/blogs/paul/2007/10/15/BACKUPWITHCOPYONLYHowToAvoidBreakingTheBackupChain.aspx&lt;/a&gt;. So as a DBA, next time when your developers ask you for a backupset of a production database, either restore it from a regular backupset or take a backup with the COPY_ONLY option.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/7488712018688884444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/7488712018688884444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/7488712018688884444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/7488712018688884444'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/07/backups-with-copyonly-option.html' title='Backups with COPY_ONLY option'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-6490337559192323488</id><published>2008-06-12T05:33:00.000-07:00</published><updated>2008-06-12T05:58:48.317-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="Indexes"/><title type='text'>Reorganization of  Non-Clustered Indexes</title><content type='html'>We all have seen people getting confused on the indexes reorganization processes. One of doubts that often popup is that whether the clustered index reorganization of a table will automatically reorganize all the non-clustered indexes on the table. Well, the answer is that it depends on the version and on the type of the clustered index column.In case of SQL server 2005, the answer is straight forward – the non-clustered indexes will NOT be reorganized at all. If the version is SQL Server 2000, it depends on the clustered index. Let us discuss SQL Server 2000 first. In SQL Server 2000, if the table is a heap, then the non-clustered indexes will locate the row corresponding to a key, based on the physical recordid which consists of the pageid and the record slot. This is a physical value. So in a heap, the lookup reference is a physical location. In case we create a clustered index on the heap or remove the clustered index on a table, these physical locations may get changed due to the rearrangements. Hence, the lookup references for the non-clustered indexes will become invalid which means the non-clustered indexes need to be reorganized.&lt;br /&gt;Now, let us consider that the table is not a heap and has a clustered index. In case the table has a clustered index, the lookup is NOT based on the physical recordid. This is because if there is a clustered index, the lookup can uniquely identify the record using the clustered index key. This is logical reference, because the reference is towards a clustered index key and not to any physical location. However, if we drop the clustered index from the table, the logical lookup references based on the clustered index will become invalid, and hence the non-clustered indexes have to be reorganized.&lt;br /&gt;Now, let’s see what will happen when we reorganize an existing clustered index. We know that a clustered index can be unique or non-unique. To ensure the uniqueness of non-unique clustered index keys, internally SQL Server automatically adds a uniquifier to every key of the clustered index (This does not happen with a unique clustered key). Now, if the non-unique clustered index is reorganized, the uniquifier is recreated, which will in turn make the lookup references invalid. So, the non-clustered indexes have to be recreated to ensure the integrity. But, if the clustered index is a unique clustered index, there is no uniquifier and therefore no uniquifier recreation is required during reorganization. Hence, the non-clustered indexes need not be recreated.&lt;br /&gt;All the above things are the same in SQL Server 2005 except that the uniquifiers are not recreated for a non-unique clustered index during a index reorganization. Instead of recreating the uniquifiers, it will reuse the old uniquifiers. This means, even if the non-unique clustered index is recreated, there is no chance of the lookup references becoming invalid. So, there is no need of recreating the non-clustered indexes neither for a unique clustered index nor for a non-unique clustered index. Hence we can summarize as follows – &lt;img id=&quot;BLOGGER_PHOTO_ID_5210976706084660338&quot; style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgusaAtJGP8xGtCJI9JaSRdcH4oNlgx_3uuKN9hn16fmqOec-u_3jNJ3qEYE4_5iUVt9e3qof3hPCEsnH7shN6t3GzeVUoryxwZhrsCeaRcoiozq406extjb7V4QhxcOZON7bSYl_I-U9A/s400/img.JPG&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;(Click on the image for a larger view)&lt;br /&gt;Now, you can go back and see whether your index maintenance plans and scripts require any modification!</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/6490337559192323488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/6490337559192323488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6490337559192323488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6490337559192323488'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/06/reorganization-of-non-clustered-indexes_12.html' title='Reorganization of  Non-Clustered Indexes'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgusaAtJGP8xGtCJI9JaSRdcH4oNlgx_3uuKN9hn16fmqOec-u_3jNJ3qEYE4_5iUVt9e3qof3hPCEsnH7shN6t3GzeVUoryxwZhrsCeaRcoiozq406extjb7V4QhxcOZON7bSYl_I-U9A/s72-c/img.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-7597714928899938844</id><published>2008-06-12T03:30:00.000-07:00</published><updated>2008-06-12T03:31:30.797-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>SQL Server 2008 RC0</title><content type='html'>SQL Server 2008 RC0 is now available for download; find it at &lt;a href=&quot;http://download.microsoft.com/download/2/0/c/20cf6e18-0448-4e7b-8d8c-60a3c4802671/Download_Instructions_ENU.htm&quot;&gt;http://download.microsoft.com/download/2/0/c/20cf6e18-0448-4e7b-8d8c-60a3c4802671/Download_Instructions_ENU.htm&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/7597714928899938844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/7597714928899938844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/7597714928899938844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/7597714928899938844'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/06/sql-server-2008-rc0.html' title='SQL Server 2008 RC0'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-1327901046746027600</id><published>2008-05-26T02:38:00.000-07:00</published><updated>2008-05-29T06:34:39.209-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="fragmentation"/><title type='text'>Fragmentation with Shrink</title><content type='html'>Whenever I hear questions on database shrinking, always my first question would be “why you need to shrink”. It is not easy for me to understand why people always look for shrinking a database whenever they see some free space within the database. I always say, forget that the space there; it can be of use later. I would recommend database shrinking only in the following conditions –&lt;br /&gt;1. The database is getting archived&lt;br /&gt;2. We are damn sure that the database won’t grow anymore.&lt;br /&gt;3. The database has a huge amount of free space and we need to restore the database to a server that doesn’t have enough disk space.&lt;br /&gt;A database shrink has too many disadvantages –&lt;br /&gt;1. Increased database fragmentation.&lt;br /&gt;2. Increased file fragmentation.&lt;br /&gt;3. The resources utilization to do the shrink and then the required growth in future&lt;br /&gt;4. The user downtime during the growth and shrink process.&lt;br /&gt;There is a small but great post from Paul Randal on the autoshrink and autogrowth processes, and how it increases fragmentation. Paul being one of the best SQL Server professionals in the world and a long time program manager in the Storage Engine team, I dont think there are many  who can say something as convincingly as Paul on this topic. A must read post for any production DBA. See his post here &lt;a href=&quot;http://www.sqlskills.com/blogs/paul/2007/11/13/AutoshrinkTurnItOFF.aspx&quot;&gt;http://www.sqlskills.com/blogs/paul/2007/11/13/AutoshrinkTurnItOFF.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/1327901046746027600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/1327901046746027600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/1327901046746027600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/1327901046746027600'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/05/fragmentation-with-shrink.html' title='Fragmentation with Shrink'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-2119273419853853120</id><published>2008-05-19T03:55:00.001-07:00</published><updated>2008-05-19T04:26:22.434-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="ddl trigger"/><title type='text'>Database Change Logging</title><content type='html'>Recently, I was asked to configure process with which the developers will get to know the changes that happened on the dev boxes. This was important because we are having new application pilot run in parallel with the existing system, and there were different departments and a lot of teams involved in the development and QA tasks. I thought of sharing how we accomplished this.&lt;br /&gt;The process we agreed upon is to use DDL triggers to track the schema changes, and send the data on a weekly basis to the concerned people.&lt;br /&gt;The first thing we did was to create a log table in the databases. After creating the table, we created a ddl trigger on the database, so that this trigger will get fired on every schema change on the database. The trigger captures the eventdata for each schema change and inserts the information such as login name, host name, complete xml event data etc into the Log table. This helped us to have a complete log on the changes happening on the database schema. Following is the code for the table creation and ddl trigger.&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;**********************************************************************************&lt;br /&gt;-- Script: CretaTable_DatabaseLog.sql&lt;br /&gt;-- Author: RAJAN JOHN&lt;br /&gt;-- Date: 05/08/2008&lt;br /&gt;--**********************************************************************************&lt;br /&gt;USE [MyDatabase]&lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS OFF&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER ON&lt;br /&gt;GO&lt;br /&gt;SET ANSI_PADDING ON&lt;br /&gt;GO&lt;br /&gt;CREATE TABLE [dbo].[DatabaseLog](&lt;br /&gt;[PostTime] [datetime] NULL,&lt;br /&gt;[DatabaseUser] [varchar](100) NULL,&lt;br /&gt;[hostname] [varchar](100) NULL,&lt;br /&gt;[Event] [varchar](100) NULL,&lt;br /&gt;[Schema] [varchar](100) NULL,&lt;br /&gt;[Object] [varchar](100) NULL,&lt;br /&gt;[XmlEvent] [xml] NULL&lt;br /&gt;) ON [PRIMARY]&lt;br /&gt;GO&lt;br /&gt;SET ANSI_PADDING OFF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;**********************************************************************************-- Script: SendDatabaseChangeLog.sql&lt;br /&gt;-- Author: RAJAN JOHN&lt;br /&gt;-- Date: 05/08/2008&lt;br /&gt;--**********************************************************************************&lt;br /&gt;**********************************************************************************&lt;br /&gt;USE [MyDatabase]&lt;br /&gt;GO&lt;br /&gt;/****** Object: DdlTrigger [ddlDatabaseTrigger_DatabaseChangeLo]&lt;br /&gt;SET ANSI_NULLS ON&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER ON&lt;br /&gt;GO&lt;br /&gt;CREATE TRIGGER [ddlDatabaseTrigger_DatabaseChangeLog]&lt;br /&gt;ON DATABASE&lt;br /&gt;FOR DDL_DATABASE_LEVEL_EVENTS&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;SET NOCOUNT ON;&lt;br /&gt;&lt;br /&gt;DECLARE @data XML;&lt;br /&gt;DECLARE @schema sysname;&lt;br /&gt;DECLARE @object sysname;&lt;br /&gt;DECLARE @eventType sysname;&lt;br /&gt;DECLARE @LoginName sysname;&lt;br /&gt;DECLARE @SPID sysname;&lt;br /&gt;DECLARE @hostname varchar(100);&lt;br /&gt;&lt;br /&gt;SET @data = EVENTDATA();&lt;br /&gt;SET @eventType = @data.value(&#39;(/EVENT_INSTANCE/EventType)[1]&#39;, &#39;sysname&#39;);&lt;br /&gt;SET @schema = @data.value(&#39;(/EVENT_INSTANCE/SchemaName)[1]&#39;, &#39;sysname&#39;);&lt;br /&gt;SET @object = @data.value(&#39;(/EVENT_INSTANCE/ObjectName)[1]&#39;, &#39;sysname&#39;) ;&lt;br /&gt;SET @LoginName =@data.value(&#39;(/EVENT_INSTANCE/LoginName)[1]&#39;, &#39;sysname&#39;) ;&lt;br /&gt;SET @SPID =@data.value(&#39;(/EVENT_INSTANCE/SPID)[1]&#39;, &#39;sysname&#39;);&lt;br /&gt;SELECT @hostname=hostname FROM master.dbo.sysprocesses WHERE spid=@SPID&lt;br /&gt;INSERT [dbo].[DatabaseLog]&lt;br /&gt;([PostTime],&lt;br /&gt;[DatabaseUser],&lt;br /&gt;[Event],&lt;br /&gt;[Schema],&lt;br /&gt;[Object],&lt;br /&gt;[XmlEvent],&lt;br /&gt;[hostname] )&lt;br /&gt;VALUES&lt;br /&gt;( GETDATE(),&lt;br /&gt;@LoginName,&lt;br /&gt;@eventType,&lt;br /&gt;CONVERT(sysname, @schema),&lt;br /&gt;CONVERT(sysname, @object),&lt;br /&gt;@data,&lt;br /&gt;@hostname );&lt;br /&gt;SET NOCOUNT OFF&lt;br /&gt;END;&lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS OFF&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER OFF&lt;br /&gt;GO&lt;br /&gt;ENABLE TRIGGER [ddlDatabaseTrigger_DatabaseChangeLo] ON DATABASE&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;Now, the next step was to provide a report on the schema changes to the concerned people (the development leads, QA leads etc). Initially, we thought of running a query on the log table on a weekly basis, and copy-paste the resultset and send via email. Then we decided on automating this process as well. We wrote a job that uses database mail and send the results of the query to the concerned people. Following is the code for the sp that is run by the job.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;*************************************************************************************&lt;br /&gt;-- Script: SendDatabaseChangeLog.sql&lt;br /&gt;-- Author: RAJAN JOHN&lt;br /&gt;-- Date: 05/08/2008&lt;br /&gt;--*************************************************************************************&lt;br /&gt;*************************************************************************************&lt;br /&gt;Declare @DeBug bit&lt;br /&gt;Declare @strServerName varchar(255)&lt;br /&gt;Declare @mailRecipients varchar(max),&lt;br /&gt;@mailImporance varchar(6),&lt;br /&gt;@subjectString nvarchar(255),&lt;br /&gt;@mailBody nvarchar(max),&lt;br /&gt;@mailQuery nvarchar(max),&lt;br /&gt;@resultAttachFlag bit,&lt;br /&gt;@resultAttachFileName nvarchar(255),&lt;br /&gt;@resultColSeperator char(1),&lt;br /&gt;@resultWidth int&lt;br /&gt;--*************************************************************************************&lt;br /&gt;set @DeBug = 1&lt;br /&gt;select @strServerName = CASE CAST(isnull(ServerProperty(&#39;InstanceName&#39;), &#39;&#39;) AS VARCHAR(100))&lt;br /&gt;WHEN &#39;&#39; THEN CAST(ServerProperty(&#39;MachineName&#39;) AS VARCHAR(100))&lt;br /&gt;ELSE CAST(ServerProperty(&#39;MachineName&#39;) AS VARCHAR(100)) + &#39;\&#39; + CAST(isnull(ServerProperty(&#39;InstanceName&#39;), &#39;&#39;) AS VARCHAR(100))&lt;br /&gt;END&lt;br /&gt;set @mailImporance = &#39;High&#39;&lt;br /&gt;set @subjectString = N&#39;Weekly Database Change Log - &#39; + @strServerName + &#39;\MyDatabase&#39;&lt;br /&gt;set @mailBody = N&#39;Please find below the database changes from &#39; + cast(dateadd(wk, -1, getdate()) as varchar)+ N&#39; and &#39; + cast(getdate() as varchar)&lt;br /&gt;set @mailQuery = N&#39;SELECT [PostTime], [DatabaseUser], [HostName], [Event], [Schema], [Object], [XmlEvent]&lt;br /&gt;FROM HrTaxMasterDB.dbo.DatabaseLog WHERE DATEDIFF(wk, [PostTime] , GETDATE()) &lt;= 1&#39; set @resultAttachFlag = 1 set @resultAttachFileName = N&#39;Database Change Log&#39; set @resultColSeperator = char(9) set @resultWidth = 32767 --************************************************************************************* if @DeBug = 1 begin set @mailRecipients = &lt;a href=&quot;mailto:N&quot;&gt;N&lt;/a&gt;&#39;Rajan.JOhn@MyCompany.com print @SubjectString + char(13) + @mailBody execute msdb.dbo.sp_send_dbmail @profile_name = &#39;Database Change Log Profile&#39;, @recipients = @mailRecipients, @subject = @SubjectString, @body = @MailBody, @body_format = &#39;TEXT&#39;, @importance = @mailImporance, @query = @mailQuery, @attach_query_result_as_file = @resultAttachFlag, @query_attachment_filename = @resultAttachFileName, @query_result_separator = @resultColSeperator, @query_result_width = @resultWidth, @query_no_truncate = 0 &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;end&lt;/span&gt;&lt;/em&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/2119273419853853120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/2119273419853853120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/2119273419853853120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/2119273419853853120'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/05/change-logging.html' title='Database Change Logging'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-6028748301597511896</id><published>2008-05-19T01:13:00.000-07:00</published><updated>2008-05-19T01:23:56.847-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="capacity planning"/><title type='text'>Capacity Planning - Sizing Memory</title><content type='html'>Physical memory is one of the important hardware components for a database server. This is because of the fact that, adequate physical memory decreases the physical IO for the server by reusing as much as the data and query plans that exist on the cache.&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;_Toc196743613&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;SQL Server Memory Requirements&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;SQL Server does dynamic memory allocation. This means SQL Server will allocate whatever memory left on the server that is not being used for its functioning. Whenever any application or the operating system requires additional memory, SQL Server releases memory for their use.&lt;br /&gt;Different components of SQL Server require physical memory for their functioning. The following sections describe the components within SQL Server which are the main users of physical memory.&lt;br /&gt;&lt;strong&gt;Buffer Cache Requirements&lt;/strong&gt;&lt;br /&gt;SQL Server buffer cache is the area in the physical memory where the data pages and index pages are cached. The buffer cache is the largest consumer of physical memory in SQL Server. The dynamic allocation and de-allocation of memory by SQL Server is done mostly by adjusting the size of the buffer pool. The server should be provided with adequate memory to ensure a very high cache hit ratio and the amount of physical IO be reduced to a very minimum level. A decrease in the buffer cache size increases physical IO activities.&lt;br /&gt;&lt;strong&gt;Procedure Cache Requirements&lt;/strong&gt;&lt;br /&gt;Procedure Cache is the area in physical memory where SQL Server caches the compiled execution plans for queries and stored procedures. This is the second largest consumer of physical memory in SQL Server. A healthy size of procedure cache is required to reduce the number of query compilations and optimizations. A decrease in the size of procedure cache increases recompilations which in turn increases processor overhead.&lt;br /&gt;&lt;strong&gt;Connection Context Requirements&lt;/strong&gt;&lt;br /&gt;Each user connection to SQL Server requires a certain amount of memory for handling the user session. This comes around an average of 500KB per connection. Hence, larger the set of concurrent users accessing the database, larger will be the amount of memory required to support the connections.&lt;br /&gt;&lt;strong&gt;Other Requirements&lt;/strong&gt;&lt;br /&gt;There are other components in SQL Server that require memory. These include the lock manager etc.&lt;br /&gt;The details on SQL Server memory allocation can be obtained by the command “DBCC MEMORYSTATUS”&lt;br /&gt;See the hardware comparison details for different SQL Server editions.&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;_Toc196743614&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Sizing Memory through Load Testing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;The best method to estimate the physical memory requirements for a database application infrastructure is through load testing.&lt;br /&gt;We need to do the simulation for the application load with the maximum number of concurrent users and transactions possible, and have to take the memory consumption. Physical memory has to be allocated enough to avoid any memory bottleneck.&lt;br /&gt;A decrease in memory affects the whole system. Memory deficiency increases cache misses and paging, paging increases physical IO and these all increase the processor utilization.&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;_Toc196743615&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Sizing Memory through Workload Analysis&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;In all cases, its will not be possible to create the infrastructure prototype and do simulations. In such cases, memory sizing can be carried out by manually doing a workload analysis and calculating the memory requirements by the different components of the server infrastructure.&lt;br /&gt;We can have an example of a sales database application that experiences an annual user accounts growth of 15% and sales data growth of 20%. The following table shows a rough estimation of the memory requirements for procedure cache, user connections etc, and how that will affect the buffer cache.&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjqW6IQ4s_O-N6pJb16rwcTFMtGe05A356LTJskFSaETO_OmOZYaeymkb4n6pCf75bh3tFZYDsx0cuoXSMNVt6aSX4RzhTbh6vqWFF3JjunWX70rveXn1CGfFx7SeQYuY5Whon9XN7BQ/s1600-h/cp.JPG&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5202000069570008482&quot; style=&quot;FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjqW6IQ4s_O-N6pJb16rwcTFMtGe05A356LTJskFSaETO_OmOZYaeymkb4n6pCf75bh3tFZYDsx0cuoXSMNVt6aSX4RzhTbh6vqWFF3JjunWX70rveXn1CGfFx7SeQYuY5Whon9XN7BQ/s320/cp.JPG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is just a rough estimation, assuming that one user connection requires around 500KB and the SQL Server, OS program components together require around 1GB. Similarly, we can do accurate calculations and project the memory requirements.&lt;br /&gt;&lt;br /&gt;With this, I am concluding the current Capacity Planning series. I will be demonstrating on a few tools, trends etc in some future posts.</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/6028748301597511896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/6028748301597511896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6028748301597511896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/6028748301597511896'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/05/capacity-planning-sizing-memory.html' title='Capacity Planning - Sizing Memory'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjqW6IQ4s_O-N6pJb16rwcTFMtGe05A356LTJskFSaETO_OmOZYaeymkb4n6pCf75bh3tFZYDsx0cuoXSMNVt6aSX4RzhTbh6vqWFF3JjunWX70rveXn1CGfFx7SeQYuY5Whon9XN7BQ/s72-c/cp.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-118582969150400398.post-3895142549259839936</id><published>2008-05-06T03:00:00.000-07:00</published><updated>2008-05-06T03:02:37.505-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="administration"/><category scheme="http://www.blogger.com/atom/ns#" term="capacity planning"/><title type='text'>Capacity Planning - Planning the Processor Subsystem</title><content type='html'>Planning the processor subsystem for a database infrastructure is a straight forward task. Normally, all the high end servers will be using the latest available best processors. If all the individual servers are already loaded with the best the maximum supported number of best available processors, the way to increase the processing power is to increase the number of servers. These two ways of increasing processing power is explained in the sections below.&lt;br /&gt;&lt;a name=&quot;_Toc196743610&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Scale-up vs. Scale-out&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Scale up is the process of increasing the processing power of an already existing server either by adding more processors or by increasing the processing power of the processors. Scale out is the process of increasing the processing power of a database infrastructure by increasing the number of servers so that the load can be distributed among the different servers. Both these approaches have got their benefits and downsides.&lt;br /&gt;Scale up is normally considered as a quick fix to resolve processor bottlenecks for database applications. With the arrival of hot swappable CPUs and databases supporting them, this approach doesn’t require little downtime and lesser overhead of planning. The major advantage is that, since it does not increase the number of servers, there is no extra overhead in terms of maintenance, monitoring, licensing etc.&lt;br /&gt;Though scale up can be done easily as a quick fix for issues, it has its downsides. The major disadvantage is that there is always a maximum gain we can get by scaling up. This is because there are limitations for the maximum number of processors supported for a particular operating system as well as the RDBMS. Hence, scaling up cannot be considered as a permanent solution especially when the application is an ongoing growing application.&lt;br /&gt;Scale out is normally considered as a permanent solution for increasing processing power. The most important advantage of this approach is the expandability. We can add more servers and make the application to use the newly added servers.&lt;br /&gt;Since scale out is a more permanent solution, it requires a lot of planning and overhead. The most important disadvantage is that the application should be redesigned to make use of the multiple servers. This may not be an easy task for ongoing applications, and will be a costly affair. There are other disadvantages as well. These include the increased overhead of extra servers for maintenance, monitoring licensing etc.&lt;br /&gt;We can decide whether to go for scale up or scale out depending upon the current situation of the application, and what is the future of the application.&lt;br /&gt;&lt;a name=&quot;_Toc196743611&quot;&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;Factors for Considerations&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;While selecting the processors, there are a few factors to be considered and see how they affect the application environment.&lt;br /&gt;&lt;strong&gt;Ø    Processor Architecture&lt;/strong&gt;&lt;br /&gt;Nowadays, processors are available in 32bit and 64bit architectures. We can decide which architecture our infrastructure requires based upon the cost and scalability requirements of the application.&lt;br /&gt;The other important factors that have to be considered when selecting the processors are the following. Since, they are known to most people, I am not explaining each of them.&lt;br /&gt;o       Processor Cores&lt;br /&gt;o       L2 Cache&lt;br /&gt;o       Hyper threading</content><link rel='replies' type='application/atom+xml' href='http://rajanjohn.blogspot.com/feeds/3895142549259839936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/118582969150400398/3895142549259839936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3895142549259839936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/118582969150400398/posts/default/3895142549259839936'/><link rel='alternate' type='text/html' href='http://rajanjohn.blogspot.com/2008/05/capacity-planning-planning-processor.html' title='Capacity Planning - Planning the Processor Subsystem'/><author><name>Rajan John</name><uri>http://www.blogger.com/profile/02986946484724213417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiQwvfha8bSO0dmop-NGd79_Q0airXULOgjCtITsj1w-eEBG2SmOsDnCy4ittoswY2rrVQLqrACN8EQlQOdqnKgi6PzkCOzJMo7bMEHG4bDa4u0x8SAVSVu_81JPU5Gg/s220/120607002904.jpg'/></author><thr:total>0</thr:total></entry></feed>