<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>SQL RNNR</title>
	
	<link>http://jasonbrimhall.info</link>
	<description>1 DBA's Professional Blog</description>
	<lastBuildDate>Mon, 02 Apr 2012 12:00:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SqlRnnr" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sqlrnnr" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Move the T-log file of the Mirror Database</title>
		<link>http://jasonbrimhall.info/2012/04/02/move-the-t-log-file-of-the-mirror-database/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=move-the-t-log-file-of-the-mirror-database</link>
		<comments>http://jasonbrimhall.info/2012/04/02/move-the-t-log-file-of-the-mirror-database/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 12:00:59 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[SQL Administration]]></category>
		<category><![CDATA[SQL Internals]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1652</guid>
		<description><![CDATA[On more than one occasion, I have run into a case where a large database with a large transaction log was being mirrored.  Then a hiccup comes along &#8211; the transaction log on the primary server grows to a point where the transaction log on the secondary server fills the [...]]]></description>
			<content:encoded><![CDATA[<p>On more than one occasion, I have run into a case where a large database with a large transaction log was being mirrored.  Then a hiccup comes along &#8211; the transaction log on the primary server grows to a point where the transaction log on the secondary server fills the drive.  Now you have a problem and you need to reclaim some space or you need to find more disk.</p>
<p>Well, just because the database is mirrored and the drive is out of space, doesn&#8217;t mean there is nothing that can be done without impacting significantly the primary server &#8211; nor the mirror.</p>
<p>SQLCat has a nice write-up on what can be done.  I have used this method a few times, and felt that it needs to be brought up.  You can read the SQLCat article <a href="http://sqlcat.com/sqlcat/b/msdnmirror/archive/2010/04/05/moving-the-transaction-log-file-of-the-mirror-database.aspx">here</a>.</p>
<p>In short (here are the steps from that article), you can do the following:</p>
<blockquote>
<ol>
<li><span style="font-family: Calibri;"><span style="font-size: small;">On the secondary server, Use ALTER DATABASE MODIFY FILE to move the log file.</span></span></li>
</ol>
<p><span style="font-size: small;">ALTER DATABASE &lt;db_name&gt; MODIFY FILE (NAME = LOG_FILE, FILENAME = &#8216;new location&#8217;)<span style="font-family: Calibri;">.</span></span></p>
<ol start="2">
<li><span style="font-size: small;"><span style="font-family: Calibri;">Stop the SQL Server Service for the instance which has the mirrored (secondary) database.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Move the log file to the new location specified in the Modify File script already run.</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Start the SQL Server Service for the instance which has the mirrored (secondary) database.</span></span></li>
</ol>
</blockquote>
<p>Performing these steps can be just the trick needed to save the day.  Performing this move this way has saved me an outage on more than one occasion.  Also, this has saved me hours of work that could come along with having to break and rebuild the mirror.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/04/05/s3olv-april-2011/" rel="bookmark" class="crp_title">S3OLV April 2011</a></li><li><a href="http://jasonbrimhall.info/2011/01/10/january-2011-s3olv/" rel="bookmark" class="crp_title">January 2011 S3OLV</a></li><li><a href="http://jasonbrimhall.info/2010/07/07/july-sssolv-ug-meeting/" rel="bookmark" class="crp_title">July SSSOLV UG Meeting</a></li><li><a href="http://jasonbrimhall.info/2011/03/02/s3olv-march-2011/" rel="bookmark" class="crp_title">S3OLV March 2011</a></li><li><a href="http://jasonbrimhall.info/2010/08/25/memory/" rel="bookmark" class="crp_title">Memory</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1652" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=qJigw-hlCFQ:LkTRMBQLOMU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=qJigw-hlCFQ:LkTRMBQLOMU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=qJigw-hlCFQ:LkTRMBQLOMU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=qJigw-hlCFQ:LkTRMBQLOMU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=qJigw-hlCFQ:LkTRMBQLOMU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=qJigw-hlCFQ:LkTRMBQLOMU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=qJigw-hlCFQ:LkTRMBQLOMU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=qJigw-hlCFQ:LkTRMBQLOMU:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=qJigw-hlCFQ:LkTRMBQLOMU:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/qJigw-hlCFQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/04/02/move-the-t-log-file-of-the-mirror-database/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQL 2012 has Launched</title>
		<link>http://jasonbrimhall.info/2012/04/01/sql-2012-has-launched/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sql-2012-has-launched</link>
		<comments>http://jasonbrimhall.info/2012/04/01/sql-2012-has-launched/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 12:00:55 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[April 1]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1654</guid>
		<description><![CDATA[LAUNCH If you have been hiding under a rock, you have probably not heard that SQL 2012 has launched.  With it, some really cool features are now available to use in our SQL database environments. Some of these cool new features include some new DMVs, the AlwaysOn feature, and columnstore [...]]]></description>
			<content:encoded><![CDATA[<h2>LAUNCH</h2>
<p><a href="http://jasonbrimhall.info/wp-content/uploads/2012/03/rocketlaunch.png"><img class="alignright size-full wp-image-1658" title="rocketlaunch" src="http://jasonbrimhall.info/wp-content/uploads/2012/03/rocketlaunch.png" alt="" width="204" height="405" /></a>If you have been hiding under a rock, you have probably not heard that SQL 2012 has launched.  With it, some really cool features are now available to use in our SQL database environments.</p>
<p>Some of these cool new features include some new DMVs, the AlwaysOn feature, and columnstore indexes.</p>
<p>But did you know that there are some new recommended best practices?</p>
<p>Today, I want to share with you a new best practice that involves table naming schemes.</p>
<p>With the release of SQL 2012, it is now advised that tables be named in such a manner that the name is obfuscated.  The reason for this is to slow down any would be attacker from quickly finding which table holds the most sensitive data.  Currently it is not too far fetched for an attacker to look in a database and figure out where the orders or customer confidential information may be placed.  After all, it is fairly common to name those tables in such a manner that the name describes the data.</p>
<p>Now though, the best practice is pushing in a new direction.  And no longer is it even a good idea to use legible words.  The drive is for full obfuscation of the table name.  In an effort to demonstrate, here is a quick script that will create several tables that are obfuscated in name.</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">IF</span> not exists <span class="br0">&#40;</span><span class="kw1">SELECT</span> 1 <span class="kw1">FROM</span> sys.<span class="me1">databases</span> <span class="kw1">WHERE</span> name <span class="sy0">=</span> <span class="st0">'Fun'</span><span class="br0">&#41;</span>
<span class="kw1">BEGIN</span>
	<span class="kw1">CREATE</span> <span class="kw1">DATABASE</span> Fun
<span class="kw1">END</span>;
GO
&nbsp;
<span class="kw1">USE</span> Fun;
Go
&nbsp;
<span class="kw1">SET</span> <span class="kw1">NOCOUNT</span> <span class="kw1">ON</span>;
GO
&nbsp;
<span class="kw1">DECLARE</span> @rocket <span class="kw1">CHAR</span><span class="br0">&#40;</span>100<span class="br0">&#41;</span>
<span class="kw1">DECLARE</span> @boost <span class="kw1">TINYINT</span>
<span class="kw1">DECLARE</span> @tiers <span class="kw1">TINYINT</span>
<span class="kw1">DECLARE</span> @maxtiers <span class="kw1">TINYINT</span>
<span class="kw1">DECLARE</span> @<span class="kw1">SQL</span>	<span class="kw1">VARCHAR</span><span class="br0">&#40;</span><span class="kw2">MAX</span><span class="br0">&#41;</span>
<span class="kw1">DECLARE</span> @overall	<span class="kw1">TABLE</span>	<span class="br0">&#40;</span>rocket <span class="kw1">VARCHAR</span><span class="br0">&#40;</span><span class="kw2">MAX</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
<span class="kw1">DECLARE</span> @somevar	<span class="kw1">VARCHAR</span><span class="br0">&#40;</span><span class="kw2">MAX</span><span class="br0">&#41;</span>
		,@someint	<span class="kw1">INT</span> <span class="sy0">=</span> 0
&nbsp;
<span class="kw1">SELECT</span> @rocket <span class="sy0">=</span> <span class="st0">' '</span>, @tiers <span class="sy0">=</span> 1, @boost <span class="sy0">=</span> 1, @maxtiers <span class="sy0">=</span> 4
<span class="kw1">PRINT</span> @rocket
&nbsp;
<span class="kw1">INSERT</span> <span class="kw1">INTO</span> @overall <span class="br0">&#40;</span>rocket<span class="br0">&#41;</span>
	<span class="kw1">VALUES</span> <span class="br0">&#40;</span>@rocket<span class="br0">&#41;</span>;
&nbsp;
<span class="kw1">WHILE</span> @tiers <span class="sy0">&lt;</span> @maxtiers
<span class="kw1">BEGIN</span>
	<span class="kw1">SELECT</span> @boost <span class="sy0">=</span> <span class="kw2">POWER</span><span class="br0">&#40;</span>@tiers,2<span class="br0">&#41;</span>
	<span class="kw1">WHILE</span> @boost <span class="sy0">&lt;</span> 12<span class="sy0">*</span>@tiers
	<span class="kw1">BEGIN</span>
		<span class="kw1">SET</span> @rocket <span class="sy0">=</span>  <span class="kw2">STUFF</span><span class="br0">&#40;</span>@rocket, <span class="br0">&#40;</span>DATALENGTH<span class="br0">&#40;</span>@rocket<span class="br0">&#41;</span><span class="sy0">/</span>2<span class="br0">&#41;</span><span class="sy0">-</span><span class="br0">&#40;</span>@boost<span class="sy0">/</span>2<span class="br0">&#41;</span>, @boost,<span class="kw2">REPLICATE</span><span class="br0">&#40;</span><span class="st0">'*'</span>, @boost<span class="br0">&#41;</span><span class="br0">&#41;</span>
			<span class="kw1">UPDATE</span> @overall
				<span class="kw1">SET</span> rocket <span class="sy0">=</span> rocket <span class="sy0">+</span><span class="kw1">CHAR</span><span class="br0">&#40;</span>10<span class="br0">&#41;</span> <span class="sy0">+</span> @rocket
			<span class="kw1">SET</span> @<span class="kw1">SQL</span> <span class="sy0">=</span> <span class="st0">'Create Table ['</span><span class="sy0">+</span> @rocket <span class="sy0">+</span> <span class="st0">'_'</span><span class="sy0">+</span> <span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">VARCHAR</span>,@someint<span class="br0">&#41;</span> <span class="sy0">+</span><span class="st0">'] (someint int);'</span>                 <span class="kw1">PRINT</span> @<span class="kw1">SQL</span>
		<span class="kw1">SET</span> @boost <span class="sy0">=</span> @boost<span class="sy0">+</span>2
		<span class="kw1">SET</span> @someint <span class="sy0">=</span> @someint <span class="sy0">+</span> 1
&nbsp;
	<span class="kw1">END</span>
&nbsp;
	<span class="kw1">SET</span> @tiers <span class="sy0">=</span> @tiers<span class="sy0">+</span>1
<span class="kw1">END</span>
&nbsp;
<span class="kw1">SELECT</span> @somevar <span class="sy0">=</span>  rocket
	<span class="kw1">FROM</span> @overall
&nbsp;
<span class="kw1">PRINT</span> <span class="st0">'The following Tables have been created:'</span> <span class="sy0">+</span><span class="kw1">CHAR</span><span class="br0">&#40;</span>10<span class="br0">&#41;</span><span class="sy0">+</span><span class="kw1">CHAR</span><span class="br0">&#40;</span>13<span class="br0">&#41;</span>
<span class="kw1">PRINT</span> @somevar</pre></div></div>
<p>I like this new standard.  Now, I will just design images into my tables that describe the database in whole.  As you can see, this particular database would be useful for maybe a space case or maybe a hobbyist with a high enthusiasm for rockets.  Or maybe it just works really well for any demo involved with the SQL 2012 Launch.  Other than a neat little picture, the tables are completely obfuscated.</p>
<h2>Conclusion</h2>
<p>Keep best practices in mind whenever designing a database.  Maintaining best practices can help protect the data you were hired to manage and protect.  In addition to that, make sure you forget every other word of this post.  It is complete and utter hogwash.  Happy April Fools.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/03/21/dedupe-data-cte/" rel="bookmark" class="crp_title">Dedupe Data CTE</a></li><li><a href="http://jasonbrimhall.info/2011/11/14/tsql-challenge-63-update/" rel="bookmark" class="crp_title">TSQL Challenge 63 &#8211; Update</a></li><li><a href="http://jasonbrimhall.info/2010/03/19/security-audit/" rel="bookmark" class="crp_title">Security Audit</a></li><li><a href="http://jasonbrimhall.info/2010/01/13/tsql-tuesday-but-i-was-late/" rel="bookmark" class="crp_title">TSQL Tuesday &#8211; But I was Late</a></li><li><a href="http://jasonbrimhall.info/2011/02/08/t-sql-tuesday-15-dba-automaton/" rel="bookmark" class="crp_title">T-SQL Tuesday #15 DBA Automaton</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1654" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=ls7l8pPqZdU:AXBICDOXWgc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=ls7l8pPqZdU:AXBICDOXWgc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=ls7l8pPqZdU:AXBICDOXWgc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=ls7l8pPqZdU:AXBICDOXWgc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=ls7l8pPqZdU:AXBICDOXWgc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=ls7l8pPqZdU:AXBICDOXWgc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=ls7l8pPqZdU:AXBICDOXWgc:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=ls7l8pPqZdU:AXBICDOXWgc:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=ls7l8pPqZdU:AXBICDOXWgc:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/ls7l8pPqZdU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/04/01/sql-2012-has-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seldom Used Indexes</title>
		<link>http://jasonbrimhall.info/2012/03/20/seldom-used-indexes/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=seldom-used-indexes</link>
		<comments>http://jasonbrimhall.info/2012/03/20/seldom-used-indexes/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 12:00:54 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[Index Maintenance]]></category>
		<category><![CDATA[SQL Administration]]></category>
		<category><![CDATA[SQL Script]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1650</guid>
		<description><![CDATA[On occasion you may ask yourself if there are any under used indexes in your database.  If not you, then possibly a manager or client.  Usually this comes up when evaluating for missing indexes or better indexes. SQL Server provides a means to find the information we seek.  We can [...]]]></description>
			<content:encoded><![CDATA[<p>On occasion you may ask yourself if there are any under used indexes in your database.  If not you, then possibly a manager or client.  Usually this comes up when evaluating for missing indexes or better indexes.</p>
<p>SQL Server provides a means to find the information we seek.  We can query the sys.dm_db_index_usage_stats DMV  to garner much of the information we want.  You can read about this DMV <a href="http://msdn.microsoft.com/en-us/library/ms188755(v=sql.110).aspx">here</a>.</p>
<p>The columns we want to take a look at are the seeks, scans and lookups columns.  In conjunction with that, we want to compare those columns to the updates related columns.</p>
<p>Here is an example query.</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">SELECT</span> TableName <span class="sy0">=</span> <span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>s.<span class="kw2">OBJECT_ID</span><span class="br0">&#41;</span>,IndexName <span class="sy0">=</span> i.<span class="me1">name</span>, i.<span class="me1">index_id</span>
        ,TotalUserWrites <span class="sy0">=</span> user_updates
        ,TotalUserReads <span class="sy0">=</span> user_seeks <span class="sy0">+</span> user_scans <span class="sy0">+</span> user_lookups
        ,<span class="br0">&#91;</span><span class="kw2">DIFFERENCE</span><span class="br0">&#93;</span> <span class="sy0">=</span> user_updates <span class="sy0">-</span> <span class="br0">&#40;</span>user_seeks <span class="sy0">+</span> user_scans <span class="sy0">+</span> user_lookups<span class="br0">&#41;</span>
		,TotalSystemReads <span class="sy0">=</span> s.<span class="me1">system_seeks</span> <span class="sy0">+</span> s.<span class="me1">system_scans</span> <span class="sy0">+</span> s.<span class="me1">system_lookups</span>
		,TotalSystemWrites <span class="sy0">=</span> s.<span class="me1">system_updates</span>
<span class="kw1">FROM</span> sys.<span class="me1">dm_db_index_usage_stats</span> <span class="kw1">AS</span> s <span class="kw1">WITH</span> <span class="br0">&#40;</span>NOLOCK<span class="br0">&#41;</span>
	<span class="kw1">INNER</span> <span class="sy0">JOIN</span> sys.<span class="me1">indexes</span> <span class="kw1">AS</span> i <span class="kw1">WITH</span> <span class="br0">&#40;</span>NOLOCK<span class="br0">&#41;</span>
		<span class="kw1">ON</span> s.<span class="br0">&#91;</span><span class="kw2">OBJECT_ID</span><span class="br0">&#93;</span> <span class="sy0">=</span> i.<span class="br0">&#91;</span><span class="kw2">OBJECT_ID</span><span class="br0">&#93;</span>
		<span class="sy0">AND</span> i.<span class="me1">index_id</span> <span class="sy0">=</span> s.<span class="me1">index_id</span>
<span class="kw1">WHERE</span> <span class="kw2">OBJECTPROPERTY</span><span class="br0">&#40;</span>s.<span class="kw2">OBJECT_ID</span>,<span class="st0">'IsUserTable'</span><span class="br0">&#41;</span> <span class="sy0">=</span> 1
	<span class="sy0">AND</span> s.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="sy0">AND</span> user_updates <span class="sy0">&gt;</span> <span class="br0">&#40;</span>user_seeks <span class="sy0">+</span> user_scans <span class="sy0">+</span> user_lookups<span class="br0">&#41;</span>
	And <span class="br0">&#40;</span>user_seeks <span class="sy0">+</span> user_scans <span class="sy0">+</span> user_lookups <span class="sy0">+</span> s.<span class="me1">system_seeks</span> <span class="sy0">+</span> s.<span class="me1">system_scans</span> <span class="sy0">+</span> s.<span class="me1">system_lookups</span><span class="br0">&#41;</span> <span class="sy0">=</span> 0
	<span class="sy0">AND</span> i.<span class="me1">index_id</span> <span class="sy0">&gt;</span> 1
<span class="kw1">ORDER</span> <span class="kw1">BY</span> <span class="br0">&#91;</span><span class="kw2">DIFFERENCE</span><span class="br0">&#93;</span> <span class="kw1">DESC</span>, TotalUserWrites <span class="kw1">DESC</span>, TotalUserReads <span class="kw1">ASC</span> <span class="kw1">OPTION</span> <span class="br0">&#40;</span>RECOMPILE<span class="br0">&#41;</span>;</pre></div></div>
<p>In this query, I am looking at two main components for comparison.  I want to determine where there are more updates on an index than reads.  I also want to see only those indexes that have no reads.</p>
<p>Using a query like this can help you to narrow your search for under-performing indexes.  Indexes returned by this query tend to be more costly to maintain than the benefit they may be providing.  Starting with the indexes returned by this query, you can test and confirm the findings.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2010/04/21/index-stats-duplication/" rel="bookmark" class="crp_title">Index Stats Duplication</a></li><li><a href="http://jasonbrimhall.info/2010/04/27/blob-index-columns/" rel="bookmark" class="crp_title">BLOB Index Columns</a></li><li><a href="http://jasonbrimhall.info/2012/03/14/table-size-and-missing-fk-indexes/" rel="bookmark" class="crp_title">Table Size and Missing FK Indexes</a></li><li><a href="http://jasonbrimhall.info/2010/03/31/index-info/" rel="bookmark" class="crp_title">Index Info</a></li><li><a href="http://jasonbrimhall.info/2010/05/19/tablespace-update/" rel="bookmark" class="crp_title">TableSpace Update</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1650" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=cb9VMl1Bz9Y:eMUrBBS38oI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=cb9VMl1Bz9Y:eMUrBBS38oI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=cb9VMl1Bz9Y:eMUrBBS38oI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=cb9VMl1Bz9Y:eMUrBBS38oI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=cb9VMl1Bz9Y:eMUrBBS38oI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=cb9VMl1Bz9Y:eMUrBBS38oI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=cb9VMl1Bz9Y:eMUrBBS38oI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=cb9VMl1Bz9Y:eMUrBBS38oI:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=cb9VMl1Bz9Y:eMUrBBS38oI:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/cb9VMl1Bz9Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/20/seldom-used-indexes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Another Interesting Sort</title>
		<link>http://jasonbrimhall.info/2012/03/19/another-interesting-sort/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=another-interesting-sort</link>
		<comments>http://jasonbrimhall.info/2012/03/19/another-interesting-sort/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 12:00:47 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1648</guid>
		<description><![CDATA[In October of 2011, I shared an example of a peculiar set of sort requirements.  Today, I am going to share another similar set of requirements.  Based on prior experience, when I saw this request on a sort order, I was sure I could find a simpler solution.  Today, I [...]]]></description>
			<content:encoded><![CDATA[<p>In October of 2011, I shared an example of a peculiar set of <a href="http://jasonbrimhall.info/2011/10/12/an-interesting-sort/">sort requirements</a>.  Today, I am going to share another similar set of requirements.  Based on prior experience, when I saw this request on a sort order, I was sure I could find a simpler solution.  Today, I will share the requirements and solution with you.</p>
<h2>Requirements</h2>
<p>Given a set of characters, you must be able to sort according to the following:</p>
<ol>
<li>!</li>
<li>&#8220;</li>
<li>$</li>
<li>?</li>
<li>@</li>
<li>^</li>
<li>{</li>
<li>&gt;</li>
<li>ASCII values</li>
</ol>
<h2>Setup</h2>
<p>To demonstrate the requirements and solution, let&#8217;s create a temp table and populate it with some values like those in the requirements.</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> #Chars
<span class="br0">&#40;</span>
	MyChar <span class="kw1">CHAR</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span>
<span class="br0">&#41;</span>
&nbsp;
<span class="kw1">INSERT</span> <span class="kw1">INTO</span> #Chars <span class="br0">&#40;</span>MyChar<span class="br0">&#41;</span>
<span class="kw1">VALUES</span>
  <span class="br0">&#40;</span><span class="st0">'!'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'&quot;'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'$'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'?'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'@'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'^'</span><span class="br0">&#41;</span>
, <span class="br0">&#40;</span><span class="st0">'{'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'&gt;'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'1'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'2'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'3'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'4'</span><span class="br0">&#41;</span>
, <span class="br0">&#40;</span><span class="st0">'5'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'6'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'7'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'8'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'9'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'A'</span><span class="br0">&#41;</span>
, <span class="br0">&#40;</span><span class="st0">'B'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'C'</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">'D'</span><span class="br0">&#41;</span></pre></div></div>
<h2>Solution</h2>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">SELECT</span> <span class="sy0">*</span>
	<span class="kw1">FROM</span> #Chars
	<span class="kw1">ORDER</span> <span class="kw1">BY</span> MyChar <span class="kw1">COLLATE</span> SQL_Latin1_General_Cp1251_CS_AS</pre></div></div>
<p>Sometimes the simplest solution requires a lot of testing.  When I came across the requirements, I thought it could be solved via a collation.  The problem was that I did not know which collation.  I had to test a few collations to find the collation that would create the correct result set.  If you are interested in learning about other collations, you can read this <a href="http://msdn.microsoft.com/en-us/library/ms180175.aspx">article</a>.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/10/12/an-interesting-sort/" rel="bookmark" class="crp_title">An Interesting Sort</a></li><li><a href="http://jasonbrimhall.info/2011/11/03/another-color-wheel/" rel="bookmark" class="crp_title">Another Color Wheel</a></li><li><a href="http://jasonbrimhall.info/2011/08/19/bitwise-operations/" rel="bookmark" class="crp_title">Bitwise Operations</a></li><li><a href="http://jasonbrimhall.info/2010/12/13/sql-confessions/" rel="bookmark" class="crp_title">SQL Confessions</a></li><li><a href="http://jasonbrimhall.info/2011/11/14/tsql-challenge-63-update/" rel="bookmark" class="crp_title">TSQL Challenge 63 &#8211; Update</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1648" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=Lk1_zyYfWmQ:_DZgzB5Xlpw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=Lk1_zyYfWmQ:_DZgzB5Xlpw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=Lk1_zyYfWmQ:_DZgzB5Xlpw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=Lk1_zyYfWmQ:_DZgzB5Xlpw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=Lk1_zyYfWmQ:_DZgzB5Xlpw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=Lk1_zyYfWmQ:_DZgzB5Xlpw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=Lk1_zyYfWmQ:_DZgzB5Xlpw:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=Lk1_zyYfWmQ:_DZgzB5Xlpw:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=Lk1_zyYfWmQ:_DZgzB5Xlpw:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/Lk1_zyYfWmQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/19/another-interesting-sort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agent Jobs Using SSIS</title>
		<link>http://jasonbrimhall.info/2012/03/15/agent-jobs-using-ssis/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agent-jobs-using-ssis</link>
		<comments>http://jasonbrimhall.info/2012/03/15/agent-jobs-using-ssis/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 12:00:26 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[SQL Administration]]></category>
		<category><![CDATA[SQL Script]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1646</guid>
		<description><![CDATA[This is a short script to help the DBA with documentation purposes.  This would come in handy especially in those cases where you are consulting or you have taken on a new job. Suppose you want/need to find out what SQL Agent jobs are running SSIS packages.  This script will [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short script to help the DBA with documentation purposes.  This would come in handy especially in those cases where you are consulting or you have taken on a new job.</p>
<p>Suppose you want/need to find out what SQL Agent jobs are running SSIS packages.  This script will help to quickly identify those jobs.</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">SELECT</span> <span class="kw1">DISTINCT</span> j.<span class="me1">name</span>
	<span class="kw1">FROM</span> msdb.<span class="me1">dbo</span>.<span class="me1">sysjobs</span> j
		<span class="kw1">INNER</span> <span class="sy0">JOIN</span> msdb.<span class="me1">dbo</span>.<span class="me1">sysjobsteps</span> js
			<span class="kw1">ON</span> j.<span class="me1">job_id</span> <span class="sy0">=</span> js.<span class="me1">job_id</span>
	<span class="kw1">WHERE</span> js.<span class="me1">subsystem</span> <span class="sy0">=</span> <span class="st0">'SSIS'</span>
		<span class="sy0">OR</span> js.<span class="me1">command</span> <span class="sy0">LIKE</span> <span class="st0">'%DTEXEC.exe%'</span></pre></div></div>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/04/11/ssis-job-ownership/" rel="bookmark" class="crp_title">SSIS Job Ownership</a></li><li><a href="http://jasonbrimhall.info/2012/03/05/are-my-linked-servers-being-used/" rel="bookmark" class="crp_title">Are my Linked Servers Being Used?</a></li><li><a href="http://jasonbrimhall.info/2010/01/13/tsql-tuesday-but-i-was-late/" rel="bookmark" class="crp_title">TSQL Tuesday &#8211; But I was Late</a></li><li><a href="http://jasonbrimhall.info/2010/12/13/ssis-job-execution/" rel="bookmark" class="crp_title">SSIS Job Execution</a></li><li><a href="http://jasonbrimhall.info/2010/07/23/a-little-dance-with-ssis-and-informix/" rel="bookmark" class="crp_title">A little Dance with SSIS and Informix</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1646" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=-6VbwbOhIRw:UjAXpDtko8o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=-6VbwbOhIRw:UjAXpDtko8o:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=-6VbwbOhIRw:UjAXpDtko8o:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=-6VbwbOhIRw:UjAXpDtko8o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=-6VbwbOhIRw:UjAXpDtko8o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=-6VbwbOhIRw:UjAXpDtko8o:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=-6VbwbOhIRw:UjAXpDtko8o:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=-6VbwbOhIRw:UjAXpDtko8o:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=-6VbwbOhIRw:UjAXpDtko8o:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/-6VbwbOhIRw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/15/agent-jobs-using-ssis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Table Size and Missing FK Indexes</title>
		<link>http://jasonbrimhall.info/2012/03/14/table-size-and-missing-fk-indexes/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=table-size-and-missing-fk-indexes</link>
		<comments>http://jasonbrimhall.info/2012/03/14/table-size-and-missing-fk-indexes/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 12:00:27 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[Foreign Key]]></category>
		<category><![CDATA[SQL Administration]]></category>
		<category><![CDATA[SQL Script]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1644</guid>
		<description><![CDATA[I am bringing an oldie back with another twist.  I recently ran into the need to correlate information between a couple of different queries that I like to use.  The two scripts returned different pieces of data about tables in a database.  This information was table size and missing foreign [...]]]></description>
			<content:encoded><![CDATA[<p>I am bringing an oldie back with another twist.  I recently ran into the need to correlate information between a couple of different queries that I like to use.  The two scripts returned different pieces of data about tables in a database.  This information was table size and missing foreign key indexes.</p>
<p>I needed to combine the two queries due to a desire to create indexes on foreign keys based on table size.  The premise behind this was to get the biggest bang for the buck initially as we work toward optimizing a database.  We happened to know heading into this that some of the larger tables are the most heavily queried tables as well.</p>
<p>So, here is what I did to get that information quickly.</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="coMULTI">/* Part I */</span>
<span class="co1">--Drop Table #indstats</span>
<span class="kw1">IF</span> exists <span class="br0">&#40;</span><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> tempdb.<span class="me1">sys</span>.<span class="me1">objects</span> <span class="kw1">WHERE</span> name like <span class="st0">'%#indstats%'</span><span class="br0">&#41;</span>
<span class="kw1">BEGIN</span>
	<span class="kw1">DROP</span> <span class="kw1">TABLE</span> tempdb.<span class="me1">dbo</span>.#indstats
<span class="kw1">END</span>
&nbsp;
<span class="kw1">BEGIN</span>
<span class="kw1">CREATE</span> <span class="kw1">TABLE</span> #indstats <span class="br0">&#40;</span>
         IndStatsID <span class="kw1">INT</span> <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="kw1">CLUSTERED</span>
        ,database_id <span class="kw1">BIGINT</span>
        ,index_id <span class="kw1">BIGINT</span>
        ,IndexSizeMB <span class="kw1">DECIMAL</span><span class="br0">&#40;</span>16,1<span class="br0">&#41;</span>
        ,<span class="kw2">OBJECT_ID</span>	<span class="kw1">BIGINT</span>
<span class="br0">&#41;</span>;
<span class="kw1">END</span>
&nbsp;
<span class="kw1">INSERT</span> <span class="kw1">INTO</span> #indstats <span class="br0">&#40;</span>IndStatsID,database_id,index_id,<span class="kw2">OBJECT_ID</span>,IndexSizeMB<span class="br0">&#41;</span>
        <span class="kw1">SELECT</span> Row_Number<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">OVER</span> <span class="br0">&#40;</span><span class="kw1">ORDER</span> <span class="kw1">BY</span> <span class="kw2">OBJECT_ID</span><span class="br0">&#41;</span> <span class="kw1">AS</span> IndStatsID
				,database_id,index_id,<span class="kw2">OBJECT_ID</span>
				,<span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>,<span class="br0">&#40;</span><span class="kw2">SUM</span><span class="br0">&#40;</span>ps.<span class="me1">page_count</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 8 <span class="sy0">/</span>1024 <span class="kw1">AS</span> IndexSizeMB
			<span class="kw1">FROM</span> sys.<span class="me1">dm_db_index_physical_stats</span><span class="br0">&#40;</span><span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>,null,<span class="sy0">NULL</span>,<span class="sy0">NULL</span>,<span class="st0">'SAMPLED'</span><span class="br0">&#41;</span> ps
			<span class="kw1">GROUP</span> <span class="kw1">BY</span> database_id,<span class="kw2">OBJECT_ID</span>,index_id;
&nbsp;
<span class="coMULTI">/* Part II */</span>
<span class="kw1">DECLARE</span> @dbsize <span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>
&nbsp;
<span class="kw1">SET</span> <span class="kw1">NOCOUNT</span> <span class="kw1">ON</span>
&nbsp;
<span class="coMULTI">/*
**  Summary data.
*/</span>
<span class="kw1">BEGIN</span>
	<span class="kw1">SELECT</span> @dbsize <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span><span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>,<span class="kw1">CASE</span> <span class="kw1">WHEN</span> type <span class="sy0">=</span> 0 <span class="kw1">THEN</span> <span class="kw1">SIZE</span> <span class="kw1">ELSE</span> 0 <span class="kw1">END</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 8<span class="sy0">/</span>1024
		<span class="kw1">FROM</span> sys.<span class="me1">database_files</span>
&nbsp;
<span class="kw1">END</span>
&nbsp;
<span class="coMULTI">/* Part III */</span>
<span class="kw1">BEGIN</span>
	<span class="kw1">WITH</span> RegData <span class="kw1">AS</span> <span class="br0">&#40;</span>
		<span class="kw1">SELECT</span> a.<span class="me1">container_id</span>,p.<span class="kw2">OBJECT_ID</span>,p.<span class="me1">index_id</span>,us.<span class="me1">database_id</span>
			,FileGroupName <span class="sy0">=</span> <span class="kw2">FILEGROUP_NAME</span><span class="br0">&#40;</span>a.<span class="me1">data_space_id</span><span class="br0">&#41;</span>
			,TableName <span class="sy0">=</span> <span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>p.<span class="kw2">OBJECT_ID</span><span class="br0">&#41;</span>
			,NumRows <span class="sy0">=</span> p.<span class="kw1">ROWS</span>
			,UsedPages <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">used_pages</span>,0<span class="br0">&#41;</span>
			,TotalPages <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">total_pages</span>,0<span class="br0">&#41;</span>
			,DataSizeMB <span class="sy0">=</span> <span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>,IsNull<span class="br0">&#40;</span>a.<span class="me1">used_pages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 8<span class="sy0">/</span>1024
			,IndexSizeMB <span class="sy0">=</span> <span class="kw1">CASE</span> <span class="kw1">WHEN</span> ps.<span class="me1">index_id</span> <span class="sy0">&lt;</span> 2 <span class="kw1">THEN</span> 0 <span class="kw1">ELSE</span> ps.<span class="me1">IndexSizeMB</span> <span class="kw1">END</span>
			,UserRequests <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_seeks</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_scans</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_lookups</span>,0<span class="br0">&#41;</span>
			,UserUpdates <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_updates</span>,0<span class="br0">&#41;</span>
			,LastUpdate <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">last_user_update</span>,null<span class="br0">&#41;</span>
			,RatioRequestsToUpdates <span class="sy0">=</span> <span class="kw1">CAST</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>us.<span class="me1">user_seeks</span>,0<span class="br0">&#41;</span>
					<span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_scans</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_lookups</span>,0<span class="br0">&#41;</span> <span class="kw1">AS</span> <span class="kw1">REAL</span><span class="br0">&#41;</span>
				<span class="sy0">/</span> <span class="kw1">CAST</span><span class="br0">&#40;</span><span class="kw1">CASE</span> us.<span class="me1">user_updates</span> <span class="kw1">WHEN</span> 0 <span class="kw1">THEN</span> 1 <span class="kw1">ELSE</span> us.<span class="me1">user_updates</span> <span class="kw1">END</span> <span class="kw1">AS</span> <span class="kw1">REAL</span><span class="br0">&#41;</span>
		<span class="kw1">FROM</span> sys.<span class="me1">allocation_units</span> a
			<span class="kw1">INNER</span> Join sys.<span class="me1">partitions</span> p
				<span class="kw1">ON</span> p.<span class="me1">hobt_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
				And a.<span class="me1">type</span> <span class="sy0">=</span> 1
			<span class="kw1">LEFT</span> Outer Join sys.<span class="me1">dm_db_index_usage_stats</span> us
				<span class="kw1">ON</span> us.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> p.<span class="kw2">OBJECT_ID</span>
				And us.<span class="me1">index_id</span> <span class="sy0">=</span> p.<span class="me1">index_id</span>
				And us.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
			<span class="kw1">LEFT</span> Outer Join #indstats ps
				<span class="kw1">ON</span> p.<span class="me1">index_id</span> <span class="sy0">=</span> ps.<span class="me1">index_id</span>
				And ps.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
				And p.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> ps.<span class="kw2">OBJECT_ID</span>
		<span class="co1">--WHERE OBJECTPROPERTY(p.object_id,'IsMSShipped') = 0</span>
	<span class="br0">&#41;</span>
	, LOBData <span class="kw1">AS</span> <span class="br0">&#40;</span>
		<span class="kw1">SELECT</span> a.<span class="me1">container_id</span>,p.<span class="kw2">OBJECT_ID</span>,p.<span class="me1">index_id</span>,us.<span class="me1">database_id</span>
			,FileGroupName <span class="sy0">=</span> <span class="kw2">FILEGROUP_NAME</span><span class="br0">&#40;</span>a.<span class="me1">data_space_id</span><span class="br0">&#41;</span>
			,TableName <span class="sy0">=</span> <span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>p.<span class="kw2">OBJECT_ID</span><span class="br0">&#41;</span>
			,NumRows <span class="sy0">=</span> p.<span class="kw1">ROWS</span>
			,UsedPages <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">used_pages</span>,0<span class="br0">&#41;</span>
			,TotalPages <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">total_pages</span>,0<span class="br0">&#41;</span>
			,DataSizeMB <span class="sy0">=</span> <span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>,IsNull<span class="br0">&#40;</span>a.<span class="me1">used_pages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 8<span class="sy0">/</span>1024
			,IndexSizeMB <span class="sy0">=</span> <span class="kw1">CASE</span> <span class="kw1">WHEN</span> ps.<span class="me1">index_id</span> <span class="sy0">&lt;</span> 2 <span class="kw1">THEN</span> 0 <span class="kw1">ELSE</span> ps.<span class="me1">IndexSizeMB</span> <span class="kw1">END</span>
			,UserRequests <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_seeks</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_scans</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_lookups</span>,0<span class="br0">&#41;</span>
			,UserUpdates <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_updates</span>,0<span class="br0">&#41;</span>
			,LastUpdate <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">last_user_update</span>,null<span class="br0">&#41;</span>
			,RatioRequestsToUpdates <span class="sy0">=</span> <span class="kw1">CAST</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>us.<span class="me1">user_seeks</span>,0<span class="br0">&#41;</span>
					<span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_scans</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_lookups</span>,0<span class="br0">&#41;</span> <span class="kw1">AS</span> <span class="kw1">REAL</span><span class="br0">&#41;</span>
				<span class="sy0">/</span> <span class="kw1">CAST</span><span class="br0">&#40;</span><span class="kw1">CASE</span> us.<span class="me1">user_updates</span> <span class="kw1">WHEN</span> 0 <span class="kw1">THEN</span> 1 <span class="kw1">ELSE</span> us.<span class="me1">user_updates</span> <span class="kw1">END</span> <span class="kw1">AS</span> <span class="kw1">REAL</span><span class="br0">&#41;</span>
		<span class="kw1">FROM</span> sys.<span class="me1">allocation_units</span> a
			<span class="kw1">INNER</span> Join sys.<span class="me1">partitions</span> p
				<span class="kw1">ON</span> p.<span class="me1">partition_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
				And a.<span class="me1">type</span> <span class="sy0">=</span> 2
			<span class="kw1">LEFT</span> Outer Join sys.<span class="me1">dm_db_index_usage_stats</span> us
				<span class="kw1">ON</span> us.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> p.<span class="kw2">OBJECT_ID</span>
				And us.<span class="me1">index_id</span> <span class="sy0">=</span> p.<span class="me1">index_id</span>
				And us.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
			<span class="kw1">LEFT</span> Outer Join #indstats ps
				<span class="kw1">ON</span> p.<span class="me1">index_id</span> <span class="sy0">=</span> ps.<span class="me1">index_id</span>
				And ps.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
				And p.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> ps.<span class="kw2">OBJECT_ID</span>
		<span class="co1">--WHERE OBJECTPROPERTY(p.object_id,'IsMSShipped') = 0</span>
	<span class="br0">&#41;</span>
	, OverFlowData <span class="kw1">AS</span> <span class="br0">&#40;</span>
		<span class="kw1">SELECT</span> a.<span class="me1">container_id</span>,p.<span class="kw2">OBJECT_ID</span>,p.<span class="me1">index_id</span>,us.<span class="me1">database_id</span>
			,FileGroupName <span class="sy0">=</span> <span class="kw2">FILEGROUP_NAME</span><span class="br0">&#40;</span>a.<span class="me1">data_space_id</span><span class="br0">&#41;</span>
			,TableName <span class="sy0">=</span> <span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>p.<span class="kw2">OBJECT_ID</span><span class="br0">&#41;</span>
			,NumRows <span class="sy0">=</span> p.<span class="kw1">ROWS</span>
			,UsedPages <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">used_pages</span>,0<span class="br0">&#41;</span>
			,TotalPages <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">total_pages</span>,0<span class="br0">&#41;</span>
			,DataSizeMB <span class="sy0">=</span> <span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>,IsNull<span class="br0">&#40;</span>a.<span class="me1">used_pages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 8<span class="sy0">/</span>1024
			,IndexSizeMB <span class="sy0">=</span> <span class="kw1">CASE</span> <span class="kw1">WHEN</span> ps.<span class="me1">index_id</span> <span class="sy0">&lt;</span> 2 <span class="kw1">THEN</span> 0 <span class="kw1">ELSE</span> ps.<span class="me1">IndexSizeMB</span> <span class="kw1">END</span>
			,UserRequests <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_seeks</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_scans</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_lookups</span>,0<span class="br0">&#41;</span>
			,UserUpdates <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_updates</span>,0<span class="br0">&#41;</span>
			,LastUpdate <span class="sy0">=</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">last_user_update</span>,null<span class="br0">&#41;</span>
			,RatioRequestsToUpdates <span class="sy0">=</span> <span class="kw1">CAST</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>us.<span class="me1">user_seeks</span>,0<span class="br0">&#41;</span>
					<span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_scans</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>us.<span class="me1">user_lookups</span>,0<span class="br0">&#41;</span> <span class="kw1">AS</span> <span class="kw1">REAL</span><span class="br0">&#41;</span>
				<span class="sy0">/</span> <span class="kw1">CAST</span><span class="br0">&#40;</span><span class="kw1">CASE</span> us.<span class="me1">user_updates</span> <span class="kw1">WHEN</span> 0 <span class="kw1">THEN</span> 1 <span class="kw1">ELSE</span> us.<span class="me1">user_updates</span> <span class="kw1">END</span> <span class="kw1">AS</span> <span class="kw1">REAL</span><span class="br0">&#41;</span>
		<span class="kw1">FROM</span> sys.<span class="me1">allocation_units</span> a
			<span class="kw1">INNER</span> Join sys.<span class="me1">partitions</span> p
				<span class="kw1">ON</span> p.<span class="me1">hobt_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
				And a.<span class="me1">type</span> <span class="sy0">=</span> 3
			<span class="kw1">LEFT</span> Outer Join sys.<span class="me1">dm_db_index_usage_stats</span> us
				<span class="kw1">ON</span> us.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> p.<span class="kw2">OBJECT_ID</span>
				And us.<span class="me1">index_id</span> <span class="sy0">=</span> p.<span class="me1">index_id</span>
				And us.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
			<span class="kw1">LEFT</span> Outer Join #indstats ps
				<span class="kw1">ON</span> p.<span class="me1">index_id</span> <span class="sy0">=</span> ps.<span class="me1">index_id</span>
				And ps.<span class="me1">database_id</span> <span class="sy0">=</span> <span class="kw2">DB_ID</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
				And p.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> ps.<span class="kw2">OBJECT_ID</span>
		<span class="co1">--WHERE OBJECTPROPERTY(p.object_id,'IsMSShipped') = 0</span>
	<span class="br0">&#41;</span>, IndexSum <span class="kw1">AS</span> <span class="br0">&#40;</span>
		<span class="kw1">SELECT</span> a.<span class="kw2">OBJECT_ID</span>
		,AllDataSizeMB <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span><span class="kw1">CASE</span> <span class="kw1">WHEN</span> a.<span class="me1">index_id</span> in <span class="br0">&#40;</span>0,1<span class="br0">&#41;</span>
							<span class="kw1">THEN</span> IsNull<span class="br0">&#40;</span>a.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span>  IsNull<span class="br0">&#40;</span>p2.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span>  IsNull<span class="br0">&#40;</span>p3.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span>
							<span class="kw1">ELSE</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span>
							<span class="kw1">END</span><span class="br0">&#41;</span>
		<span class="kw1">FROM</span> RegData a
			<span class="kw1">LEFT</span> Outer Join LOBData p2
				<span class="kw1">ON</span> p2.<span class="me1">container_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
			<span class="kw1">LEFT</span> Outer Join OverFlowData p3
				<span class="kw1">ON</span> p3.<span class="me1">container_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
		<span class="kw1">GROUP</span> <span class="kw1">BY</span> a.<span class="kw2">OBJECT_ID</span>
	<span class="br0">&#41;</span>, SummaryInfo <span class="kw1">AS</span> <span class="br0">&#40;</span>
		<span class="kw1">SELECT</span>
			TableName <span class="sy0">=</span> <span class="kw2">MAX</span><span class="br0">&#40;</span>a.<span class="me1">TableName</span><span class="br0">&#41;</span>
			,InRowDataSizeMB <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,LOBDataSizeMB <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>p2.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,OFlowDataSizeMB <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>p3.<span class="me1">DataSizeMB</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,NumRows <span class="sy0">=</span> <span class="kw2">MAX</span><span class="br0">&#40;</span><span class="kw1">COALESCE</span><span class="br0">&#40;</span>a.<span class="me1">NumRows</span>,p2.<span class="me1">NumRows</span>,p3.<span class="me1">NumRows</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,AllUsedPages <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">UsedPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">UsedPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">UsedPages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,AllPages <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">TotalPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">TotalPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">TotalPages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,FreeDataSpace <span class="sy0">=</span> <span class="kw1">CONVERT</span><span class="br0">&#40;</span><span class="kw1">DECIMAL</span><span class="br0">&#40;</span>19,2<span class="br0">&#41;</span>,
				<span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">TotalPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">TotalPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">TotalPages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
				<span class="sy0">-</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">UsedPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">UsedPages</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">UsedPages</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">*</span> 8 <span class="sy0">/</span> 1024
			,AllDataSizeMB <span class="sy0">=</span> <span class="kw2">MAX</span><span class="br0">&#40;</span>ids.<span class="me1">AllDataSizeMB</span><span class="br0">&#41;</span>
			,IndexSizeMB <span class="sy0">=</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">IndexSizeMB</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
				<span class="sy0">+</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>p2.<span class="me1">IndexSizeMB</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>p3.<span class="me1">IndexSizeMB</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,UserRequests <span class="sy0">=</span> <span class="kw2">AVG</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">UserRequests</span>,0<span class="br0">&#41;</span>
				<span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">UserRequests</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">UserRequests</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,UserUpdates <span class="sy0">=</span> <span class="kw2">AVG</span><span class="br0">&#40;</span>IsNull<span class="br0">&#40;</span>a.<span class="me1">UserUpdates</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p2.<span class="me1">UserUpdates</span>,0<span class="br0">&#41;</span> <span class="sy0">+</span> IsNull<span class="br0">&#40;</span>p3.<span class="me1">UserUpdates</span>,0<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,LastUpdate <span class="sy0">=</span> <span class="kw2">MAX</span><span class="br0">&#40;</span><span class="kw1">COALESCE</span><span class="br0">&#40;</span>a.<span class="me1">LastUpdate</span>,p2.<span class="me1">LastUpdate</span>,p3.<span class="me1">LastUpdate</span>,null<span class="br0">&#41;</span><span class="br0">&#41;</span>
			,DatabaseSize <span class="sy0">=</span> @dbsize
		<span class="kw1">FROM</span> RegData a
			<span class="kw1">LEFT</span> Outer Join LOBData p2
				<span class="kw1">ON</span> p2.<span class="me1">container_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
			<span class="kw1">LEFT</span> Outer Join OverFlowData p3
				<span class="kw1">ON</span> p3.<span class="me1">container_id</span> <span class="sy0">=</span> a.<span class="me1">container_id</span>
			<span class="kw1">LEFT</span> Outer Join sys.<span class="me1">indexes</span> i
				<span class="kw1">ON</span> i.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> a.<span class="kw2">OBJECT_ID</span>
				And i.<span class="me1">index_id</span> <span class="sy0">=</span> a.<span class="me1">index_id</span>
			<span class="kw1">LEFT</span> Outer Join IndexSum ids
				<span class="kw1">ON</span> i.<span class="kw2">OBJECT_ID</span> <span class="sy0">=</span> ids.<span class="kw2">OBJECT_ID</span>
		<span class="kw1">GROUP</span> <span class="kw1">BY</span> a.<span class="kw2">OBJECT_ID</span>
	<span class="br0">&#41;</span>, TotalUnused <span class="kw1">AS</span> <span class="br0">&#40;</span>
				<span class="kw1">SELECT</span> <span class="kw2">SUM</span><span class="br0">&#40;</span>FreeDataSpace<span class="br0">&#41;</span> <span class="kw1">AS</span> UnusedSpace
					<span class="kw1">FROM</span> SummaryInfo
		<span class="br0">&#41;</span>
	<span class="kw1">SELECT</span> TableName,ChildTableColumn <span class="kw1">AS</span> MissingFKIndexColumn,NumRows,InRowDataSizeMB,LOBDataSizeMB,OFlowDataSizeMB
			,AllUsedPages,AllPages
			,FreeDataSpace,AllDataSizeMB,IndexSizeMB
			,TableSizeMB <span class="sy0">=</span> AllDataSizeMB <span class="sy0">+</span> IndexSizeMB <span class="sy0">+</span> FreeDataSpace
			,UserRequests,UserUpdates,LastUpdate
			,PercentofDB <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>IndexSizeMB <span class="sy0">+</span> AllDataSizeMB<span class="br0">&#41;</span> <span class="sy0">/</span> DatabaseSize<span class="br0">&#41;</span> <span class="sy0">*</span> 100
			,DatabaseSize
			,DataUsedSize <span class="sy0">=</span> DatabaseSize <span class="sy0">-</span> TU.<span class="me1">UnusedSpace</span>
			,PercentofDataFileUsed <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>IndexSizeMB <span class="sy0">+</span> AllDataSizeMB<span class="br0">&#41;</span> <span class="sy0">/</span> <span class="br0">&#40;</span>DatabaseSize <span class="sy0">-</span> TU.<span class="me1">UnusedSpace</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 100
		<span class="kw1">FROM</span> SummaryInfo SI
			<span class="sy0">CROSS</span> APPLY TotalUnused TU
			Cross Apply <span class="br0">&#40;</span><span class="kw1">SELECT</span>
								<span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>FK.<span class="me1">parent_object_id</span><span class="br0">&#41;</span> <span class="kw1">AS</span> FKtable
								,<span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>Fk.<span class="me1">referenced_object_id</span><span class="br0">&#41;</span> <span class="kw1">AS</span> ReferencesThisTable
								,<span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span>FK.<span class="me1">constraint_object_id</span><span class="br0">&#41;</span> <span class="kw1">AS</span> FKName
								,C.<span class="me1">name</span> ChildTableColumn
							<span class="kw1">FROM</span> sys.<span class="me1">foreign_key_columns</span> FK
								<span class="kw1">INNER</span> <span class="sy0">JOIN</span> sys.<span class="me1">columns</span> C
									<span class="kw1">ON</span> FK.<span class="me1">parent_object_id</span> <span class="sy0">=</span> C.<span class="kw2">OBJECT_ID</span>
									<span class="sy0">AND</span> FK.<span class="me1">parent_column_id</span> <span class="sy0">=</span> C.<span class="me1">column_id</span>
								<span class="kw1">INNER</span> <span class="sy0">JOIN</span> sys.<span class="me1">objects</span> O
									<span class="kw1">ON</span> FK.<span class="me1">parent_object_id</span> <span class="sy0">=</span> o.<span class="kw2">OBJECT_ID</span>
								<span class="kw1">LEFT</span> <span class="sy0">OUTER</span> <span class="sy0">JOIN</span> sys.<span class="me1">index_columns</span> ic
									<span class="kw1">ON</span> FK.<span class="me1">parent_object_id</span> <span class="sy0">=</span> ic.<span class="kw2">OBJECT_ID</span>
									<span class="sy0">AND</span> FK.<span class="me1">parent_column_id</span> <span class="sy0">=</span> ic.<span class="me1">column_id</span>
							<span class="kw1">WHERE</span> ic.<span class="kw2">OBJECT_ID</span> <span class="kw1">IS</span> <span class="sy0">NULL</span><span class="br0">&#41;</span> FK
		<span class="kw1">WHERE</span> Fk.<span class="me1">fktable</span> <span class="sy0">=</span> SI.<span class="me1">TableName</span>
		<span class="kw1">ORDER</span> <span class="kw1">BY</span> PercentofDB <span class="kw1">DESC</span>
<span class="kw1">END</span></pre></div></div>
<p>The change is not overly much.  I added a subquery via a cross apply to get the missing foreign key info.  Then I return the pertinent columns back to the Select query.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/11/21/table-space-cs-part-deux/" rel="bookmark" class="crp_title">Table Space &#8211; CS Part Deux</a></li><li><a href="http://jasonbrimhall.info/2010/05/19/tablespace-update/" rel="bookmark" class="crp_title">TableSpace Update</a></li><li><a href="http://jasonbrimhall.info/2010/04/27/blob-index-columns/" rel="bookmark" class="crp_title">BLOB Index Columns</a></li><li><a href="http://jasonbrimhall.info/2010/03/31/index-info/" rel="bookmark" class="crp_title">Index Info</a></li><li><a href="http://jasonbrimhall.info/2011/11/17/table-space-revised-again/" rel="bookmark" class="crp_title">Table Space revised Again</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1644" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=FAXC3-z98vk:IgB3OFiP1X8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=FAXC3-z98vk:IgB3OFiP1X8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=FAXC3-z98vk:IgB3OFiP1X8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=FAXC3-z98vk:IgB3OFiP1X8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=FAXC3-z98vk:IgB3OFiP1X8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=FAXC3-z98vk:IgB3OFiP1X8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=FAXC3-z98vk:IgB3OFiP1X8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=FAXC3-z98vk:IgB3OFiP1X8:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=FAXC3-z98vk:IgB3OFiP1X8:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/FAXC3-z98vk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/14/table-size-and-missing-fk-indexes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>T-SQL Tuesday #028 – Jack of All Trades, Master of None?</title>
		<link>http://jasonbrimhall.info/2012/03/13/t-sql-tuesday-028-%e2%80%93-jack-of-all-trades-master-of-none/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=t-sql-tuesday-028-%25e2%2580%2593-jack-of-all-trades-master-of-none</link>
		<comments>http://jasonbrimhall.info/2012/03/13/t-sql-tuesday-028-%e2%80%93-jack-of-all-trades-master-of-none/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 20:02:41 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[TSQL Tuesday]]></category>
		<category><![CDATA[SQL Administration]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1639</guid>
		<description><![CDATA[Another month and another opportunity to write about an interesting topic.  This month hosting TSQL Tuesday is Argenis Fernandez (Blog &#124; Twitter). This month, Argenis has invited us to talk about demons from our past.  Ok, not necessarily demons but at least share why you might be a Jack of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlblog.com/blogs/argenis_fernandez/archive/2012/03/05/t-sql-tuesday-028-jack-of-all-trades-master-of-none.aspx"><img class="alignright size-full wp-image-1640" title="TSQL2sDay150x150" src="http://jasonbrimhall.info/wp-content/uploads/2012/03/TSQL2sDay150x150.jpg" alt="" width="150" height="150" /></a>Another month and another opportunity to write about an interesting topic.  This month hosting TSQL Tuesday is Argenis Fernandez (<a href="http://sqlblog.com/blogs/argenis_fernandez/default.aspx">Blog</a> | <a href="http://twitter.com/#!/DBArgenis">Twitter</a>).</p>
<p>This month, Argenis has invited us to talk about demons from our past.  Ok, not necessarily demons but at least share why you might be a <a href="http://sqlblog.com/blogs/argenis_fernandez/archive/2012/03/05/t-sql-tuesday-028-jack-of-all-trades-master-of-none.aspx">Jack of All Trades or a Master of something or nothing</a>.</p>
<p>Thinking about the topic, I thought of some very good stories.</p>
<h2>Jack of All Trades</h2>
<p><a href="http://jasonbrimhall.info/wp-content/uploads/2012/03/Plunger.jpg"><img class="alignleft size-full wp-image-1641" title="UNS03008_1_1.tif" src="http://jasonbrimhall.info/wp-content/uploads/2012/03/Plunger.jpg" alt="" width="300" height="300" /></a>Back in the day, I worked in a one-man IT shop.  On any given day, my duties involved configuring SOHO routers and firewalls as well as higher end Cisco equipment.  I was also responsible for Active Directory, pc maintenance,printer repair, Exchange, domain registrations and all things SQL.</p>
<p>My least favorite duty was that of Janitorial Engineer.  It was amongst my duties to ensure the restrooms were stocked and that the toilets were free-flowing.  I can&#8217;t necessarily say that this skill helped advance my career.  I can&#8217;t say that it was even helpful at home.</p>
<p>I can say that this duty did help me make the decision to specialize more in SQL Server &#8211; though I was already headed in that direction.</p>
<h2>Master, erm&#8230;</h2>
<p>Like Argenis said in the TSQL Tuesday <a href="http://sqlblog.com/blogs/argenis_fernandez/archive/2012/03/05/t-sql-tuesday-028-jack-of-all-trades-master-of-none.aspx">announcement</a>, I don&#8217;t much consider myself an expert or master of anything.  I do think I am rather proficient and I do recognize many shortcomings within the vast technology, we love, called SQL Server.</p>
<p>I aligned myself with this technology because of the constant challenge and opportunity to learn.  I enjoy working with SQL Server.  I still do not find as much pleasure in plumbing as I do in SQL Server.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2010/04/07/how-silly/" rel="bookmark" class="crp_title">How Silly</a></li><li><a href="http://jasonbrimhall.info/2010/10/11/a-haunting-tsql-tuesday-tale/" rel="bookmark" class="crp_title">A Haunting TSQL Tuesday Tale</a></li><li><a href="http://jasonbrimhall.info/2010/08/03/t-sql-tuesday-009-beach-time/" rel="bookmark" class="crp_title">T-SQL Tuesday #009: Beach Time</a></li><li><a href="http://jasonbrimhall.info/2011/10/31/haunting-a-database-near-you/" rel="bookmark" class="crp_title">Haunting a Database Near You</a></li><li><a href="http://jasonbrimhall.info/2011/05/10/t-sql-tuesday-18-ctes/" rel="bookmark" class="crp_title">T-SQL Tuesday #18 &#8211; CTEs</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1639" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=rsgnLi-9Tiw:dBQsJ317VCc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=rsgnLi-9Tiw:dBQsJ317VCc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=rsgnLi-9Tiw:dBQsJ317VCc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=rsgnLi-9Tiw:dBQsJ317VCc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=rsgnLi-9Tiw:dBQsJ317VCc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=rsgnLi-9Tiw:dBQsJ317VCc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=rsgnLi-9Tiw:dBQsJ317VCc:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=rsgnLi-9Tiw:dBQsJ317VCc:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=rsgnLi-9Tiw:dBQsJ317VCc:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/rsgnLi-9Tiw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/13/t-sql-tuesday-028-%e2%80%93-jack-of-all-trades-master-of-none/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What is a Favicon?</title>
		<link>http://jasonbrimhall.info/2012/03/08/what-is-a-favicon/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=what-is-a-favicon</link>
		<comments>http://jasonbrimhall.info/2012/03/08/what-is-a-favicon/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 13:00:39 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[SSC]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1629</guid>
		<description><![CDATA[If I were to show you the tabs in the following pic without a description, would you recognize the websites to which they belong? I would dare say that you would likely recognize them.  Not due to the labels on the tabs, but quite possibly due to the icon on [...]]]></description>
			<content:encoded><![CDATA[<p>If I were to show you the tabs in the following pic without a description, would you recognize the websites to which they belong?</p>
<p style="text-align: left;"><a href="http://jasonbrimhall.info/wp-content/uploads/2012/03/browsertabs1.png"><img class="aligncenter size-full wp-image-1631" title="browsertabs" src="http://jasonbrimhall.info/wp-content/uploads/2012/03/browsertabs1.png" alt="" width="558" height="39" /></a>I would dare say that you would likely recognize them.  Not due to the labels on the tabs, but quite possibly due to the icon on the tab.</p>
<p style="text-align: left;">Sometimes these icons are the logo for the respective site.  Sometimes, it is just something that might be fun.  In either case, it is something that helps brand the site in a fashion suitable to you.  These little icons are called &#8220;favicons&#8221; and they are pretty easy to put in place.</p>
<p style="text-align: left;">If you haven&#8217;t considered doing it, I think it would be worth the effort to create one.  It is a means to brand your site.  Here is a quick tutorial on how to do it.</p>
<p style="text-align: left;"><a href="http://codex.wordpress.org/Creating_a_Favicon">Tutorial</a></p>
<p style="text-align: left;">I used a free website tool to create my favicon.  You can find it <a href="http://www.favicongenerator.com/">here</a>.  The tool is appropriately called favicongenerator.</p>
<p style="text-align: left;"> Prior to being asked how to create one, I had no clue what those little pics were called.  Nor did I know how easy it was to create one.  It took me a few minutes searching the internet to figure out what it was called (I think I started by searching for &#8220;tab icon internet&#8221;).  Once I learned that it was called a favicon, it was easy to find instructions on how to create it.  Now it should be just a bit easier.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/12/21/filtering-in-ssms/" rel="bookmark" class="crp_title">Filtering in SSMS</a></li><li><a href="http://jasonbrimhall.info/2010/02/15/in-vs-inner-join/" rel="bookmark" class="crp_title">In Vs. Inner Join</a></li><li><a href="http://jasonbrimhall.info/2012/02/08/goals-2012/" rel="bookmark" class="crp_title">Goals 2012</a></li><li><a href="http://jasonbrimhall.info/2010/01/07/goals-for-2010/" rel="bookmark" class="crp_title">Goals For 2010</a></li><li><a href="http://jasonbrimhall.info/2011/10/31/haunting-a-database-near-you/" rel="bookmark" class="crp_title">Haunting a Database Near You</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1629" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=teNR45mvQiE:llxskwZrVcM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=teNR45mvQiE:llxskwZrVcM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=teNR45mvQiE:llxskwZrVcM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=teNR45mvQiE:llxskwZrVcM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=teNR45mvQiE:llxskwZrVcM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=teNR45mvQiE:llxskwZrVcM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=teNR45mvQiE:llxskwZrVcM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=teNR45mvQiE:llxskwZrVcM:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=teNR45mvQiE:llxskwZrVcM:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/teNR45mvQiE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/08/what-is-a-favicon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Physical or Virtual</title>
		<link>http://jasonbrimhall.info/2012/03/07/physical-or-virtual/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=physical-or-virtual</link>
		<comments>http://jasonbrimhall.info/2012/03/07/physical-or-virtual/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 13:00:31 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[PoSH]]></category>
		<category><![CDATA[SQL Administration]]></category>
		<category><![CDATA[SQL Script]]></category>
		<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1625</guid>
		<description><![CDATA[Today I get to share something that has been on my someday list for quite some time.  I have planned on getting a solution that involves TSQL to help determine if you are running SQL Server on a physical machine or if it happens to be a virtual machine.  Now, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I get to share something that has been on my someday list for quite some time.  I have planned on getting a solution that involves TSQL to help determine if you are running SQL Server on a physical machine or if it happens to be a virtual machine.  Now, I am prepared to share two means that involve using TSQL to achieve that goal.</p>
<p>I get to cover the spectrum with these two solutions.  At one end, we have something that is relatively simple.  It only works in SQL 2008 R2 and above though.  At the other end of the spectrum, we get to use something that involves more of a sledgehammer.</p>
<p>Covering these two extremes is useful.  As I said, the simple solution at the simple end of the spectrum is not going to work if you are running SQL Server 2008 or older.  So, if you are running SQL 2005, for example, you would need something a bit less delicate.  I will leave it to you to determine if it is worth it to use the &#8220;sledgehammer&#8221; approach.</p>
<p><a style="color: #ff4500; line-height: 15px;" href="http://jasonbrimhall.info/wp-content/uploads/2012/03/sledgehammer.png"><img class="size-full wp-image-1626 alignright" style="border-style: initial; border-color: initial; border-width: initial;" title="sledgehammer" src="http://jasonbrimhall.info/wp-content/uploads/2012/03/sledgehammer.png" alt="" width="360" height="224" /></a></p>
<h3>Sledgehammer</h3>
<p>I&#8217;m calling this the sledgehammer approach because it is not a 100% TSQL solution.  Some may not like the idea due to the use of xp_cmdshell &#8211; making the sledgehammer more like a bull in a china shop.</p>
<p>Up front, this solution utilizes tools that are readily available.  Those tools are PoSH, WMI and TSQL.</p>
<p>Let&#8217;s first look at the WMI.  I knew I could find the information I wanted if I could query WMI.  All that was needed was a means to get to the Win32_ComputerSystem class.  From there I could get the information for manufacturer and model for the machine.  Virtual machines tend to have a manufacturer such as the the following &#8220;VMWare&#8221;, &#8220;innotek&#8221;, and &#8220;Microsoft Corporation&#8221; &#8211; to list some of the more popular options.</p>
<p>Next, we can get to the WMI very easily via PoSH or vbscript.  I was having a devil of a time trying to figure out a sane method of doing it via TSQL only.  That is fine, because I was able to utilize PoSH quite nicely in this case.  After, having found a reference for what I wanted to do from <a href="http://poshtips.com/2011/03/25/gethostinfo-remote-host-query-script-using-wmi/">here</a>, I was able to create the script that I needed.  Here is that script.</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="powershell" style="font-family:monospace;"><span class="kw3">Param</span> <span class="br0">&#40;</span><span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><span class="re0">$HostName</span><span class="sy0">=</span><span class="st0">&quot;localhost&quot;</span><span class="sy0">,</span><span class="re0">$Option</span><span class="sy0">=</span>1<span class="br0">&#41;</span>
&nbsp;
<span class="kw3">function</span> ExecQry <span class="br0">&#123;</span>
    <span class="kw3">param</span> <span class="br0">&#40;</span><span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><span class="re0">$CmdStr</span><span class="br0">&#41;</span>
         <span class="re0">$cmdStr</span>
    <span class="br0">&#125;</span>
&nbsp;
<span class="kw3">if</span> <span class="br0">&#40;</span><span class="re0">$Option</span><span class="sy0">=</span>1<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="re0">$x</span> <span class="sy0">=</span> ExecQry <span class="st0">&quot;gwmi Win32_ComputerSystem -computer <span class="es0">`$</span>hostname&quot;</span> <span class="sy0">|</span> <span class="kw2">iex</span>
    <span class="re0">$x</span> <span class="sy0">|</span> <span class="kw2">fl</span> manufacturer<span class="sy0">,</span>model
&nbsp;
<span class="br0">&#125;</span></pre></div></div>
<p>Nothing too terribly fancy there.  I am only querying for the two attributes that I really want to accomplish my goal.  Those attributes being: manufacturer and model.</p>
<p>Next comes the difficult part.  Running all of this from within TSQL and capturing useful results.  If you execute that PoSH script, you will notice that the presentation of the results is really lacking.  First though I needed to get the script to execute from within SSMS.</p>
<p>I started out miserably with getting that to run.  The script just kept hanging and would never even cancel out.  This is what I started out with in trying to get it to run.</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;">xp_cmdshell <span class="st0">'powershell -noexit &quot;&amp; &quot;&quot;C:<span class="es0">\A</span>dmin<span class="es0">\P</span>oSH Scripts<span class="es0">\G</span>etMachineInfo2.ps1&quot;&quot;&quot;'</span></pre></div></div>
<p>If I extracted the powershell command and ran it from a command prompt, it would run flawlessly.  From within SSMS &#8211; crash and burn every time.  Then, I decided to try removing the -noexit and see if I could get different results.  Voila &#8211; fantastic results.  I now had the basis for getting this running in SSMS.</p>
<p>In addition to the use of xp_cmdshell, I felt it prudent to use a string splitter to help tidy up the presentation.  The string splitter I like to use (delimited split function) can be found <a href="http://www.sqlservercentral.com/articles/Tally+Table/72993/">here</a>.  I also felt it necessary to use Pivot &#8211; again to help tidy up the results in the presentation.</p>
<p>I know, you&#8217;re itching to see the script now, so here it is.</p>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">DECLARE</span> @processing <span class="kw1">TABLE</span> <span class="br0">&#40;</span>ID <span class="kw1">INT</span> <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> <span class="kw1">CLUSTERED</span> <span class="kw1">IDENTITY</span><span class="br0">&#40;</span>1,1<span class="br0">&#41;</span>,Results <span class="kw1">VARCHAR</span><span class="br0">&#40;</span>256<span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="kw1">DECLARE</span> @PartTwo <span class="kw1">TABLE</span> <span class="br0">&#40;</span>ID <span class="kw1">INT</span>, subID <span class="kw1">INT</span>, Somevalue <span class="kw1">NVARCHAR</span><span class="br0">&#40;</span>100<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
<span class="kw1">DECLARE</span> @PathtoPS1			<span class="kw1">VARCHAR</span><span class="br0">&#40;</span>256<span class="br0">&#41;</span>
		,@CommandtoExec		<span class="kw1">VARCHAR</span><span class="br0">&#40;</span>512<span class="br0">&#41;</span>
&nbsp;
<span class="kw1">SET</span> @PathtoPS1 <span class="sy0">=</span> <span class="st0">'your file system path<span class="es0">\G</span>etMachineInfo2.ps1'</span>
<span class="kw1">SET</span> @CommandtoExec <span class="sy0">=</span> <span class="st0">'powershell &quot;&amp; &quot;&quot;'</span> <span class="sy0">+</span> @PathtoPS1 <span class="sy0">+</span><span class="st0">'&quot;&quot;&quot;'</span>
;
&nbsp;
<span class="kw1">INSERT</span> <span class="kw1">INTO</span> @processing<span class="br0">&#40;</span>Results<span class="br0">&#41;</span>
	<span class="kw1">EXEC</span> xp_cmdshell @CommandtoExec
&nbsp;
;
&nbsp;
<span class="kw1">INSERT</span> <span class="kw1">INTO</span> @PartTwo <span class="br0">&#40;</span>ID,subID,Somevalue<span class="br0">&#41;</span>
	<span class="kw1">SELECT</span> pr.<span class="me1">ID</span>,ss.<span class="me1">ItemNumber</span>,<span class="kw2">LTRIM</span><span class="br0">&#40;</span><span class="kw2">RTRIM</span><span class="br0">&#40;</span>ss.<span class="me1">Item</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">AS</span> Somevalue
		<span class="kw1">FROM</span> @processing pr
		<span class="sy0">CROSS</span> APPLY AdminDB_Test.<span class="me1">dbo</span>.<span class="me1">stringsplitter</span><span class="br0">&#40;</span>pr.<span class="me1">Results</span>,<span class="st0">':'</span><span class="br0">&#41;</span> ss
&nbsp;
;
<span class="kw1">SELECT</span> Manufacturer,Model
		,<span class="kw1">CASE</span>
			<span class="kw1">WHEN</span> Manufacturer like <span class="st0">'%Vmware%'</span>
				<span class="kw1">THEN</span> <span class="st0">'ISVIRTUAL'</span>
			<span class="kw1">WHEN</span> Manufacturer like <span class="st0">'%innotek GmbH%'</span>
				<span class="kw1">THEN</span> <span class="st0">'ISVIRTUAL'</span>
			<span class="kw1">WHEN</span> Manufacturer like <span class="st0">'%Microsoft Corporation%'</span> <span class="sy0">AND</span> Model like <span class="st0">'%Virtual%'</span>
				<span class="kw1">THEN</span> <span class="st0">'ISVIRTUAL'</span>
			<span class="kw1">ELSE</span> <span class="st0">'PhysicalMachine'</span>
			<span class="kw1">END</span> <span class="kw1">AS</span> VirtualorPhysical
	<span class="kw1">FROM</span> <span class="br0">&#40;</span><span class="kw1">SELECT</span> pt.<span class="me1">SomeValue</span> <span class="kw1">AS</span> Property,p2.<span class="me1">somevalue</span> <span class="kw1">AS</span> PropertyVal
			<span class="kw1">FROM</span> @PartTwo pt
				<span class="kw1">INNER</span> Join @PartTwo p2
					<span class="kw1">ON</span> pt.<span class="me1">id</span> <span class="sy0">=</span> p2.<span class="me1">id</span>
					And pt.<span class="me1">subid</span> <span class="sy0">&lt;&gt;</span> p2.<span class="me1">subid</span>
			<span class="kw1">WHERE</span> pt.<span class="me1">somevalue</span> in <span class="br0">&#40;</span><span class="st0">'manufacturer'</span>,<span class="st0">'model'</span><span class="br0">&#41;</span>
			<span class="br0">&#41;</span> B
	PIVOT <span class="br0">&#40;</span><span class="kw2">MIN</span><span class="br0">&#40;</span>PropertyVal<span class="br0">&#41;</span> <span class="kw1">FOR</span> Property <span class="sy0">IN</span> <span class="br0">&#40;</span>manufacturer,model<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">AS</span> P</pre></div></div>
<p>Unless you have xp_cmdshell disabled, the only change you will need to make is for the @PathtoPS1 variable.  Save the PoSH script on your file system with the name GetMachineInfo2.ps1, and you will be all set.</p>
<h3>Elegance</h3>
<p>Now that you have seen the hard way of doing it, here is what we can do in SQL Server 2008 R2 (must have SP1 applied at a minimum &#8211; thanks to Nic Cain for that info).</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">SELECT</span> <span class="kw2">@@SERVERNAME</span> <span class="kw1">AS</span> SRVName,virtual_machine_type
	<span class="kw1">FROM</span> sys.<span class="me1">dm_os_sys_info</span></pre></div></div>
<p>The virtual_machine_type attribute is a new addition to this DMV as of SQL 2008 R2.  There are three possible values: 0,1, or 2.  The value of 0 means that the machine is physical.  Any other value means that it is a virtual machine.  You can read more about that from <a href="http://msdn.microsoft.com/en-us/library/ms175048.aspx">MSDN</a>.</p>
<p>There you have it.  Two methods within SSMS that you can extrapolate where a Server is physical or virtual.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2011/03/28/showplan-xml/" rel="bookmark" class="crp_title">ShowPlan XML</a></li><li><a href="http://jasonbrimhall.info/2011/11/14/tsql-challenge-63-update/" rel="bookmark" class="crp_title">TSQL Challenge 63 &#8211; Update</a></li><li><a href="http://jasonbrimhall.info/2010/06/22/declare-scalar-variable/" rel="bookmark" class="crp_title">Declare Scalar Variable</a></li><li><a href="http://jasonbrimhall.info/2011/08/23/tsql-sudoku-ii/" rel="bookmark" class="crp_title">TSQL Sudoku II</a></li><li><a href="http://jasonbrimhall.info/2012/03/06/views-in-use/" rel="bookmark" class="crp_title">Views in Use?</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1625" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=tEm8QqvZl0U:Lpcciwon_pY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=tEm8QqvZl0U:Lpcciwon_pY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=tEm8QqvZl0U:Lpcciwon_pY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=tEm8QqvZl0U:Lpcciwon_pY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=tEm8QqvZl0U:Lpcciwon_pY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=tEm8QqvZl0U:Lpcciwon_pY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=tEm8QqvZl0U:Lpcciwon_pY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=tEm8QqvZl0U:Lpcciwon_pY:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=tEm8QqvZl0U:Lpcciwon_pY:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/tEm8QqvZl0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/07/physical-or-virtual/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Views in Use?</title>
		<link>http://jasonbrimhall.info/2012/03/06/views-in-use/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=views-in-use</link>
		<comments>http://jasonbrimhall.info/2012/03/06/views-in-use/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 13:00:54 +0000</pubDate>
		<dc:creator>Jason Brimhall</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[SSSOLV]]></category>
		<category><![CDATA[SQL Administration]]></category>
		<category><![CDATA[SQL Script]]></category>
		<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://jasonbrimhall.info/?p=1620</guid>
		<description><![CDATA[Today, I am following up on a topic I mentioned in an earlier post.  In case you haven&#8217;t read the post on finding your linked servers, you can read it here. It is in that post that I spoke of altering a script I had just written for another client [...]]]></description>
			<content:encoded><![CDATA[<p><a style="color: #ff4500;" href="http://jasonbrimhall.info/wp-content/uploads/2012/02/viewfinder1.png"><img class="alignleft size-full wp-image-1622" style="border-style: initial; border-color: initial; border-width: initial;" title="viewfinder" src="http://jasonbrimhall.info/wp-content/uploads/2012/02/viewfinder1.png" alt="" width="322" height="198" /></a></p>
<p>Today, I am following up on a topic I mentioned in an earlier post.  In case you haven&#8217;t read the post on finding your linked servers, you can read it <a href="http://jasonbrimhall.info/2012/03/05/are-my-linked-servers-being-used/">here</a>.</p>
<p>It is in that post that I spoke of altering a script I had just written for another client for another requirement.  The requirements were very similar in nature.</p>
<p>The client needed to discover which, if any, stored procedures in the database referenced any of the thousands of views that had been created.  (Spoiler &#8211; not a single view was being used by any stored procedure.)</p>
<p>My options at the time were to either write something that could do the work for me (rapidly) or manually investigate every stored procedure (there were thousands of those too).  I opted for the faster approach.</p>
<p>I already had a script handy to search for particular words or key phrases throughout all of the procs.  So, all I needed to do was work out the routine to search for all of the views.  The only approach I felt would work across the board was to write a cursor to do it.  For a job such as this, I think the tool is still appropriate.</p>
<p>Since you have already been exposed to a variation of the script, here is the version that works great for searching for the view usage in stored procs.  This script is simpler in nature than the one I shared in the Linked Server article &#8211; only because I do not query that SQL Agent jiobs for ad-hoc queries that use any views.</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://jasonbrimhall.info/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="tsql" style="font-family:monospace;"><span class="kw1">DECLARE</span> @VName <span class="kw1">VARCHAR</span><span class="br0">&#40;</span>256<span class="br0">&#41;</span>
<span class="kw1">DECLARE</span> FindView <span class="kw1">CURSOR</span>
<span class="kw1">LOCAL</span> <span class="kw1">STATIC</span> F<span class="sy0">OR</span>WARD_ONLY READ_ONLY
     <span class="kw1">FOR</span>
<span class="kw1">SELECT</span> name
	<span class="kw1">FROM</span> sys.<span class="me1">objects</span>
	<span class="kw1">WHERE</span> type <span class="sy0">=</span> <span class="st0">'v'</span>
		And is_ms_shipped <span class="sy0">=</span> 0
&nbsp;
<span class="kw1">OPEN</span> FindView;
<span class="kw1">FETCH</span> <span class="kw1">NEXT</span> <span class="kw1">FROM</span> FindView <span class="kw1">INTO</span> @VName;
&nbsp;
<span class="kw1">WHILE</span> <span class="kw2">@@FETCH_STATUS</span> <span class="sy0">=</span> 0
<span class="kw1">BEGIN</span>
	<span class="kw1">SELECT</span> <span class="kw2">OBJECT_NAME</span><span class="br0">&#40;</span><span class="kw2">OBJECT_ID</span><span class="br0">&#41;</span>
		<span class="kw1">FROM</span> sys.<span class="me1">sql_modules</span>
		<span class="kw1">WHERE</span> Definition <span class="sy0">LIKE</span> <span class="st0">'%'</span><span class="sy0">+</span>@VName <span class="sy0">+</span><span class="st0">'%'</span>
		<span class="sy0">AND</span> <span class="kw2">OBJECTPROPERTY</span><span class="br0">&#40;</span><span class="kw2">OBJECT_ID</span>, <span class="st0">'IsProcedure'</span><span class="br0">&#41;</span> <span class="sy0">=</span> 1 ;
&nbsp;
	<span class="kw1">FETCH</span> <span class="kw1">NEXT</span> <span class="kw1">FROM</span> findview <span class="kw1">INTO</span> @VName;
<span class="kw1">END</span>
&nbsp;
<span class="kw1">CLOSE</span> FindView
<span class="kw1">DEALLOCATE</span> FindView</pre></div></div>
<p>&nbsp;</p>
<p>Put this in your toolbox if you like.  It did take it quite a while to run (20 or so minutes) when I ran it against a database with thousands of views and thousands of procs.  Just be warned .</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://jasonbrimhall.info/2012/03/05/are-my-linked-servers-being-used/" rel="bookmark" class="crp_title">Are my Linked Servers Being Used?</a></li><li><a href="http://jasonbrimhall.info/2012/03/01/linked-servers/" rel="bookmark" class="crp_title">Linked Servers</a></li><li><a href="http://jasonbrimhall.info/2011/12/21/filtering-in-ssms/" rel="bookmark" class="crp_title">Filtering in SSMS</a></li><li><a href="http://jasonbrimhall.info/2011/12/06/december-event-reminder/" rel="bookmark" class="crp_title">December Event Reminder</a></li><li><a href="http://jasonbrimhall.info/2010/08/17/star-struck/" rel="bookmark" class="crp_title">Star Struck</a></li></ul></div> <img src="http://jasonbrimhall.info/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1620" width="1" height="1" style="display: none;" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=TbKQzsVZ-zU:noV4I2_qDVs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=TbKQzsVZ-zU:noV4I2_qDVs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=TbKQzsVZ-zU:noV4I2_qDVs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=TbKQzsVZ-zU:noV4I2_qDVs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=TbKQzsVZ-zU:noV4I2_qDVs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=TbKQzsVZ-zU:noV4I2_qDVs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=TbKQzsVZ-zU:noV4I2_qDVs:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/SqlRnnr?a=TbKQzsVZ-zU:noV4I2_qDVs:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/SqlRnnr?i=TbKQzsVZ-zU:noV4I2_qDVs:3QFJfmc7Om4" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/SqlRnnr/~4/TbKQzsVZ-zU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jasonbrimhall.info/2012/03/06/views-in-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.417 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-17 03:42:58 -->

