<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Systems Engineering and RDBMS</title>
	
	<link>http://decipherinfosys.wordpress.com</link>
	<description />
	<lastBuildDate>Fri, 23 Oct 2009 16:47:35 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain="decipherinfosys.wordpress.com" port="80" path="/?rsscloud=notify" registerProcedure="" protocol="http-post" />
<image>
		<url>http://www.gravatar.com/blavatar/a1338244b8e44d57d83b1634936133f5?s=96&amp;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Systems Engineering and RDBMS</title>
		<link>http://decipherinfosys.wordpress.com</link>
	</image>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/SystemsEngineeringAndRdbms" type="application/rss+xml" /><feedburner:emailServiceId>SystemsEngineeringAndRdbms</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Outlook Attachment Reminder</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/yXpJC1BdCvM/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/23/outlook-attachment-reminder/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 16:47:35 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2416</guid>
		<description><![CDATA[This was sent by a friend and is a helpful tip that one can use in their day to day work life so we are posting it here.   He wrote:
Sometimes we forget to attach an attachment that we meant to send in the Outlook email. I found a small macro program that checks for the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2416&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This was sent by a friend and is a helpful tip that one can use in their day to day work life so we are posting it here.   He wrote:</p>
<p><em>Sometimes we forget to attach an attachment that we meant to send in the Outlook email. I found a small macro program that checks for the actual attachment file when it sees a keyword “attach” in your message body before sending the email. If doesn’t see the attachment file, it shows an alert similar to shown below:</em></p>
<p><em><img class="aligncenter size-full wp-image-2417" title="Outlook" src="http://decipherinfosys.files.wordpress.com/2009/10/outlook.jpg?w=310&#038;h=140" alt="Outlook" width="310" height="140" /></em></p>
<p><em>The script and the instructions are available from Mark Bird&#8217;s google page over here:</em></p>
<p><a href="http://mark.bird.googlepages.com/home">http://mark.bird.googlepages.com/home</a></p>
<p>A simple and helpful tip indeed.  Thanks Mark.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2416/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2416&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/23/outlook-attachment-reminder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/outlook.jpg" medium="image">
			<media:title type="html">Outlook</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/23/outlook-attachment-reminder/</feedburner:origLink></item>
		<item>
		<title>listagg() – new analytic function in Oracle 11g R2</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/F-wZ6YWSaTs/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/20/listagg-new-analytic-function-in-oracle-11g-r2/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 22:03:27 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2414</guid>
		<description><![CDATA[We all have used different methods in order to get a concatenated list of values from a column &#8211; pivoting it out, using SYS_CONNECT_BY_PATH function which was introduced in Oracle 10g R1, writing our own functions to do it etc..  In SQL Server also, using XML PATH, one can do it easily as illustrated in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2414&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We all have used different methods in order to get a concatenated list of values from a column &#8211; pivoting it out, using SYS_CONNECT_BY_PATH function which was introduced in Oracle 10g R1, writing our own functions to do it etc..  In SQL Server also, using XML PATH, one can do it easily as illustrated in some of our posts before &#8211; one of them is <a href="http://decipherinfosys.wordpress.com/2008/03/21/getting-the-list-of-columns-for-a-table/">here</a>.</p>
<p>Oracle 11gR2 now has a new analytic function called listagg() for doing the list aggregation.  So, now all that we need to specify is the name of the column and the separator string that will separate the different values.  Here is the link to the 11gR2 documentation on this wonderful function along with some examples to help illustrate it&#8217;s usefulness:</p>
<p><a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions087.htm">http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions087.htm</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2414/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2414&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/20/listagg-new-analytic-function-in-oracle-11g-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/20/listagg-new-analytic-function-in-oracle-11g-r2/</feedburner:origLink></item>
		<item>
		<title>Splitting a number of rows into equal groups</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/01xpARnUmEU/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/16/splitting-a-number-of-rows-into-equal-groups/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 12:35:53 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2409</guid>
		<description><![CDATA[At the client site yesterday, one of the developers asked this question: &#8220;I want to take the large set of the data that I have in my gigantic table and split it up into balanced non-overlapping sets.  I want the starting value in the set, the ending value and the number of records in that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2409&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>At the client site yesterday, one of the developers asked this question: &#8220;<em><span style="color:#993366;">I want to take the large set of the data that I have in my gigantic table and split it up into balanced non-overlapping sets.  I want the starting value in the set, the ending value and the number of records in that group.  I need this to do my data processing logic for starting parallel concurrent processing of those large data sets.  What is the best way to achieve this?</span></em>&#8220;</p>
<p>This client site uses both Oracle and SQL Server so the solution had to work with both the RDBMS.  Luckily enough, there is an analytic function in both which does this very easily for us.  The function that we are talking about is NTILE().  Let&#8217;s take this up with an example:</p>
<p><strong>SQL Server</strong>:</p>
<p>Let&#8217;s say that I want to split all the objects in sys.objects into say 10 different non-overlapping sets.  And then as per the requirement, I need to list out the starting value in the set, the ending value and the total count of the records in the set.  Here is a simple code sample that will do that:</p>
<p>select<br />
min(object_id) as Starting_Value<br />
,    max(object_id) as Ending_Value<br />
,    count(*)       as Total_Records<br />
,    grp_nbr           as Group_Nbr<br />
from<br />
(<br />
select object_id,<br />
ntile(10) over (order by object_id) grp_nbr<br />
from SYS.OBJECTS<br />
) AS IV<br />
group by grp_nbr;</p>
<p>What I get as the output in my test database is this:</p>
<pre>Starting_Value Ending_Value Total_Records Group_Nbr
-------------- ------------ ------------- --------------------
4              125243501    123           1
128719511      366624349    123           2
367340373      571865104    123           3
574625090      767341798    122           4
768721791      971150505    122           5
971866529      1163151189   122           6
1165247206     1403152044   122           7
1406628054     1707153127   122           8
1709249144     1941581955   122           9
1943677972     2144726693   122           10
</pre>
<p>Now, you will notice that not all sets have equal records but they are pretty close.  That is by definition of the NTILE() function.  Here is what BOL states:</p>
<p><span style="color:#993366;"><em>If the number of rows in a partition is not divisible by </em><em>expression, this will cause groups of two sizes that differ by one  member. Larger groups come before smaller groups in the order specified by the  OVER clause. For example if the total number of rows is 53 and the number of  buckets is five, the first three buckets will have 11 rows and the two remaining  buckets will have 10 rows each. If on the other hand the total number of rows is  divisible by the number of buckets, the rows will be distributed evenly among  the buckets. For example, if the total number of rows is 50, and there are five  buckets, each bucket will contain 10 rows.</em></span></p>
<p><span style="color:#993366;"><strong><span style="color:#000000;">Oracle</span></strong><span style="color:#000000;">:</span></span></p>
<p><span style="color:#993366;"><span style="color:#000000;">And the same function is available in Oracle as well<em>. </em><span style="color:#000000;">And the same code shown above will work in Oracle as well.  Just replace SYS.OBJECTS with ALL_OBJECTS.</span></span></span></p>
<p><span style="color:#993366;"><span style="color:#000000;"><span style="color:#000000;">Pretty simple way of splitting a large data set into non-overlapping sets, isn&#8217;t it!</span></span></span></p>
<p><span style="color:#993366;"><span style="color:#000000;"><span style="color:#000000;"><strong>Resources</strong>:</span></span></span></p>
<ul>
<li><span style="color:#993366;"><span style="color:#000000;"><span style="color:#000000;">SQL Server MSDN BOL entry for the NTILE() function &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms175126.aspx">here</a>.</span></span></span></li>
<li><span style="color:#993366;"><span style="color:#000000;"><span style="color:#000000;">Oracle documentation of the NTILE() function &#8211; <a href="http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/functions091.htm">here</a>.<br />
</span></span></span></li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2409&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/16/splitting-a-number-of-rows-into-equal-groups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/16/splitting-a-number-of-rows-into-equal-groups/</feedburner:origLink></item>
		<item>
		<title>SSRS and Excel rendering limitations</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/OD0TY0Z6qgI/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/13/ssrs-and-excel-rendering-limitations/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 15:24:48 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2401</guid>
		<description><![CDATA[Ran into an issue at a client site today in which one of the columns of the report was getting a concatenated string of the DC&#8217;s for the suppliers.  It turns out that for one of them, the string was over the limit that excel could handle and as a result when the end user [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2401&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ran into an issue at a client site today in which one of the columns of the report was getting a concatenated string of the DC&#8217;s for the suppliers.  It turns out that for one of them, the string was over the limit that excel could handle and as a result when the end user was trying to export out the data to excel, it failed.  Here is what the error was:</p>
<p><img class="aligncenter size-full wp-image-2402" title="SSRS_ERR_1" src="http://decipherinfosys.files.wordpress.com/2009/10/ssrs_err_1.jpg?w=641&#038;h=107" alt="SSRS_ERR_1" width="641" height="107" /></p>
<p>And when you clicked on Yes, you would get this:</p>
<p><img class="aligncenter size-full wp-image-2403" title="SSRS_ERR_2" src="http://decipherinfosys.files.wordpress.com/2009/10/ssrs_err_2.jpg?w=506&#038;h=243" alt="SSRS_ERR_2" width="506" height="243" /></p>
<p>Needless to say, both are cryptic messages &#8211; after looking up on technet and MSDN and googling/binging <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  it for a while, came across the limitations of excel rendering which we thought that we would post here so that the readers can benefit from it as well.  The limitations are mentioned here:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms156418(SQL.90).aspx">http://msdn.microsoft.com/en-us/library/ms156418(SQL.90).aspx</a></p>
<p>The report design was changed as well since there was no need to have that concatenated list in this case but it is good to be aware of the limitations so that you know the next time what might be a possible cause for that weird error that excel throws at you.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2401/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2401&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/13/ssrs-and-excel-rendering-limitations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssrs_err_1.jpg" medium="image">
			<media:title type="html">SSRS_ERR_1</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssrs_err_2.jpg" medium="image">
			<media:title type="html">SSRS_ERR_2</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/13/ssrs-and-excel-rendering-limitations/</feedburner:origLink></item>
		<item>
		<title>SSIS – Data Flow Transformations</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/uKC6Vy74QbE/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/13/ssis-data-flow-transformations/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 15:12:04 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2391</guid>
		<description><![CDATA[We have written before about different aspects of SQL Server Integration Services &#8211; you can read more on those blog posts here.   Until our previous articles we have been looking at mainly the Control Flow Tasks in the Sql Server Integration Services. Control Flow Tasks maintain the Flow of the logic in the SSIS. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2391&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We have written before about different aspects of SQL Server Integration Services &#8211; you can read more on those blog posts <a href="http://decipherinfosys.wordpress.com/?s=%22Integration+Services%22">here</a>.   Until our previous articles we have been looking at mainly the Control Flow Tasks in the Sql Server Integration Services. Control Flow Tasks maintain the Flow of the logic in the SSIS. The main transformation logic in performed by the data flow task. One of the main uses of the Sql Server Integration Services (SSIS) is to perform the Extraction, Transformation, Data Cleansing and Loading (ETL or sometimes called as ETLM) of the data from various sources. As data from various sources might come in a different format, there is generally a requirement of cleaning up of the data before we load the data into our system. Data cleansing or rather transformation in Sql Server Integration Services (SSIS) is done using the Data Transformation Tasks. Today, in our post, we are going to look at a few of such SSIS Data Transformation Tasks.</p>
<p>One of the data flow transformations which is used for the data cleansing purposes is called the  Lookup Transform. We are going to explore the Lookup Transform in Sql Server 2005. There have been some enhancements in SQL Server 2008 which we are going to look into in future posts. The look up transform is very similar to that of the lookup tab in the data pump task in SQL Server 2000 DTS. This task is used to derive new columns based on the existing set of columns. This transform performs look up on an existing table based on the columns which are existing in the dataflow (incoming source). Let us explore more into this transform with the help of an example.</p>
<p>We will pick up a business use case scenario which is very common and we have faced it as well in our projects.  Let us consider a business scenario where we are getting an inbound file from a client and the file contains the health application records created on that particular day. Furthermore the file contains the City and the State Code but not the zip code. Our task is to look up the zip code by using the City and State Code Columns and populate our destination table. If the look up fails, then, we need to insert a -1 in the destination table.</p>
<p>For that we should have an already existing table in the database which stores the state code, city and the zip code. The following code block creates the table and populates it with the required data.<br />
<code><br />
IF EXISTS(SELECT 1 FROM SYS.TABLES WHERE NAME ='lkpZipCode')<br />
DROP TABLE lkpZipCode<br />
GO<br />
CREATE TABLE lkpZipCode<br />
(<br />
ZipCodeID INT IDENTITY(1,1) PRIMARY KEY<br />
, CityCode VARCHAR(20)<br />
, StateCode CHAR(2)<br />
, ZipCode VARCHAR(20)<br />
)</code></p>
<p>/*Using SQL Server 2008 functionality to do the inserts in one single statement*/</p>
<p>INSERT INTO lkpZipCode (CityCode, StateCode, ZipCode)<br />
VALUES (&#8216;Bellevue&#8217;,'WA&#8217;,98007),<br />
(&#8216;Seattle&#8217;,'WA&#8217;,98004),<br />
(&#8216;Atlanta&#8217;,'GA&#8217;,30339),<br />
(&#8216;Alpharetta&#8217;,'GA&#8217;,30005),<br />
(&#8216;Irvington&#8217;,'AL&#8217;,36544),<br />
(&#8216;Jacksonville&#8217;,'FL&#8217;,36265),<br />
(&#8216;Austin&#8217;,'TX&#8217;,73301),<br />
(&#8216;Houston&#8217;,'TX&#8217;,77001)<br />
GO</p>
<p>Let us now create a table to hold the incoming values. The following piece of code creates the destination table.<br />
<code><br />
IF EXISTS(SELECT 1 FROM SYS.TABLES WHERE NAME ='Customers')<br />
DROP TABLE Customers<br />
GO</code></p>
<p>CREATE TABLE dbo.Customers<br />
(<br />
CustomerID     INT IDENTITY(1,1) PRIMARY KEY<br />
, CustomerFirstName Varchar(20) NOT NULL<br />
, CustomerLastName  Varchar(20) NOT NULL<br />
, City        Varchar(20)   NOT NULL<br />
, [State]        Varchar(2)   NOT NULL<br />
, ZipCode        Varchar(20)          NOT NULL<br />
)</p>
<p>Create a text file (Customers.txt) and populate it with some sample data.</p>
<p>Open up the Business Intelligence Development Studio (BIDS) and create a new SSIS project.   If you are new to SSIS, we would recommended to read our previous articles about creating and running the SSIS Packages using BIDS.</p>
<p><strong>Package Creation</strong>:</p>
<p>Since we are dealing with the flow of data in this scenario, we should use the data flow tasks to transform the data according to our needs.  Drag and drop the Data Flow task from the Control Flow task onto the Control Flow Pane of the BIDS.   Double click on the Data Flow Task which takes us to the data flow pane.   Since our source is a text file, drag and drop the Flat File Source from the data flow task on to the data flow pane.   Configure the Flat File Source to use the flat file we created earlier.</p>
<p><strong>Configuration of the Lookup Transform</strong>:</p>
<p>Since we have to derive the zip code based on the State and City columns in the text file, by looking up the zip code in our look up table, we have to use the look up transform.   Drag and drop the lookup transform from the Data Flow Task on to the Data Flow pane.   Double click on the Transform to edit it.   The following image shows the Reference Table Tab of the Transform:</p>
<p><img class="aligncenter size-full wp-image-2392" title="SSIS_DFT_1" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_1.jpg?w=582&#038;h=686" alt="SSIS_DFT_1" width="582" height="686" /></p>
<p>This shows the reference table tab of the lookup transform.   In this tab, we can configure the table which we will use to look up our zip code based on the City and the State columns from the incoming file.   Click on the NEW button beside the OLEDB Connection Manager to create a connection to the database in which our table is located. Provide the server name and the database name in the relevant fields and click OK.   The image below shows the creation of the connection to the database:</p>
<p><img class="aligncenter size-full wp-image-2393" title="SSIS_DFT_2" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_2.jpg?w=517&#038;h=543" alt="SSIS_DFT_2" width="517" height="543" /></p>
<p>We can either specify a table or a sql query to generate the result set against which we will do a lookup using the City and State columns from the incoming file.   In our case we are using the table to do a look up.   If needed, we can specify a sql query by clicking on the radio button against the ‘Use Results of an Sql Query’ and specify the sql query.   For our scenario, drop down the ‘Use Table or View’ and select the table lkpZipCode.   The image shown below depicts the same:</p>
<p><img class="aligncenter size-full wp-image-2394" title="SSIS_DFT_3" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_3.jpg?w=580&#038;h=695" alt="SSIS_DFT_3" width="580" height="695" /></p>
<p>In the columns tab, we configure the columns on which we do a look up on the source columns and the destination columns.   The image below shows the configuration of columns tab in the Lookup Table:</p>
<p><img class="aligncenter size-full wp-image-2395" title="SSIS_DFT_4" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_4.jpg?w=580&#038;h=639" alt="SSIS_DFT_4" width="580" height="639" /></p>
<p>Drag the City column from the Source Available columns and drop it on the CityCode column of the destination.   Repeat the same with the State column in the source and the StateCode in the destination.   Since we are looking up the ZipCode column in the lookup table, mention the same in the Lookup Column of the editor.   Since this is a new column added to the data flow, select the ‘Add as new column’ in the lookup operation drop down.   Give the output alias as ZipCode.   This finishes the configuration of the Lookup Transformation.</p>
<p><strong>Lookup Transform Outputs</strong></p>
<p>The lookup Transform has two outputs:  Lookup Match output and the Error Output.   If the Lookup is successful then those rows are sent out to the Lookup Match output.  If the lookup fails to find any records, then those rows are sent to the Error Output.</p>
<p><strong>Derived Column Transform</strong>:</p>
<p>As per our business scenario, if the lookup fails, then we have to insert a -1 into the look up table.   For that we have to make use of the Derived Column Transform.   A Derived Column Transform derives a new column and adds it to the data flow based on either the existing columns in the data flow or based on the expressions.   Drag and drop the Derived Column Transform on to the data flow from the data flow task and double click on it to edit the properties.   The image below shows the Transformation editor:</p>
<p><img class="aligncenter size-full wp-image-2396" title="SSIS_DFT_5" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_5.jpg?w=680&#038;h=639" alt="SSIS_DFT_5" width="680" height="639" /></p>
<p>In the derived column name provide the name of the column we intend to derive. In this case, since we are intending to insert a -1 zip code if the look up fails, type the name of the derived column as ZipCode and the Expression as -1.   In the derived column, select the ‘add as new column’ since we are adding a new column to the dataflow.  Drag the error output (red) arrow and join the Derived column Transform.   This opens up the editor as shown below:</p>
<p><img class="aligncenter size-full wp-image-2397" title="SSIS_DFT_6" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_6.jpg?w=600&#038;h=558" alt="SSIS_DFT_6" width="600" height="558" /></p>
<p>Even if the lookup fails, since we should not error the rows out, select the Redirect Row option in the Error column of the Lookup Output as shown in the image above and click OK.   This will redirect the rows on which the lookup failed to the Derived Column Transform, which adds the column ZipCode with a value of -1 to the data flow for the failed lookup records.</p>
<p><strong>UNION ALL Transform</strong></p>
<p>Since we have to combine the result set of both the successful lookups and un-successful lookup, we will use the UNION ALL Transform.   Drag and drop the union all transform from the data flow task on the data flow.   Drag the green arrow (look up match) arrow from the lookup transform and connect it to one of the input of the union all transform.</p>
<p><strong>OLEDB Destination</strong></p>
<p>As a final step, we have to load the cleansed records into our destination table.   To do that drag and drop the OLEDB Destination from the Data Flow tasks on to the data flow.   Configure the data flow to insert the data set from the UNION ALL transform into the destination table.   This transform has been dealt in detail in our previous posts. The image below shows the screen shot of the entire SSIS package:</p>
<p><img class="aligncenter size-full wp-image-2398" title="SSIS_DFT_7" src="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_7.jpg?w=830&#038;h=580" alt="SSIS_DFT_7" width="830" height="580" /></p>
<p>To summarize, in this blog post, we discussed the use of SSIS to cleanse/transform the data from various sources.  We understood the importance of the lookup transform and dealt with the configuration of the lookup transform in detail.   We also explored other transforms like Derived Column Transforms and UNION ALL transform which are also very handy transforms in the data flow.   In some of the upcoming posts, we will look at some of the enhancements in SQL Server 2008 and will also cover other business use case scenarios.</p>
<p><strong>Resources</strong>:</p>
<ul>
<li>Lookup Transform &#8211; MSDN article &#8211; <a href="http://technet.microsoft.com/en-us/library/ms141821.aspx">here</a>.</li>
<li>MVP Stacia Misner&#8217;s post on Lookup Transform and Caching &#8211; <a href="http://www.sqlskills.com/BLOGS/STACIA/post/SQL-Server-2008-Lookup-Transformation-and-Caching.aspx">here</a>.</li>
<li>MVP Jorg Klein&#8217;s post on the case sensitive nature of the lookup transform &#8211; <a href="http://sqlblogcasts.com/blogs/jorg/archive/2008/02/12/SSIS-_1320_-Lookup-Transformation-is-case-sensitive.aspx">here</a>.</li>
<li>Arshad&#8217;s article on sqlserverperformance.com &#8211; it discusses the SSIS enhancements in SQL Server 2008 and has a series of posts on the topic &#8211; <a href="http://www.sql-server-performance.com/articles/Arshad_Ali.aspx">here</a>.</li>
<li>Brian Knight&#8217;s books on SSIS &#8211; these are the best resource for anyone new or experienced in SSIS.  There are other authors as well &#8211; too many books &amp; authors to list here &#8211; you can see all of them from this link at amazon &#8211; <a href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Daps&amp;field-keywords=SSIS+Brian+Knight&amp;x=0&amp;y=0">here</a>.</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2391/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2391&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/13/ssis-data-flow-transformations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_1.jpg" medium="image">
			<media:title type="html">SSIS_DFT_1</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_2.jpg" medium="image">
			<media:title type="html">SSIS_DFT_2</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_3.jpg" medium="image">
			<media:title type="html">SSIS_DFT_3</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_4.jpg" medium="image">
			<media:title type="html">SSIS_DFT_4</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_5.jpg" medium="image">
			<media:title type="html">SSIS_DFT_5</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_6.jpg" medium="image">
			<media:title type="html">SSIS_DFT_6</media:title>
		</media:content>

		<media:content url="http://decipherinfosys.files.wordpress.com/2009/10/ssis_dft_7.jpg" medium="image">
			<media:title type="html">SSIS_DFT_7</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/13/ssis-data-flow-transformations/</feedburner:origLink></item>
		<item>
		<title>Using schema.ini when reading a text file with openrowset()</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/JcyNsWQpVLI/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/06/using-schema-ini-when-reading-a-text-file-with-openrowset/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 13:44:41 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2387</guid>
		<description><![CDATA[At a client site, their existing code was using openrowset() to read and upload the text files (this process was later on changed to use a SSIS package to have a more robust process).  And a couple of days back, that nightly process failed because the demiliter was present as part of the column string [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2387&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>At a client site, their existing code was using openrowset() to read and upload the text files (this process was later on changed to use a SSIS package to have a more robust process).  And a couple of days back, that nightly process failed because the demiliter was present as part of the column string itself.   The problem was that as part of the openrowset() command, there was no way to specify the delimiter and it relied on the default delimiters.  Here is a sample of how the command looked like:<br />
<code><br />
declare @file varchar(100), @cmd varchar(1000)<br />
select @file = 'dataupload_' + convert(varchar(10), getdate(), 112) + '.txt' </code><br />
<code> select @cmd =<br />
'select * from OpenRowset(''MSDASQL'',''Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=Z:\Inbound_Feed;'',''select * from '+@file+''') as X'<br />
print @cmd</code></p>
<p>The output was:<br />
<code><br />
select * from OpenRowset('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir=Z:\Inbound_Feed;','select * from dataupload_20091006.txt') as X</code></p>
<p>In order to be able to specify a delimiter when reading a text file like this, one needs to take the following steps:</p>
<p>1) Create a file called Schema.ini file.  You can read more about the contents of this file from this msdn post &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx">here</a>.</p>
<p>For our purposes, this file needed to have these enteries:</p>
<p>[dataupload_20091006.txt]<br />
ColNameHeader=True<br />
Format=Delimited(|)</p>
<p>The first entry is the name of the file, the second specifies that the first row has column names and the third entry specifies the custom delimiter.</p>
<p>2) This file needs to be placed in the same folder where the text file is going to be read from.</p>
<p>Once you do that, the upload will go through fine.  As you can see from above, it is a cumbersome process (can be automated through scripts though) and that is why we converted this into a SSIS package with all the bells and whistles and it works like a charm. But wanted to put it out there in case our readers face this issue.</p>
<p><strong>Resources</strong>:</p>
<ul>
<li>Schema.ini documentation &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx">here</a>.</li>
<li>Openrowset() documentation &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms190312.aspx">here</a>.</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2387&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/06/using-schema-ini-when-reading-a-text-file-with-openrowset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/06/using-schema-ini-when-reading-a-text-file-with-openrowset/</feedburner:origLink></item>
		<item>
		<title>Extracting large XML data using bcp</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/Df1uFTXdYg4/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/10/04/extracting-large-xml-data-using-bcp/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 16:04:12 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2385</guid>
		<description><![CDATA[Ran into an issue today at the client site.  There was a stored procedure in the outbound interface of the client application which was responsible for collecting event based data, convert it into an XML and then the SSIS package would take that XML document, encrypt it using pgp encryption and upload it to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2385&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ran into an issue today at the client site.  There was a stored procedure in the outbound interface of the client application which was responsible for collecting event based data, convert it into an XML and then the SSIS package would take that XML document, encrypt it using pgp encryption and upload it to the client&#8217;s partner companies.  Everything was working like a charm for the past couple of months till last night, out of memory exceptions started coming.</p>
<p>The reason was that the XML that was generated was close to 200MB that night &#8211; this was because of a large amount of event activity in the system which resulted into a generation of a very large XML.  When the SSIS package was trying to get that data out to encrypt it, it started running into the out of memory exceptions.  The fix that we made was pretty straight forward.  We used bcp to extract out the large XML document.  Here are the steps:</p>
<p><strong>1) </strong>First, generate the format file.  A very simple way of doing this is to let the bcp command do it for you.  Here is a sample example:</p>
<p><span style="color:#808000;">bcp deciphertest.dbo.large_xml_tbl format nul -T -c -x -f &#8220;D:\format_files\large_xml_tbl.xml&#8221;</span></p>
<p>This command takes the table large_xml_tbl from the deciphertest database andd dumps the format file &#8220;large_xml_tbl.xml&#8221; on the D:\format_files folder.  This is just to illustrate the usage.  In real life, one would be using a query to extract the XML document out rather than the table itself.</p>
<p><strong>2)</strong> Once the format file has been generated, you can then use the bcp command to extract out the large XML:</p>
<p><span style="color:#808000;">bcp deciphertest.dbo.large_xml_tbl out &#8220;D:\XML_Data\large_xml_tbl_1004090815.xml&#8221; -SDISprod -T -f &#8220;D:\format_files\Test.xml&#8221;</span></p>
<p>This took about 4-5 seconds for the 200MB file.  The encryption was done then and file was uploaded using the regular process.</p>
<p><strong>Resources</strong>:</p>
<ul>
<li>BCP XML format files post on mssqltips &#8211; <a href="http://www.mssqltips.com/tip.asp?tip=1060">here</a>.</li>
<li>BCP documentation on MSDN &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx">here</a>.</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2385/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2385&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/10/04/extracting-large-xml-data-using-bcp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/10/04/extracting-large-xml-data-using-bcp/</feedburner:origLink></item>
		<item>
		<title>NMON (Nigel’s monitor) Analyzer for AIX</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/GmM3q9H7jqI/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/08/06/nmon-nigel%e2%80%99s-monitor-analyzer-for-aix/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 00:18:55 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2383</guid>
		<description><![CDATA[Nmon is a free tool available for both AIX and Linux to monitor the performance of the AIX and Linux servers in terms of I/O, CPU Usage, top processes etc. It is bundled with AIX and is available free for Linux. It is widely used by AIX system administrators and performance tuning specialists.
Nmon has very [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2383&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Nmon is a free tool available for both AIX and Linux to monitor the performance of the AIX and Linux servers in terms of I/O, CPU Usage, top processes etc. It is bundled with AIX and is available free for Linux. It is widely used by AIX system administrators and performance tuning specialists.</p>
<p>Nmon has very small footprint when in use but it captures very useful information.  Normally it is located under /usr/local/bin directory.</p>
<p>┌─nmon────────U=Top-with-WLM─────Host=xxxxx────────Refresh=1 secs───18:00.26─┐<br />
│ CPU-Utilisation-Small-View ──────────────────────────────────────────────────│<br />
│                           0&#8212;&#8212;&#8212;-25&#8212;&#8212;&#8212;&#8211;50&#8212;&#8212;&#8212;-75&#8212;&#8212;&#8212;-100│<br />
│CPU User%  Sys% Wait% Idle%|           |            |           |            |│<br />
│  0   0.0   0.0   0.0 100.0|        &gt;                                        |│<br />
│  1   0.0   0.0   0.0 100.0|&gt;                                                |│<br />
│  2   4.0   1.0   0.0  95.0|U         &gt;                                      |│<br />
│  3   0.0   0.0   0.0 100.0|     &gt;                                           |│<br />
│  4   4.0   1.0   0.0  95.0|U         &gt;                                      |│<br />
│  5   0.0   0.0   0.0 100.0|&gt;                                                |│<br />
│Physical Averages          +&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;+│<br />
│All   1.8   0.6   0.0  97.7|&gt;                                                |│<br />
│                           +&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;+│</p>
<p>Above is small fragmented screen shot of nmon at work. It can be scheduled as cronjob and output can be sent to file as well for later diagnostics.</p>
<p>With this brief introduction of nmon, we will talk about nmon analyzer, which is the topic of the blog. Again this is free tool available by IBM, which consolidates data from nmon output and represent it in a very user friendly graphs and charts. Basically it takes output files generated by nmon tool as an input and churns out various graphs/charts in a excel format which one can print, mail or even publish on the web.</p>
<p>There is only one caveat. IBM does not support the tool officially so one cannot seek any help from IBM. <a href="http://www-941.haw.ibm.com/collaboration/wiki/display/Wikiptype/nmonanalyser">Here</a> is the link from which it can be downloaded for free. The tool will be downloaded as a zip file that contains excel file, sample input file and user documentation.</p>
<p><strong>Resources</strong>:</p>
<ul>
<li>Wikipedia entry &#8211; <a href="http://en.wikipedia.org/wiki/Nmon">here</a>.</li>
<li>Article &#8211; <a href="http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmon">here</a>.</li>
<li>Article &#8211; <a href="http://www.ibm.com/developerworks/aix/library/au-nmon_analyser/">here</a>.</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2383/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2383/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2383/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2383&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/08/06/nmon-nigel%e2%80%99s-monitor-analyzer-for-aix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/08/06/nmon-nigel%e2%80%99s-monitor-analyzer-for-aix/</feedburner:origLink></item>
		<item>
		<title>VMWare DRS (Distributed Resource Scheduler)</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/72QKRufxpHA/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/07/31/vmware-drs-distributed-resource-scheduler/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:17:30 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2380</guid>
		<description><![CDATA[Distributed Resource Scheduler or DRS is an add-on feature of VI 3 infrastructure that is managed by Virtual Center. DRS allow balancing the CPU and memory resources of the virtual machines or VMs and the other ESX servers in the cluster.
DRS helps to balance the CPU and memory of its cluster members based on the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2380&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Distributed Resource Scheduler or DRS is an add-on feature of VI 3 infrastructure that is managed by Virtual Center. DRS allow balancing the CPU and memory resources of the virtual machines or VMs and the other ESX servers in the cluster.</p>
<p>DRS helps to balance the CPU and memory of its cluster members based on the configured resource pool policies such as shares, reservations and limits. The hosts and VMs are continuously monitored by the virtual center. Based on the configuration, if there is any imbalance of resources, the VMs are moved across the hosts in the DRS cluster.</p>
<p>The placement of VMs across the cluster can be configured based on:</p>
<ol>
<li><strong>Affinity and anti-affinity rules</strong> – Rules that define which VMs can run together (affinity) and cannot run together(anti-affinity) in any given host. A perfect example for anti-affinity would be placement of a SQL server and Exchange server. At any point of time, you don’t want to place both the servers in the same host.</li>
<li><strong>VMotion compatibility</strong> – VMotion has it’s own set of requirements to move the VMs across the hosts. For example, if a VM that has a local network (not connected to any physical adapter) cannot be moved using VMotion.</li>
</ol>
<p>Based on the environment and needs DRS automation can be set to the following levels:</p>
<ol>
<li><strong>Manual</strong> – DRS only provides recommendation on placing the VMs. Manual action is required to place them on recommended hosts</li>
<li><strong>Partially automated </strong>– During VM power-on, they will be placed on the DRS recommended hosts. VM migrations caused by resource imbalance will be recommended by DRS but won’t be moved automatically</li>
<li><strong>Fully automated</strong> – DRS automatically places the VM during power-on also during resource imbalance on the DRS recommended hosts. The migration threshold level can also be set with this level between conservative and aggressive using a slide bar.</li>
</ol>
<p>Few factors to consider about DRS:</p>
<ul>
<li>There can be up to 32 hosts per DRS cluster.</li>
<li>It’s recommended to use combination of DRS automation levels based on the critical nature of VMs. To accomplish this, the cluster level DRS automation can be overridden by the VM level automation setting.</li>
<li>In the manual and partial automation level, it is important to pay attention to the number of stars on the recommendation. A 5-star recommendation should always be considered and applied.</li>
<li>Swap file location for the VMs is configurable in the DRS cluster and it is recommended to keep the swap file in the same directory in the VMFS datastore for performance reasons. Choosing to keep the swap file of the VM in the datastore based on the host setting will result in a poor VMotion performance during a resource imbalance.</li>
</ul>
<p><strong>Resources</strong>:</p>
<p>More details about DRS cluster can be found here:</p>
<p><a href="http://www.vmware.com/pdf/vmware_drs_wp.pdf">http://www.vmware.com/pdf/vmware_drs_wp.pdf</a></p>
<p><a href="http://pubs.vmware.com/vi301/resmgmt/wwhelp/wwhimpl/common/html/wwhelp.htm?context=resmgmt&amp;file=vc_cluster_concepts.6.6.html">http://pubs.vmware.com/vi301/resmgmt/wwhelp/wwhimpl/common/html/wwhelp.htm?context=resmgmt&amp;file=vc_cluster_concepts.6.6.html</a></p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:473px;width:1px;height:1px;"><!--[if gte mso 9]&gt;  Normal 0   false false false        MicrosoftInternetExplorer4  &lt;![endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:Calibri; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:Arial;} a:link, span.MsoHyperlink 	{color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{color:purple; 	text-decoration:underline; 	text-underline:single;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]&gt; &lt;!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:&quot;Table Normal&quot;; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:&quot;&quot;; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:&quot;Times New Roman&quot;; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} --> <!--[endif]--></p>
<p class="MsoNormal" style="text-align:justify;">More details about DRS cluster can be found here:</p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;"><cite><span style="font-family:Arial;color:black;"><a href="http://www.vmware.com/pdf/vmware_drs_wp.pdf"><span style="font-style:normal;">www.vmware.com/pdf/vmware_</span><strong><span style="font-style:normal;">drs</span></strong><span style="font-style:normal;">_wp.pdf</span></a></span></cite></p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;"><a href="http://pubs.vmware.com/vi301/resmgmt/wwhelp/wwhimpl/common/html/wwhelp.htm?context=resmgmt&amp;file=vc_cluster_concepts.6.6.html">http://pubs.vmware.com/vi301/resmgmt/wwhelp/wwhimpl/common/html/wwhelp.htm?context=resmgmt&amp;file=vc_cluster_concepts.6.6.html</a></p>
<p class="MsoNormal" style="text-align:justify;">
<p class="MsoNormal" style="text-align:justify;">
</div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2380/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2380&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/07/31/vmware-drs-distributed-resource-scheduler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/07/31/vmware-drs-distributed-resource-scheduler/</feedburner:origLink></item>
		<item>
		<title>Creating an adhoc ASH (Active session history) report using timeframe</title>
		<link>http://feedproxy.google.com/~r/SystemsEngineeringAndRdbms/~3/mZbV6FwiTJ4/</link>
		<comments>http://decipherinfosys.wordpress.com/2009/07/31/creating-an-adhoc-ash-active-session-history-report-using-timeframe/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 02:03:54 +0000</pubDate>
		<dc:creator>decipherinfosys</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://decipherinfosys.wordpress.com/?p=2377</guid>
		<description><![CDATA[In one of our previous blog post, we demonstrated that how can we generate adhoc awr report based on the given range of snap_id.  As we are aware that default timeframe for collecting snapshot data is every hour and data is retained up to 7 days. Now let us assume that snapshot is taken every [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2377&subd=decipherinfosys&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In one of our previous blog post, we demonstrated that how can we generate adhoc awr report based on the given range of snap_id.  As we are aware that default timeframe for collecting snapshot data is every hour and data is retained up to 7 days. Now let us assume that snapshot is taken every hour but we want some statistics within one hour period let’s say between 1:15 PM and 1:30 PM or between 2:17 PM to 2:48 PM etc. How can we generate report for such time frame? Again we can resort back to DBMS_WORKLOAD_REPOSITORY package. This package has quite a few procedures, which can help us out to troubleshoot the problem. Keep in mind that Oracle always recommends using awrrpt.sql and ashrpt.sql to generate the AWR or ASH reports. In this blog post, we will see once again how we can get the data for specific time range using ASH_REPORT_TEXT procedure.</p>
<p>ASH data is sampled every second and whenever AWR snapshot is flushed to the disk, content from v$active_session_history is also flushed to the disk. It system during that time is heavily utilized, then only sample data will be flushed to the disk.  Historical data is stored in another view called DBA_HIST_ACTIVE_SESS_HISTORY. Now let us get the data:<br />
<code><br />
select dbid,instance_number ino,begin_interval_time,end_interval_time<br />
from dba_hist_snapshot<br />
order by begin_interval_time desc</code></p>
<p>DBID        INO    BEGIN_INTERVAL_TIME        END_INTERVAL_TIME</p>
<p>2234839021    1    7/29/2009 5:00:46.793 PM    7/29/2009 5:30:37.953 PM<br />
2234839021    1    7/29/2009 4:30:55.638 PM    7/29/2009 5:00:46.793 PM<br />
2234839021    1    7/29/2009 4:00:01.491 PM    7/29/2009 4:30:55.638 PM<br />
2234839021    1    7/29/2009 3:30:10.348 PM    7/29/2009 4:00:01.491 PM</p>
<p>Now, we know the value of dbid, instance_number and interval start time and interval end time. We can take this time as is and run report for the time range or we can run report for in between time range as well. In this case, we will run report for in between time range. But before that here is the signature of the procedure.</p>
<p>DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT(<br />
l_dbid          IN NUMBER,<br />
l_inst_num      IN NUMBER,<br />
l_btime         IN DATE,<br />
l_etime         IN DATE,<br />
l_options       IN NUMBER    DEFAULT 0,<br />
l_slot_width    IN NUMBER    DEFAULT 0,<br />
l_sid           IN NUMBER    DEFAULT NULL,<br />
l_sql_id        IN VARCHAR2  DEFAULT NULL,<br />
l_wait_class    IN VARCHAR2  DEFAULT NULL,<br />
l_service_hash  IN NUMBER    DEFAULT NULL,<br />
l_module        IN VARCHAR2  DEFAULT NULL,<br />
l_action        IN VARCHAR2  DEFAULT NULL,<br />
l_client_id     IN VARCHAR2  DEFAULT NULL)<br />
RETURN awrrpt_text_type_table PIPELINED;</p>
<p>We already know the value for l_Dbid, l_instnum, l_btime and l_etime from the first sql. For rest of the parameters we will go with the default values. Here is the sql to run for a specific time range.<br />
<code><br />
SELECT output<br />
FROM<br />
TABLE(dbms_workload_repository.ash_report_text<br />
(2234839021,1,<br />
to_Date('07/29/2009 16:10','MM/DD/YYYY HH24:MI'),<br />
to_date('07/29/2009 16:25','MM/DD/YYYY HH24:MI'))<br />
);<br />
</code><br />
We can spool the output to the file from above sql and open it up as a text file to investigate the results. Here is the sample that confirms that report is generated for a specified time frame.</p>
<p>OUTPUT</p>
<p>Analysis Begin Time:   29-Jul-09 16:10:00<br />
Analysis End Time:   29-Jul-09 16:25:00<br />
Elapsed Time:        15.0 (mins)<br />
Sample Count:         527<br />
Average Active Sessions:        0.59<br />
Avg. Active Session per CPU:        0.05<br />
Report Target:   None specified</p>
<p>As mentioned earlier, policy to collect AWR data varies from company to company as each company has its own set of standards to follow.</p>
<p><strong>Resources</strong>:</p>
<ul>
<li>Oracle-base article &#8211; <a href="http://www.oracle-base.com/articles/10g/AutomaticWorkloadRepository10g.php">here</a>.</li>
<li>Oracle 10g Performance Tuning guide &#8211; <a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/toc.htm">here</a>.</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/decipherinfosys.wordpress.com/2377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/decipherinfosys.wordpress.com/2377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/decipherinfosys.wordpress.com/2377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/decipherinfosys.wordpress.com/2377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/decipherinfosys.wordpress.com/2377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/decipherinfosys.wordpress.com/2377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/decipherinfosys.wordpress.com/2377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/decipherinfosys.wordpress.com/2377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/decipherinfosys.wordpress.com/2377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/decipherinfosys.wordpress.com/2377/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=decipherinfosys.wordpress.com&blog=691282&post=2377&subd=decipherinfosys&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://decipherinfosys.wordpress.com/2009/07/31/creating-an-adhoc-ash-active-session-history-report-using-timeframe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0409e90c82255ecb867b436a97e4f779?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">decipherinfosys</media:title>
		</media:content>
	<feedburner:origLink>http://decipherinfosys.wordpress.com/2009/07/31/creating-an-adhoc-ash-active-session-history-report-using-timeframe/</feedburner:origLink></item>
	</channel>
</rss>
