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

<channel>
	<title>tim laqua dot com &#187; tsql</title>
	<atom:link href="http://timlaqua.com/tag/tsql/feed/" rel="self" type="application/rss+xml" />
	<link>http://timlaqua.com</link>
	<description>Thoughts and Code from Tim Laqua</description>
	<lastBuildDate>Sun, 09 May 2010 15:25:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Locating Rampant Database Growth</title>
		<link>http://timlaqua.com/2010/03/locating-rampant-database-growth/</link>
		<comments>http://timlaqua.com/2010/03/locating-rampant-database-growth/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 17:40:02 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Scripts & Code]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://timlaqua.com/?p=358</guid>
		<description><![CDATA[Every now and then you get a helpful alert from one of your database servers about disk space being low (you're monitoring that, right?), or a bunch of autogrowth alerts (you're monitoring that too, right?) - but what happens when you get these for a database that you don't expect growth in? Further, what happens [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and then you get a helpful alert from one of your database servers about disk space being low (you're monitoring that, right?), or a bunch of autogrowth alerts (you're monitoring that too, right?) - but what happens when you get these for a database that you don't expect growth in?  Further, what happens when that database is growing rampantly (say like 1GB/hr in my case) and it's a canned database from a 3rd party product?  This time it was the database that SolarWinds uses for collection - and apparently it was collecting a lot of something that it wasn't collecting before.</p>
<ol>
<li>you send out an email asking the end users of the system (IT in this case) if anything changed</li>
<li>adjust so said system stops trying to fill up your drives</li>
</ol>
<p>Unfortunately, there's often quite a few possibilities for "why" a database is growing - and when it's a canned product, you don't always have the best understanding of why it does what it does when it does it.  As a Database Admin, you can help diagnose the problem by letting everyone know what exactly is growing:<br />
<span id="more-358"></span><br />
First, figure out what table is growing:<br />
<em>spSpaceUsed.sql</em></p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #808080; font-style: italic;">#Temp_SpSpaceUsed</span>
	<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>name<span style="color: #66cc66;">&#93;</span> VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>rows<span style="color: #66cc66;">&#93;</span> INT
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>reserved<span style="color: #66cc66;">&#93;</span> VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">DATA</span><span style="color: #66cc66;">&#93;</span>	VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>index_size<span style="color: #66cc66;">&#93;</span> VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>unused<span style="color: #66cc66;">&#93;</span> VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>CreatedTime<span style="color: #66cc66;">&#93;</span> DATETIME <span style="color: #993333; font-weight: bold;">DEFAULT</span> GETDATE<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
EXEC sp_msforeachtable <span style="color: #ff0000;">'INSERT INTO #Temp_SpSpaceUsed ([name],[rows],[reserved],[data],[index_size],[unused]) EXEC sp_spaceused [?]'</span>
&nbsp;
WAITFOR DELAY <span style="color: #ff0000;">'00:01:00'</span>
&nbsp;
EXEC sp_msforeachtable <span style="color: #ff0000;">'INSERT INTO #Temp_SpSpaceUsed ([name],[rows],[reserved],[data],[index_size],[unused]) EXEC sp_spaceused [?]'</span>
&nbsp;
;WITH SpSpaceUsed <span style="color: #993333; font-weight: bold;">AS</span>
<span style="color: #66cc66;">&#40;</span>
	<span style="color: #993333; font-weight: bold;">SELECT</span> 
		<span style="color: #66cc66;">&#91;</span>name<span style="color: #66cc66;">&#93;</span>
		<span style="color: #66cc66;">,</span>CAST<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">DATA</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> LEN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">DATA</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> INT<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span><span style="color: #993333; font-weight: bold;">DATA</span><span style="color: #66cc66;">&#93;</span>
		<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>CreatedTime<span style="color: #66cc66;">&#93;</span>
		<span style="color: #66cc66;">,</span>ROW_NUMBER<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> OVER <span style="color: #66cc66;">&#40;</span>PARTITION <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #66cc66;">&#91;</span>name<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #66cc66;">&#91;</span>CreatedTime<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">ASC</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>RowNumber<span style="color: #66cc66;">&#93;</span>
	<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #808080; font-style: italic;">#Temp_SpSpaceUsed	</span>
<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> 
	 a<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>name<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>b<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">DATA</span> <span style="color: #66cc66;">-</span> a<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">DATA</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>GrowthKB<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#40;</span>CAST<span style="color: #66cc66;">&#40;</span>b<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">DATA</span> <span style="color: #66cc66;">-</span> a<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">DATA</span> <span style="color: #993333; font-weight: bold;">AS</span> FLOAT<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">/</span> DateDiff<span style="color: #66cc66;">&#40;</span>MILLISECOND<span style="color: #66cc66;">,</span> a<span style="color: #66cc66;">.</span>CreatedTime<span style="color: #66cc66;">,</span> b<span style="color: #66cc66;">.</span>CreatedTime<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">1000.0</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">60.0</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">60.0</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>GrowthKBPerHour<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> SpSpaceUsed a
	<span style="color: #993333; font-weight: bold;">INNER</span> <span style="color: #993333; font-weight: bold;">JOIN</span> SpSpaceUsed b
		<span style="color: #993333; font-weight: bold;">ON</span> a<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>name<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> b<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>name<span style="color: #66cc66;">&#93;</span>
			<span style="color: #993333; font-weight: bold;">AND</span> a<span style="color: #66cc66;">.</span>RowNumber <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>
			<span style="color: #993333; font-weight: bold;">AND</span> b<span style="color: #66cc66;">.</span>RowNumber <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span>
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span>
	GrowthKBPerHour <span style="color: #993333; font-weight: bold;">DESC</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #808080; font-style: italic;">#Temp_SpSpaceUsed</span></pre></div></div>

<p>Next, look at the culprit (assuming there's one table doing all the damage - I've found that's usually the case) and try to decipher the column names.  Finally, run a few queries against the table - WITH(NOLOCK) of course - hey, this table is pretty busy.  Now try and see where all the action is coming from.  In this case, one of the columns was [IP] so I just did a COUNT(1) by IP for the last hour's records.  Sure enough, 99% of the records were coming from a single IP, sent that IP off to the guys who know what IPs mean, and they knew exactly which change caused the growth.</p>
<p>Bottom line - nobody knows everything about everything, but we can learn pretty quick with the right information.</p>
]]></content:encoded>
			<wfw:commentRss>http://timlaqua.com/2010/03/locating-rampant-database-growth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script sp_configure Output To Migrate Settings Between SQL Servers</title>
		<link>http://timlaqua.com/2010/02/script-sp_configure-output-to-migrate-settings-between-sql-servers/</link>
		<comments>http://timlaqua.com/2010/02/script-sp_configure-output-to-migrate-settings-between-sql-servers/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 23:22:30 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Scripts & Code]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://timlaqua.com/?p=355</guid>
		<description><![CDATA[Sometimes when setting up a new server, all you want is for it to work and be configured exactly like the old server. In some cases, the new server is almost identical in every way already. If you've worked much with SQL Server, you know very well that there are a billion switches and knobs [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes when setting up a new server, all you want is for it to work and be configured exactly like the old server.  In some cases, the new server is almost identical in every way already.  If you've worked much with SQL Server, you know very well that there are a billion switches and knobs and every time you do this, you forget at least one.  I had a similar situation recently and figured I'd be lazy about it and just turned the output of sp_configure in to a script I could execute on the new server:<br />
<span id="more-355"></span><br />
<em>scriptSpConfigure.sql - run this on the old/source server</em></p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'show advanced options'</span> , <span style="color: #000;">1</span>;
GO
<span style="color: #0000FF;">RECONFIGURE</span>;
GO
<span style="color: #0000FF;">DECLARE</span> @spConfigureOutput <span style="color: #0000FF;">TABLE</span>
	<span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>name<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">255</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#91;</span>minimum<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">INT</span>
	,<span style="color: #808080;">&#91;</span>maximum<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">INT</span>
	,<span style="color: #808080;">&#91;</span>config_value<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">INT</span>
	,<span style="color: #808080;">&#91;</span>run_value<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">INT</span><span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @spConfigureOutput
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span>	<span style="color: #FF0000;">'EXEC sp_configure '</span><span style="color: #FF0000;">''</span> <span style="color: #808080;">+</span> name <span style="color: #808080;">+</span> <span style="color: #FF0000;">''</span><span style="color: #FF0000;">', '</span> <span style="color: #808080;">+</span> <span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span>config_value <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">FROM</span>	@spConfigureOutput
GO
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'show advanced options'</span> , <span style="color: #000;">0</span>;
GO
<span style="color: #0000FF;">RECONFIGURE</span>;
GO</pre></div></div>

<p>Copy the selected rows and paste in to another SSMS window, add the show advanced options switch above and below - should end up with something like this after you <strong>remove all the settings you don't care about or don't want on the new server</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'show advanced options'</span> , <span style="color: #000;">1</span>;
GO
<span style="color: #0000FF;">RECONFIGURE</span>;
GO
&nbsp;
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'Ad Hoc Distributed Queries'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'Agent XPs'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'clr enabled'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'cost threshold for parallelism'</span>, <span style="color: #000;">5</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'cursor threshold'</span>, <span style="color: #808080;">-</span><span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'Database Mail XPs'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'default full-text language'</span>, <span style="color: #000;">1033</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'default trace enabled'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'fill factor (%)'</span>, <span style="color: #000;">80</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'ft crawl bandwidth (max)'</span>, <span style="color: #000;">100</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'ft notify bandwidth (max)'</span>, <span style="color: #000;">100</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'max full-text crawl range'</span>, <span style="color: #000;">4</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'max server memory (MB)'</span>, <span style="color: #000;">10000</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'max text repl size (B)'</span>, <span style="color: #000;">65536</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'min memory per query (KB)'</span>, <span style="color: #000;">1024</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'min server memory (MB)'</span>, <span style="color: #000;">10000</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'nested triggers'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'network packet size (B)'</span>, <span style="color: #000;">4096</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'PH timeout (s)'</span>, <span style="color: #000;">60</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'query wait (s)'</span>, <span style="color: #808080;">-</span><span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'remote access'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'remote login timeout (s)'</span>, <span style="color: #000;">20</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'remote query timeout (s)'</span>, <span style="color: #000;">900</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'scan for startup procs'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'server trigger recursion'</span>, <span style="color: #000;">1</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'SMO and DMO XPs'</span>, <span style="color: #000;">1</span>
&nbsp;
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_CONFIGURE</span> <span style="color: #FF0000;">'show advanced options'</span> , <span style="color: #000;">0</span>;
<span style="color: #0000FF;">RECONFIGURE</span>;
GO;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://timlaqua.com/2010/02/script-sp_configure-output-to-migrate-settings-between-sql-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script RESTORE DATABASE &#8230; WITH MOVE Stub</title>
		<link>http://timlaqua.com/2010/02/script-restore-database-with-move-stub/</link>
		<comments>http://timlaqua.com/2010/02/script-restore-database-with-move-stub/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 18:29:26 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Scripts & Code]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://timlaqua.com/?p=349</guid>
		<description><![CDATA[I think most people setup the drives on their Development servers to match their Production servers - this is so that restores go smoothly and files go where they're supposed to, things match up nicely, etc. Unfortunately, when you create a full backup all the backup file contains is the logical name of all the [...]]]></description>
			<content:encoded><![CDATA[<p>I think most people setup the drives on their Development servers to match their Production servers - this is so that restores go smoothly and files go where they're supposed to, things match up nicely, etc.  Unfortunately, when you create a full backup all the backup file contains is the logical name of all the files - no physical paths.  This means that if the database doesn't exist on the destination server yet, the engine has absolutely no idea where to put the files or what to name them.</p>
<p>The following script can be executed in the context of the source (original) database that was backed up to script out the MOVE statements if your plan is to put the files in the same place on the destination server.<br />
<span id="more-349"></span><br />
<em>scriptRestoreWithMove.sql - run this in the context of the source database</em></p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @MoveOption <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">TABLE</span>
	<span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>Id<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">INT</span> <span style="color: #0000FF;">IDENTITY</span><span style="color: #808080;">&#40;</span><span style="color: #000;">1</span>,<span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#91;</span>MoveOption<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">MAX</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'RESTORE DATABASE '</span> <span style="color: #808080;">+</span> <span style="color: #FF00FF;">DB_NAME</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">DB_ID</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
<span style="color: #008080;">-- Edit this to match where you're restoring from</span>
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'FROM DISK = '</span><span style="color: #FF0000;">''</span> <span style="color: #808080;">+</span> <span style="color: #FF00FF;">DB_NAME</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">DB_ID</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">'.bak'</span><span style="color: #FF0000;">''</span>  
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'WITH'</span>
&nbsp;
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @MoveOption <span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>MoveOption<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">SELECT</span>
    <span style="color: #FF0000;">'MOVE '</span><span style="color: #FF0000;">''</span> <span style="color: #808080;">+</span> a.<span style="color: #202020;">name</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">''</span><span style="color: #FF0000;">' TO '</span><span style="color: #FF0000;">''</span> <span style="color: #808080;">+</span> a.<span style="color: #202020;">FILENAME</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">''</span><span style="color: #FF0000;">''</span> <span style="color: #0000FF;">AS</span> <span style="color: #808080;">&#91;</span>MOVE <span style="color: #0000FF;">OPTION</span><span style="color: #808080;">&#93;</span>
<span style="color: #0000FF;">FROM</span>
    dbo.<span style="color: #202020;">sysfiles</span> a
&nbsp;
<span style="color: #0000FF;">DECLARE</span> 
	 @LastId <span style="color: #0000FF;">INT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
	,@MoveOptionText <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">MAX</span><span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">WHILE</span> <span style="color: #808080;">EXISTS</span> <span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">TOP</span> <span style="color: #000;">1</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">FROM</span> @MoveOption <span style="color: #0000FF;">WHERE</span> <span style="color: #808080;">&#91;</span>Id<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&gt;</span> @LastId<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">BEGIN</span>
	<span style="color: #0000FF;">SELECT</span> 		<span style="color: #0000FF;">TOP</span> <span style="color: #000;">1</span>
			 @MoveOptionText <span style="color: #808080;">=</span> <span style="color: #808080;">&#91;</span>MoveOption<span style="color: #808080;">&#93;</span> 
			,@LastId <span style="color: #808080;">=</span> <span style="color: #808080;">&#91;</span>Id<span style="color: #808080;">&#93;</span>
	<span style="color: #0000FF;">FROM</span>		@MoveOption
	<span style="color: #0000FF;">WHERE</span>		<span style="color: #808080;">&#91;</span>Id<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&gt;</span> @LastId
	<span style="color: #0000FF;">ORDER</span> <span style="color: #0000FF;">BY</span>	<span style="color: #808080;">&#91;</span>Id<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">ASC</span>
&nbsp;
	<span style="color: #0000FF;">PRINT</span> <span style="color: #0000FF;">CASE</span> <span style="color: #0000FF;">WHEN</span> @LastId <span style="color: #808080;">=</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">''</span> <span style="color: #0000FF;">ELSE</span> <span style="color: #FF0000;">','</span> <span style="color: #0000FF;">END</span> <span style="color: #808080;">+</span> @MoveOptionText
<span style="color: #0000FF;">END</span>
&nbsp;
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'GO'</span>
&nbsp;
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'ALTER DATABASE '</span> <span style="color: #808080;">+</span> <span style="color: #FF00FF;">DB_NAME</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">DB_ID</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">' SET MULTI_USER'</span>
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'GO'</span></pre></div></div>

<p><em>And the output looks like this:</em></p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">RESTORE</span> <span style="color: #0000FF;">DATABASE</span> AdventureWorksDW
<span style="color: #0000FF;">FROM</span> <span style="color: #0000FF;">DISK</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'AdventureWorksDW.bak'</span>
<span style="color: #0000FF;">WITH</span>
MOVE <span style="color: #FF0000;">'AdventureWorksDW_Data'</span> <span style="color: #0000FF;">TO</span> <span style="color: #FF0000;">'D:<span style="color: #000099; font-weight: bold;">\A</span>dventureWorksDW<span style="color: #000099; font-weight: bold;">\A</span>dventureWorksDW_Data.mdf'</span>
,MOVE <span style="color: #FF0000;">'AdventureWorksDW_Log'</span> <span style="color: #0000FF;">TO</span> <span style="color: #FF0000;">'T:<span style="color: #000099; font-weight: bold;">\A</span>dventureWorksDW<span style="color: #000099; font-weight: bold;">\A</span>dventureWorksDW_Log.LDF'</span>
GO
<span style="color: #0000FF;">ALTER</span> <span style="color: #0000FF;">DATABASE</span> AdventureWorksDW <span style="color: #0000FF;">SET</span> MULTI_USER
GO</pre></div></div>

<p>If you end up wanting to do something similar with existing databases, make sure to add a command before the RESTORE to set SINGLE_USER mode.</p>
]]></content:encoded>
			<wfw:commentRss>http://timlaqua.com/2010/02/script-restore-database-with-move-stub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charting Analysis Services 2008 Trace Events</title>
		<link>http://timlaqua.com/2009/10/charting-analysis-services-2008-trace-events/</link>
		<comments>http://timlaqua.com/2009/10/charting-analysis-services-2008-trace-events/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 15:05:06 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Scripts & Code]]></category>
		<category><![CDATA[analysis services]]></category>
		<category><![CDATA[bi]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://timlaqua.com/?p=273</guid>
		<description><![CDATA[The other day I was running some Analysis Services traces for some reason or another and ran across Chris Webb's post on (Visualising Analysis Services Trace Information in Reporting Services). After looking over that post, I thought it'd be interesting to visualize various types of processing, queries, etc - basically take a trace and then [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was running some Analysis Services traces for some reason or another and ran across Chris Webb's post on (<a href="http://cwebbbi.spaces.live.com/Blog/cns!7B84B0F2C239489A!1660.entry">Visualising Analysis Services Trace Information in Reporting Services</a>).  After looking over that post, I thought it'd be interesting to visualize various types of processing, queries, etc - basically take a trace and then graph out what happened and when.  Here's a few samples of what the project yielded:</p>
<ul>
<li style="color: red;">Red: <em>Cube Processing on a 2 Minute schedule</em></li>
<li style="color: green;">Green: <em>Cube Processing on a 1 hour schedule</em></li>
<li style="color: blue;">Blue: <em>Cube Processing on a 1 hour schedule</em></li>
<li style="color: black;">Black: <em>Query Activity</em></li>
</ul>
<p><em>Most of the activity here is from SSRS subscriptions firing around 8AM </em><br />
<a href="http://timlaqua.com/wp-content/uploads/2009/10/8AM-MSRS-Subscription-Processing.png"><img src="http://timlaqua.com/wp-content/uploads/2009/10/8AM-MSRS-Subscription-Processing-300x174.png" alt="8AM MSRS Subscription Processing" title="8AM MSRS Subscription Processing" width="300" height="174" class="alignnone size-medium wp-image-269" /></a><br />
<span id="more-273"></span><br />
<em>This is the report filtered to only show events that had a duration greater than 10,000 MS (10 seconds) - Red cube is a trouble maker</em><br />
<a href="http://timlaqua.com/wp-content/uploads/2009/10/SSAS-Events-Longer-Than-10-Seconds.png"><img src="http://timlaqua.com/wp-content/uploads/2009/10/SSAS-Events-Longer-Than-10-Seconds-300x173.png" alt="SSAS Events Longer Than 10 Seconds" title="SSAS Events Longer Than 10 Seconds" width="300" height="173" class="alignnone size-medium wp-image-270" /></a></p>
<p><em>And this is general SSAS activity over a few hours with the nearly instant events filtered out</em><br />
<a href="http://timlaqua.com/wp-content/uploads/2009/10/General-SSAS-Activity-3-Hours.png"><img src="http://timlaqua.com/wp-content/uploads/2009/10/General-SSAS-Activity-3-Hours-300x173.png" alt="General SSAS Activity (3 Hours)" title="General SSAS Activity (3 Hours)" width="300" height="173" class="alignnone size-medium wp-image-271" /></a></p>
<p>The following query assumes that the trace data ended up in a table:</p>
<ul>
<li>@StartMillisecond: INT; <em>Minimum relative start time (millisecond value, kinda have to guess and check)</em></li>
<li>@EndMillisecond: INT; <em>Maximum relative start time (millisecond value, kinda have to guess and check)</em></li>
<li>@MinDuration: INT; <em>Minimum duration in milliseconds</em></li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">;WITH <span style="color: #66cc66;">&#91;</span>ProcessEvent<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span>
<span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span>
	<span style="color: #ff0000;">'Process'</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>Event<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>cast<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>TextData<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> XML<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>value
		<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'declare namespace B=&quot;http://schemas.microsoft.com/analysisservices/2003/engine&quot;;           
		(//B:DatabaseID)[1]'</span>
		<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'VARCHAR(1024)'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>DatabaseID<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>cast<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>TextData<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> XML<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>value
		<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'declare namespace B=&quot;http://schemas.microsoft.com/analysisservices/2003/engine&quot;;           
		(//B:DimensionID)[1]'</span>
		<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'VARCHAR(1024)'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>DimensionID<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>cast<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>TextData<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> XML<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">.</span>value
		<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'declare namespace B=&quot;http://schemas.microsoft.com/analysisservices/2003/engine&quot;;           
		(//B:MeasureGroupID)[1]'</span>
		<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'VARCHAR(1024)'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>MeasureGroupId<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>Duration<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> dbo<span style="color: #66cc66;">.</span>zTrace_MSAS_20091023_2 T
<span style="color: #993333; font-weight: bold;">WHERE</span> 
	T<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>EventClass<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">16</span> 
	<span style="color: #993333; font-weight: bold;">AND</span> T<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>EventSubclass<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#91;</span>TextData<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%Process%'</span>
<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
<span style="color: #66cc66;">&#91;</span>QueryEvent<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span>
<span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span>
	<span style="color: #ff0000;">'Query'</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>Event<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>DatabaseName<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>DatabaseID<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>DimensionID<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>MeasureGroupId<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>Duration<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> dbo<span style="color: #66cc66;">.</span>zTrace_MSAS_20091023_2 T
<span style="color: #993333; font-weight: bold;">WHERE</span> T<span style="color: #66cc66;">.</span><span style="color: #66cc66;">&#91;</span>EventClass<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">10</span>
<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
<span style="color: #66cc66;">&#91;</span>Event<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">AS</span>
<span style="color: #66cc66;">&#40;</span>
	<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>ProcessEvent<span style="color: #66cc66;">&#93;</span>
	<span style="color: #993333; font-weight: bold;">UNION</span>
	<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>QueryEvent<span style="color: #66cc66;">&#93;</span>
<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span>
	 ROW_NUMBER<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> OVER <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">ASC</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>EventId<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>DATEADD<span style="color: #66cc66;">&#40;</span>HOUR<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>DATEDIFF<span style="color: #66cc66;">&#40;</span>MILLISECOND<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> MIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> Event<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#91;</span>RelativeStartTime<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>Duration<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>Event<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span><span style="color: #66cc66;">&#91;</span>DatabaseID<span style="color: #66cc66;">&#93;</span>
	<span style="color: #66cc66;">,</span>CASE
		WHEN <span style="color: #66cc66;">&#91;</span>DimensionID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> THEN <span style="color: #ff0000;">'Dimension'</span>
		WHEN <span style="color: #66cc66;">&#91;</span>MeasureGroupID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> THEN <span style="color: #ff0000;">'Measure Group'</span>
		ELSE <span style="color: #ff0000;">'None'</span>
	 END <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>ObjectType<span style="color: #66cc66;">&#93;</span>	<span style="color: #66cc66;">,</span>CASE
		WHEN <span style="color: #66cc66;">&#91;</span>DimensionID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> THEN <span style="color: #66cc66;">&#91;</span>DimensionID<span style="color: #66cc66;">&#93;</span>
		WHEN <span style="color: #66cc66;">&#91;</span>MeasureGroupID<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> THEN <span style="color: #66cc66;">&#91;</span>MeasureGroupID<span style="color: #66cc66;">&#93;</span>
		ELSE <span style="color: #ff0000;">'None'</span>
	 END <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>ObjectId<span style="color: #66cc66;">&#93;</span>	
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>Event<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span>
	DATEDIFF<span style="color: #66cc66;">&#40;</span>MILLISECOND<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> MIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> Event<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;=</span> @StartMillisecond
	<span style="color: #993333; font-weight: bold;">AND</span> DATEDIFF<span style="color: #66cc66;">&#40;</span>MILLISECOND<span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> MIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> Event<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">&#91;</span>StartTime<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&lt;</span> @EndMillisecond
	<span style="color: #993333; font-weight: bold;">AND</span> Duration <span style="color: #66cc66;">&gt;=</span> @MinDuration</pre></div></div>

<p>A few notes on the report:</p>
<ul>
<li>[EventId] is the Series Group</li>
<li>This is a Range chart type, the Bottom value was [RelativeStartTime] and the Top value was [RelativeStartTime] + [Duration]</li>
<li>Coloring the series and markers uses the following expression

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008000;">=</span>Iif<span style="color: #000000;">&#40;</span>Fields<span style="color: #008000;">!</span><span style="color: #0600FF;">Event</span>.<span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Process&quot;</span>
	,Iif<span style="color: #000000;">&#40;</span>Fields<span style="color: #008000;">!</span>DatabaseID.<span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;SSASDB&quot;</span>
		,<span style="color: #666666;">&quot;Red&quot;</span>
		,Iif<span style="color: #000000;">&#40;</span>Fields<span style="color: #008000;">!</span>DatabaseID.<span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;OtherSSASDB&quot;</span>
			,<span style="color: #666666;">&quot;Green&quot;</span>
			,Iif<span style="color: #000000;">&#40;</span>Fields<span style="color: #008000;">!</span>DatabaseID.<span style="color: #0000FF;">Value</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;YetAnotherSSASDB&quot;</span>
				,<span style="color: #666666;">&quot;Blue&quot;</span>
				,<span style="color: #666666;">&quot;Pink&quot;</span>
			<span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#41;</span>
	,<span style="color: #666666;">&quot;Black&quot;</span>
<span style="color: #000000;">&#41;</span></pre></div></div>

</li>
</ul>
<p>And that's about it - if you have any more questions about it just let me know.  Just seemed like an interesting way to look at trace data <img src='http://timlaqua.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />   It also wouldn't be that difficult to generate events for other things, like your ETL processing and such so you could see that on top of everything else.</p>
]]></content:encoded>
			<wfw:commentRss>http://timlaqua.com/2009/10/charting-analysis-services-2008-trace-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estimating the Size of a Table in SQL Server 2008</title>
		<link>http://timlaqua.com/2009/10/estimating-the-size-of-a-table-in-sql-server-2008/</link>
		<comments>http://timlaqua.com/2009/10/estimating-the-size-of-a-table-in-sql-server-2008/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 02:35:00 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Scripts & Code]]></category>
		<category><![CDATA[msdn]]></category>
		<category><![CDATA[mssql 2008]]></category>
		<category><![CDATA[sql server 2008]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://timlaqua.com/?p=250</guid>
		<description><![CDATA[I have read this (http://msdn.microsoft.com/en-us/library/ms178085.aspx) article at least 6, maybe 7 times in the past - and every time I say to myself "this is ridiculous - someone has to have written a script to do this by now" and every time, I google for hours and fail to find anything. So I finally gave [...]]]></description>
			<content:encoded><![CDATA[<p>I have read this (<a href="http://msdn.microsoft.com/en-us/library/ms178085.aspx">http://msdn.microsoft.com/en-us/library/ms178085.aspx</a>) article at least 6, maybe 7 times in the past - and every time I say to myself "this is ridiculous - someone has to have written a script to do this by now" and every time, I google for hours and fail to find anything.  So I finally gave up and wrote something to do it.  Note, I've only verified it on 100% fixed width tables.  I compared its output to a 600+ million row table and it came out somewhere around 3% higher - fine with me as I'd rather over-estimate space requirements than under-estimate.<br />
<span id="more-250"></span><br />
First, we have to create a table type to hold our table column definitions.  the datatype is required, length is required for anything that allows length (MAX is not handled for any types), and the worst case scenario is always used so if you know you won't be filling those VARCHAR(255)s, feel free to use a smaller, more average, number.  IsKey is a BIT value that tells the proc to use those columns as part of the index key.  The rest of it is all calculated.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> TYPE TableColumnDefinition <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">TABLE</span>
	<span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NOT</span> <span style="color: #808080;">NULL</span>
	,<span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">INT</span>
	,<span style="color: #808080;">&#91;</span>IsKey<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">BIT</span>
	,<span style="color: #808080;">&#91;</span>DataLength<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">AS</span>
		<span style="color: #0000FF;">CASE</span> 
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'BIT'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">0.125</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'TINYINT'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">1</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'SMALLINT'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">2</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">IN</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #FF0000;">'SMALLMONEY'</span>, <span style="color: #FF0000;">'REAL'</span>, <span style="color: #FF0000;">'SMALLDATETIME'</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">4</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">IN</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'BIGINT'</span>, <span style="color: #FF0000;">'DATETIME'</span>, <span style="color: #FF0000;">'MONEY'</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">8</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'UNIQUEIDENTIFIER'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">16</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'NVARCHAR'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">*</span> <span style="color: #000;">2</span> <span style="color: #808080;">+</span> <span style="color: #000;">2</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'VARCHAR'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">+</span> <span style="color: #000;">2</span>	<span style="color: #008080;">-- DOESN'T SUPPORT MAX</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Datatype<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'DATE'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">3</span> 
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Datatype<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'TIME'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">5</span> <span style="color: #008080;">-- Worst case</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Datatype<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'DATETIME2'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">8</span> <span style="color: #008080;">-- Worst case</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Datatype<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'DATETIMEOFFSET'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">10</span> <span style="color: #008080;">-- Worst case</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'CHAR'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'NCHAR'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">*</span> <span style="color: #000;">2</span> <span style="color: #808080;">+</span> <span style="color: #000;">2</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'BINARY'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'VARBINARY'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">+</span> <span style="color: #000;">2</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Datatype<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'TIMESTAMP'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">8</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'XML'</span> <span style="color: #0000FF;">THEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span>	<span style="color: #008080;">-- Estimate an average size in bytes, 2GB max</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">IN</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'DECIMAL'</span>, <span style="color: #FF0000;">'NUMERIC'</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">THEN</span> 
				<span style="color: #0000FF;">CASE</span> 
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">BETWEEN</span> <span style="color: #000;">1</span> <span style="color: #808080;">AND</span> <span style="color: #000;">9</span>	<span style="color: #0000FF;">THEN</span> <span style="color: #000;">5</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">BETWEEN</span> <span style="color: #000;">10</span> <span style="color: #808080;">AND</span> <span style="color: #000;">19</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">9</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">BETWEEN</span> <span style="color: #000;">20</span> <span style="color: #808080;">AND</span> <span style="color: #000;">28</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">13</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">BETWEEN</span> <span style="color: #000;">29</span> <span style="color: #808080;">AND</span> <span style="color: #000;">38</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">17</span>
				<span style="color: #0000FF;">END</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'FLOAT'</span> <span style="color: #0000FF;">THEN</span>
				<span style="color: #0000FF;">CASE</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">BETWEEN</span> <span style="color: #000;">1</span> <span style="color: #808080;">AND</span> <span style="color: #000;">24</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">4</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #808080;">BETWEEN</span> <span style="color: #000;">25</span> <span style="color: #808080;">AND</span> <span style="color: #000;">53</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">8</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>Length<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">IS</span> <span style="color: #808080;">NULL</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">8</span>	<span style="color: #008080;">-- Default n is 53</span>
				<span style="color: #0000FF;">END</span>
			<span style="color: #0000FF;">ELSE</span> <span style="color: #000;">0</span>
		<span style="color: #0000FF;">END</span>
	,<span style="color: #808080;">&#91;</span>IsVariableLength<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">AS</span>
		<span style="color: #0000FF;">CASE</span> 
			<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span>DataType<span style="color: #808080;">&#93;</span> <span style="color: #808080;">IN</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'VARCHAR'</span>, <span style="color: #FF0000;">'NVARCHAR'</span>, <span style="color: #FF0000;">'VARBINARY'</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">THEN</span> <span style="color: #000;">1</span>
			<span style="color: #0000FF;">ELSE</span> <span style="color: #000;">0</span>
		<span style="color: #0000FF;">END</span><span style="color: #808080;">&#41;</span></pre></div></div>

<p>Now for the proc that attempts to replicate the methodology outlined on the aforementioned MSDN article.  The results appeared to be accurate or over the actual value, which was exactly what I needed, so I went with it and moved on.  I'm completely open to corrections, suggestions, improvements, etc.  Just make a comment and I'll integrate them (assuming they work <img src='http://timlaqua.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #008080;">/*************************************************************************************
***
*** Procedure:  		[Utility_EstimateClusteredIndexSize]
*** Purpose:		    Estimates the amount of space needed for a given clustered index
*** Methodology:		http://msdn.microsoft.com/en-us/library/ms178085.aspx
***			
***			
*** Author:		      Tim Laqua
*** Date Created:	  2009-10-15 
*** 
*** Revision History
*** Date		Author			Description
*** 2009-10-15	tl				Created
*************************************************************************************/</span>
<span style="color: #0000FF;">ALTER</span> <span style="color: #0000FF;">PROCEDURE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>Utility_EstimateClusteredIndexSize<span style="color: #808080;">&#93;</span>
<span style="color: #808080;">&#40;</span>
	 @Num_Rows <span style="color: #0000FF;">FLOAT</span>
	,@ClusteredIndexIsUnique <span style="color: #0000FF;">BIT</span>
	,@Fill_Factor <span style="color: #0000FF;">FLOAT</span>
	,@TableColumn TableColumnDefinition READONLY
<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">AS</span> 
&nbsp;
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span>
	 @Num_Cols <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>					<span style="color: #008080;">-- total number of columns (fixed-length and variable-length)</span>
	,@Fixed_Data_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>			<span style="color: #008080;">-- total byte size of all fixed-length columns</span>
	,@Num_Variable_Cols <span style="color: #0000FF;">FLOAT</span>	<span style="color: #808080;">=</span> <span style="color: #000;">0</span>			<span style="color: #008080;">-- number of variable-length columns</span>
	,@Max_Var_Size <span style="color: #0000FF;">FLOAT</span>	<span style="color: #808080;">=</span> <span style="color: #000;">0</span>				<span style="color: #008080;">-- maximum byte size of all variable-length columns</span>
	,@Variable_Data_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">TABLE</span>
	<span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>Name<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">64</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">FLOAT</span>
	,<span style="color: #808080;">&#91;</span>DisplayValue<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">AS</span>
		<span style="color: #0000FF;">CASE</span>
			<span style="color: #0000FF;">WHEN</span> <span style="color: #FF00FF;">LOWER</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>Name<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">LIKE</span> <span style="color: #FF0000;">'%size%'</span> <span style="color: #808080;">OR</span> <span style="color: #FF00FF;">LOWER</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>Name<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">LIKE</span> <span style="color: #FF0000;">'%space%'</span> <span style="color: #0000FF;">THEN</span>
				<span style="color: #0000FF;">CASE</span> 
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">&lt;</span> <span style="color: #000;">1024</span> <span style="color: #0000FF;">THEN</span> <span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">ROUND</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span>, <span style="color: #000;">3</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span>,<span style="color: #000;">0</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">' B'</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">&lt;</span> <span style="color: #000;">1024</span><span style="color: #808080;">*</span><span style="color: #000;">1024</span> <span style="color: #0000FF;">THEN</span> <span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">ROUND</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">/</span><span style="color: #000;">1024</span>, <span style="color: #000;">3</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span>,<span style="color: #000;">3</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">' KB'</span>
					<span style="color: #0000FF;">WHEN</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span> <span style="color: #808080;">&lt;</span> <span style="color: #000;">1024</span><span style="color: #808080;">*</span><span style="color: #000;">1024</span><span style="color: #808080;">*</span><span style="color: #000;">1024</span> <span style="color: #0000FF;">THEN</span> <span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">ROUND</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">/</span><span style="color: #000;">1024</span><span style="color: #808080;">/</span><span style="color: #000;">1024</span>, <span style="color: #000;">3</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span>,<span style="color: #000;">3</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">' MB'</span>
					<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">ROUND</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">/</span><span style="color: #000;">1024</span><span style="color: #808080;">/</span><span style="color: #000;">1024</span><span style="color: #808080;">/</span><span style="color: #000;">1024</span>, <span style="color: #000;">3</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span>,<span style="color: #000;">3</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> <span style="color: #FF0000;">' GB'</span>
				<span style="color: #0000FF;">END</span>
			<span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">CAST</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">FLOOR</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span><span style="color: #0000FF;">VALUE</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">16</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
		<span style="color: #0000FF;">END</span><span style="color: #808080;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #008080;">-- Leaf level data</span>
<span style="color: #0000FF;">SELECT</span> 
	 @Num_Variable_Cols <span style="color: #808080;">=</span> <span style="color: #FF00FF;">COUNT</span><span style="color: #808080;">&#40;</span><span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>
	,@Max_Var_Size <span style="color: #808080;">=</span> IS<span style="color: #808080;">NULL</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">SUM</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>DataLength<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">FROM</span> @TableColumn <span style="color: #0000FF;">WHERE</span> <span style="color: #808080;">&#91;</span>IsVariableLength<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> 
	 @Num_Cols <span style="color: #808080;">=</span> <span style="color: #FF00FF;">COUNT</span><span style="color: #808080;">&#40;</span><span style="color: #000;">1</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> @Num_Variable_Cols
	,@Fixed_Data_Size <span style="color: #808080;">=</span> <span style="color: #FF00FF;">CEILING</span><span style="color: #808080;">&#40;</span>IS<span style="color: #808080;">NULL</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">SUM</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>DataLength<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">FROM</span> @TableColumn <span style="color: #0000FF;">WHERE</span> <span style="color: #808080;">&#91;</span>IsVariableLength<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
&nbsp;
&nbsp;
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Fixed_Data_Size'</span>, @Fixed_Data_Size<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">IF</span> @ClusteredIndexIsUnique <span style="color: #808080;">&lt;&gt;</span> <span style="color: #000;">0</span>
<span style="color: #0000FF;">BEGIN</span>
	<span style="color: #0000FF;">SET</span> @Num_Cols <span style="color: #808080;">+=</span> <span style="color: #000;">1</span>
	<span style="color: #0000FF;">IF</span> @Num_Variable_Cols <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
		<span style="color: #0000FF;">SET</span> @Num_Variable_Cols <span style="color: #808080;">+=</span> <span style="color: #000;">1</span>
	<span style="color: #0000FF;">IF</span> @Max_Var_Size <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
		<span style="color: #0000FF;">SET</span> @Max_Var_Size <span style="color: #808080;">+=</span> <span style="color: #000;">4</span>
<span style="color: #0000FF;">END</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Null_Bitmap <span style="color: #0000FF;">INT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">CEILING</span><span style="color: #808080;">&#40;</span><span style="color: #000;">2</span> <span style="color: #808080;">+</span> <span style="color: #808080;">&#40;</span><span style="color: #808080;">&#40;</span>@Num_Cols <span style="color: #808080;">+</span> <span style="color: #000;">7</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">/</span> <span style="color: #000;">8</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Null_Bitmap'</span>, @Null_Bitmap<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #008080;">-- if there are variable columns</span>
<span style="color: #0000FF;">IF</span> @Num_Variable_Cols <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
	<span style="color: #0000FF;">SET</span> @Variable_Data_Size <span style="color: #808080;">=</span> <span style="color: #000;">2</span> <span style="color: #808080;">+</span> <span style="color: #808080;">&#40;</span>@Num_Variable_Cols <span style="color: #808080;">*</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> @Max_Var_Size 
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Num_Cols'</span>, @Num_Cols<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Num_Variable_Cols'</span>, @Num_Variable_Cols<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Max_Var_Size'</span>, @Max_Var_Size<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Row_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">CEILING</span><span style="color: #808080;">&#40;</span>@Fixed_Data_Size <span style="color: #808080;">+</span> @Variable_Data_Size <span style="color: #808080;">+</span> @Null_Bitmap <span style="color: #808080;">+</span> <span style="color: #000;">4</span> <span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Row_Size'</span>, @Row_Size<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Rows_Per_Page <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">FLOOR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">8096</span> <span style="color: #808080;">/</span> <span style="color: #808080;">&#40;</span>@Row_Size <span style="color: #808080;">+</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Rows_Per_Page'</span>, @Rows_Per_Page<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Free_Rows_Per_Page <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">FLOOR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">8096</span> <span style="color: #808080;">*</span> <span style="color: #808080;">&#40;</span><span style="color: #808080;">&#40;</span><span style="color: #000;">100</span> <span style="color: #808080;">-</span> @Fill_Factor<span style="color: #808080;">&#41;</span> <span style="color: #808080;">/</span> <span style="color: #000;">100</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">/</span> <span style="color: #808080;">&#40;</span>@Row_Size <span style="color: #808080;">+</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Free_Rows_Per_Page'</span>, @Free_Rows_Per_Page<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Num_Leaf_Pages <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">CEILING</span><span style="color: #808080;">&#40;</span>@Num_Rows <span style="color: #808080;">/</span> <span style="color: #808080;">&#40;</span>@Rows_Per_Page <span style="color: #808080;">-</span> @Free_Rows_Per_Page<span style="color: #808080;">&#41;</span> <span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Num_Leaf_Pages'</span>, @Num_Leaf_Pages<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Leaf_space_used <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">8192</span> <span style="color: #808080;">*</span> @Num_Leaf_Pages
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Leaf_space_used'</span>, @Leaf_space_used<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #008080;">-- Index Information</span>
<span style="color: #0000FF;">DECLARE</span>
	 @Num_Key_Cols <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>			<span style="color: #008080;">-- total number of key columns (fixed-length and variable-length)</span>
	,@Fixed_Key_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>			<span style="color: #008080;">-- total byte size of all fixed-length key columns</span>
	,@Num_Variable_Key_Cols <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>	<span style="color: #008080;">-- number of variable-length key columns</span>
	,@Max_Var_Key_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>		<span style="color: #008080;">-- maximum byte size of all variable-length key columns</span>
&nbsp;
&nbsp;
<span style="color: #0000FF;">SELECT</span> 
	 @Num_Variable_Key_Cols <span style="color: #808080;">=</span> <span style="color: #FF00FF;">COUNT</span><span style="color: #808080;">&#40;</span><span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>
	,@Max_Var_Key_Size <span style="color: #808080;">=</span> IS<span style="color: #808080;">NULL</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">SUM</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>DataLength<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">FROM</span> @TableColumn 
<span style="color: #0000FF;">WHERE</span> 
	<span style="color: #808080;">&#91;</span>IsVariableLength<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span> 
	<span style="color: #808080;">AND</span> <span style="color: #808080;">&#91;</span>IsKey<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> 
	 @Num_Key_Cols <span style="color: #808080;">=</span> <span style="color: #FF00FF;">COUNT</span><span style="color: #808080;">&#40;</span><span style="color: #000;">1</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> @Num_Variable_Key_Cols
	,@Fixed_Key_Size <span style="color: #808080;">=</span> IS<span style="color: #808080;">NULL</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">SUM</span><span style="color: #808080;">&#40;</span><span style="color: #808080;">&#91;</span>DataLength<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#41;</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">FROM</span> @TableColumn 
<span style="color: #0000FF;">WHERE</span> 
	<span style="color: #808080;">&#91;</span>IsVariableLength<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
	<span style="color: #808080;">AND</span> <span style="color: #808080;">&#91;</span>IsKey<span style="color: #808080;">&#93;</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span>
&nbsp;
<span style="color: #0000FF;">IF</span> @ClusteredIndexIsUnique <span style="color: #808080;">&lt;&gt;</span> <span style="color: #000;">0</span>
<span style="color: #0000FF;">BEGIN</span>
	<span style="color: #0000FF;">SET</span> @Num_Key_Cols <span style="color: #808080;">+=</span> <span style="color: #000;">1</span>
	<span style="color: #0000FF;">IF</span> @Num_Variable_Key_Cols <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
		<span style="color: #0000FF;">SET</span> @Num_Variable_Key_Cols <span style="color: #808080;">+=</span> <span style="color: #000;">1</span>
	<span style="color: #0000FF;">IF</span> @Max_Var_Key_Size <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
		<span style="color: #0000FF;">SET</span> @Max_Var_Key_Size <span style="color: #808080;">+=</span> <span style="color: #000;">4</span>
<span style="color: #0000FF;">END</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Num_Variable_Key_Cols'</span>, @Num_Variable_Key_Cols<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Max_Var_Key_Size'</span>, @Max_Var_Key_Size<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Num_Key_Cols'</span>, @Num_Key_Cols<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #008080;">-- Who would seriously have a nullable key column?  ridiculous.</span>
<span style="color: #0000FF;">DECLARE</span> @Index_Null_Bitmap <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">2</span> <span style="color: #808080;">+</span> <span style="color: #808080;">&#40;</span><span style="color: #808080;">&#40;</span>@Num_Key_Cols <span style="color: #808080;">+</span> <span style="color: #000;">7</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">/</span> <span style="color: #000;">8</span><span style="color: #808080;">&#41;</span> 
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Index_Null_Bitmap'</span>, @Index_Null_Bitmap<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Variable_Key_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
&nbsp;
<span style="color: #0000FF;">IF</span> @Max_Var_Key_Size <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
	<span style="color: #0000FF;">SET</span> @Variable_Key_Size <span style="color: #808080;">=</span> <span style="color: #000;">2</span> <span style="color: #808080;">+</span> <span style="color: #808080;">&#40;</span>@Num_Variable_Key_Cols <span style="color: #808080;">*</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">+</span> @Max_Var_Key_Size 
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Variable_Key_Size'</span>, @Variable_Key_Size<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Index_Row_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> @Fixed_Key_Size <span style="color: #808080;">+</span> @Variable_Key_Size <span style="color: #808080;">+</span> @Index_Null_Bitmap <span style="color: #808080;">+</span> <span style="color: #000;">1</span> <span style="color: #808080;">+</span> <span style="color: #000;">6</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Index_Row_Size'</span>,@Index_Row_Size <span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Index_Rows_Per_Page  <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">FLOOR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">8096</span> <span style="color: #808080;">/</span> <span style="color: #808080;">&#40;</span>@Index_Row_Size <span style="color: #808080;">+</span> <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Index_Rows_Per_Page'</span>, @Index_Rows_Per_Page<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Non_Leaf_Levels <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">1</span>
&nbsp;
<span style="color: #008080;">-- Log base @Non_Leaf_Levels hack</span>
<span style="color: #0000FF;">WHILE</span> <span style="color: #808080;">&#40;</span>@Num_Leaf_Pages <span style="color: #808080;">/</span> @Index_Rows_Per_Page<span style="color: #808080;">&#41;</span> <span style="color: #808080;">&gt;</span> <span style="color: #FF00FF;">POWER</span><span style="color: #808080;">&#40;</span>@Index_Rows_Per_Page,@Non_Leaf_Levels<span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">SET</span> @Non_Leaf_Levels <span style="color: #808080;">+=</span> <span style="color: #000;">1</span>
&nbsp;
<span style="color: #0000FF;">SET</span> @Non_Leaf_Levels <span style="color: #808080;">+=</span> <span style="color: #000;">1</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Non_Leaf_Levels'</span>, @Non_Leaf_Levels<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #008080;">-- Summation hack</span>
<span style="color: #0000FF;">DECLARE</span> 
	 @Num_Index_Pages <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
	,@Summand <span style="color: #0000FF;">INT</span> <span style="color: #808080;">=</span> @Non_Leaf_Levels
&nbsp;
<span style="color: #0000FF;">WHILE</span> @Summand <span style="color: #808080;">&gt;</span> <span style="color: #000;">0</span>
<span style="color: #0000FF;">BEGIN</span>
	<span style="color: #0000FF;">SET</span> @Num_Index_Pages <span style="color: #808080;">+=</span> <span style="color: #FF00FF;">CEILING</span><span style="color: #808080;">&#40;</span>@Num_Leaf_Pages<span style="color: #808080;">/</span><span style="color: #FF00FF;">POWER</span><span style="color: #808080;">&#40;</span>@Index_Rows_Per_Page, @Summand<span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
	<span style="color: #0000FF;">SET</span> @Summand <span style="color: #808080;">-=</span> <span style="color: #000;">1</span>
<span style="color: #0000FF;">END</span>
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Num_Index_Pages'</span>, @Num_Index_Pages<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Index_Space_Used <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> <span style="color: #000;">8192</span> <span style="color: #808080;">*</span> @Num_Index_Pages 
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Index_Space_Used'</span>, @Index_Space_Used<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @Clustered_Index_Size <span style="color: #0000FF;">FLOAT</span> <span style="color: #808080;">=</span> @Leaf_Space_Used <span style="color: #808080;">+</span> @Index_Space_used
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @<span style="color: #FF00FF;">VAR</span> <span style="color: #0000FF;">VALUES</span> <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'@Clustered_Index_Size'</span>, @Clustered_Index_Size<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000FF;">FROM</span> @<span style="color: #FF00FF;">VAR</span></pre></div></div>

<p>Now for an example of how to run this doodad.  This particular estimate was for a staging table - I needed the UNIQUEIDENTIFER as the key and the CreatedTime field had to be part of the clustered index for the partition scheme.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">DECLARE</span> @TableColumn TableColumnDefinition
&nbsp;
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> @TableColumn
<span style="color: #0000FF;">VALUES</span> 
	 <span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'UNIQUEIDENTIFIER'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'DATETIME'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
	,<span style="color: #808080;">&#40;</span><span style="color: #FF0000;">'INT'</span>, <span style="color: #808080;">NULL</span>, <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">EXEC</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>Utility_EstimateClusteredIndexSize<span style="color: #808080;">&#93;</span>	
 @Num_Rows <span style="color: #808080;">=</span> <span style="color: #000;">750000</span>		<span style="color: #008080;">-- number of rows in the table</span>
,@ClusteredIndexIsUnique <span style="color: #808080;">=</span> <span style="color: #000;">1</span> 	<span style="color: #008080;">-- is it?</span>
,@Fill_Factor <span style="color: #808080;">=</span> <span style="color: #000;">90</span>			<span style="color: #008080;">-- page fill factor</span>
,@TableColumn <span style="color: #808080;">=</span> @TableColumn	<span style="color: #008080;">-- definition of table columns</span></pre></div></div>

<p>As for what the output looks like, I wanted it to output all the variables used so I could validate along the way with th emanual method.  The results look something like this</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Name                                                             Value                  DisplayValue
---------------------------------------------------------------- ---------------------- -------------------
@Fixed_Data_Size                                                 60                     60 B
@Null_Bitmap                                                     5                      5
@Num_Cols                                                        12                     12
@Num_Variable_Cols                                               0                      0
@Max_Var_Size                                                    0                      0 B
@Row_Size                                                        69                     69 B
@Rows_Per_Page                                                   114                    114
@Free_Rows_Per_Page                                              11                     11
@Num_Leaf_Pages                                                  7282                   7282
@Leaf_space_used                                                 59654144               56.891 MB
@Num_Variable_Key_Cols                                           0                      0
@Max_Var_Key_Size                                                0                      0 B
@Num_Key_Cols                                                    3                      3
@Index_Null_Bitmap                                               3.25                   3
@Variable_Key_Size                                               0                      0 B
@Index_Row_Size                                                  34.25                  34 B
@Index_Rows_Per_Page                                             223                    223
@Non_Leaf_Levels                                                 2                      2
@Num_Index_Pages                                                 34                     34
@Index_Space_Used                                                278528                 272.000 KB
@Clustered_Index_Size                                            59932672               57.156 MB</pre></div></div>

<p>So now you may ask "but what about estimating Non-Clustered Indexes and Heaps?"  Well, good question as this is the methodology for estimating the size of a Clustered Index.  I ran this for a fact table with two non-clustered indexes in addition to the clustered index by basically defining the index (so pretending the index was a table for the purposes of this proc - included columns would just be non-key columns).  All in all, it came out +3.31% on 600+ million rows, so I called that methodology good enough <img src='http://timlaqua.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://timlaqua.com/2009/10/estimating-the-size-of-a-table-in-sql-server-2008/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Searching for keywords in all Reporting Services (SSRS) reports</title>
		<link>http://timlaqua.com/2008/09/searching-for-keywords-in-all-reporting-services-ssrs-reports/</link>
		<comments>http://timlaqua.com/2008/09/searching-for-keywords-in-all-reporting-services-ssrs-reports/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 16:03:24 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
				<category><![CDATA[Scripts & Code]]></category>
		<category><![CDATA[bi]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[rdl]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[ReportingServices]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[ssrs]]></category>
		<category><![CDATA[tsql]]></category>

		<guid isPermaLink="false">http://timlaqua.com/?p=38</guid>
		<description><![CDATA[During impact analysis for any changes to existing database tables, cube dimensions, cube measures, etc, it's nice to know which reports are going to horribly break before your end-users let you know about it All of the rdl content for reports uploaded to SSRS is stored in the ReportingServices database in the Content column of [...]]]></description>
			<content:encoded><![CDATA[<p>During impact analysis for any changes to existing database tables, cube dimensions, cube measures, etc, it's nice to know which reports are going to horribly break before your end-users let you know about it <img src='http://timlaqua.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />   All of the rdl content for reports uploaded to SSRS is stored in the ReportingServices database in the Content column of the Catalog table (in binary, of course) so here's what I came up with to get the list of soon to be broken reports:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>Path<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> ContentText
<span style="color: #993333; font-weight: bold;">FROM</span>
<span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>Path<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">,</span> cast<span style="color: #66cc66;">&#40;</span>cast<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>content<span style="color: #66cc66;">&#93;</span><span style="color: #993333; font-weight: bold;">AS</span> varbinary<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> <span style="color: #66cc66;">&#91;</span>ContentText<span style="color: #66cc66;">&#93;</span>
<span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #66cc66;">&#91;</span>catalog<span style="color: #66cc66;">&#93;</span> cat <span style="color: #993333; font-weight: bold;">WITH</span><span style="color: #66cc66;">&#40;</span>nolock<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #66cc66;">&#91;</span>type<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">=</span><span style="color: #cc66cc;">2</span>
<span style="color: #66cc66;">&#41;</span> a
<span style="color: #993333; font-weight: bold;">WHERE</span> ContentText <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%ColumnName%'</span> 
	<span style="color: #993333; font-weight: bold;">OR</span> ContentText <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%columnname%'</span> 
	<span style="color: #993333; font-weight: bold;">OR</span> ContentText <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%MeasureName%'</span> 
	<span style="color: #993333; font-weight: bold;">OR</span> ContentText <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%AttributeName%'</span> 
	<span style="color: #993333; font-weight: bold;">OR</span> ContentText <span style="color: #993333; font-weight: bold;">LIKE</span> <span style="color: #ff0000;">'%etc...%'</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://timlaqua.com/2008/09/searching-for-keywords-in-all-reporting-services-ssrs-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
