<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12142612</id><updated>2012-01-25T14:00:56.971Z</updated><category term='Analysis Services'/><category term='Virtualisation'/><category term='Games'/><category term='SQL Server 2008'/><category term='Music'/><category term='BI'/><category term='SQL Server'/><category term='PPS'/><category term='Misc'/><category term='Boredom'/><category term='SSIS'/><category term='Reporting Services'/><category term='Azure'/><title type='text'>Thoughts of a Freelance Dolphin Trainer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default?start-index=101&amp;max-results=100'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>128</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12142612.post-2376032985926112569</id><published>2009-11-02T12:37:00.001Z</published><updated>2009-11-02T12:37:08.504Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Azure – It’s Not Big and it’s Not Clever</title><content type='html'>&lt;p&gt;I’ve played with Azure and yes it does what it’s supposed to but coming from a business intelligence background I’m struggling to see what kind of advantage my area of focus will gain. I would love to see huge databases accessible in the cloud attached to huge cubes that use huge ROLAP partitions to run huge queries but until that time comes along I’m going to sit on a huge fence, watch and wait.&lt;/p&gt; &lt;p&gt;One project I’m working on has dimensions with over 50 million members in. Due to the business and the way it works a Process Update has to be performed every night. Lots of attribute hierarchies and lots of members means lots of time taken to complete. Throwing more hardware at it makes this faster but &lt;/p&gt; &lt;p&gt;what happens when the cost of the infrastructure exceeds the value they receive from their analysis. This client will look at how they can reduce costs elsewhere whether it be licensing (open source perhaps) or the platform (Amazon EC2 perhaps) neither of which are going to help Microsoft.&lt;/p&gt; &lt;p&gt;When I first saw that the Azure platform was changing from it’s early form into what I considered a natural progression of the SQL Server platform from Express to Enterprise to Azure I was pretty positive. This coupled with Analysis Services could mean smaller companies that produce a lot of data could get top class analytics without having to break the bank with massive hardware expense. But I haven’t seen anything that makes me feel confident that this will happen. Perhaps the Azure OLAP platform will be huge 128bit version of Excel with PowerPivot (don’t get me started) who knows, someone should at least.&lt;/p&gt; &lt;p&gt;Azure, PowerPivot, Reporting Services, Performance Point, ProClarity, MDM. In my opinion all of these things should be part of a single cohesive strategy to allow users to access data in a simple way whilst ensuring organisations can maintain a level of data governance and I’m just not seeing it. Why do I have to still tell a client that they need to use this tool because that’s the one you can change the line colours in but you’ll need to use the other tool for pie charts and oh you want it integrated into your Portal then you’ll need this one instead. It’s scatter gun, not particularly professional and very worrying. &lt;/p&gt; &lt;p&gt;I’m seeing this from a very focused view but from my experience a real world view and I just can’t see Azure fitting in to it at the moment. I would love to have my mind changed so please do.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4c6aeff1-f20d-4008-b3ef-2394f72514c0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Azure" rel="tag"&gt;Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Business+Intelligence" rel="tag"&gt;Business Intelligence&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2376032985926112569?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2376032985926112569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2376032985926112569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2376032985926112569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2376032985926112569'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/11/azure-its-not-big-and-its-not-clever.html' title='Azure – It’s Not Big and it’s Not Clever'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-955470921014477564</id><published>2009-07-30T09:50:00.000+01:00</published><updated>2009-07-30T10:14:47.481+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boredom'/><title type='text'>The Grand Microsoft Crossover</title><content type='html'>&lt;p&gt;The rumour on the grapevine is that Microsoft are preparing an all out offensive on rivals Google, Apple and Sony by drawing upon their expertise in the various groups around the Redmond giant.&lt;br&gt;With the positive reception gained by Project Natal at E3 earlier this year and the planned release of Windows 7 and Office 2010 over the next 18 months, Microsoft are embarking on a strategy that they hope will smite their competition.&lt;/p&gt; &lt;p&gt;Codenamed "Project Flap" Microsoft will make the Natal hardware the de-facto method for interfacing with all of their other offerings. Users will be able to use Natal to retrieve lost Word documents by either jumping up and down furiously in front of their screen or by using specially adapted four letter keywords. "This will revolutionise how people will work in the next decade" a Microsoft source close to Project Flap is quoted as saying. But it's benefits don't stop at improved interaction with the next generation of software "our research has demonstrated that looking like a complete tool in the workplace has an impact on how people are perceived". When pressed on whether this impact would be negative the source responded, "at this time we can't comment on the details of the research".&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_C8feMND9TeA/SnFkLyBYXFI/AAAAAAAAAJw/TYeQs_Dtreo/s1600-h/project-natal%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="project-natal" border="0" alt="project-natal" src="http://lh6.ggpht.com/_C8feMND9TeA/SnFkMXBj8kI/AAAAAAAAAJ0/SbPBGIkCeMQ/project-natal_thumb%5B1%5D.jpg?imgmax=800" width="442" height="260"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Before everyone pins their hopes on every office looking like a rehearsal room for Britain's Got Talent, Microsoft's rivals are sure to respond. Google is rumoured to be looking at a free camera add on for Google Docs that will work in a similar way to Natal. The major difference being that users will have to stand facing away from the screen as adverts are projected on to their backs.&lt;br&gt;Sony also has plans in this space. They will introduce a new PS3 / Vaio office application that will provide users with a cut down feature set that will only work with Sony's proprietary SAD (Sony Augmented Document) format. Whatever Apple will do will of course be White and expensive. &lt;/p&gt; &lt;p&gt;So as Microsoft's rivals prepare to return fire and stick 2 fingers up at Natal they had better take care, flicking the "V" is the new command in Windows 7 for formatting your C drive..!&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:24905dbc-eca4-4d08-8565-1088cfea3270" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Bored" rel="tag"&gt;Bored&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Natal" rel="tag"&gt;Natal&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Office+2010" rel="tag"&gt;Office 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+7" rel="tag"&gt;Windows 7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Defective+Train" rel="tag"&gt;Defective Train&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-955470921014477564?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/955470921014477564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=955470921014477564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/955470921014477564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/955470921014477564'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/07/grand-microsoft-crossover.html' title='The Grand Microsoft Crossover'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/SnFkMXBj8kI/AAAAAAAAAJ0/SbPBGIkCeMQ/s72-c/project-natal_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5537411905395046753</id><published>2009-07-28T17:13:00.001+01:00</published><updated>2009-07-28T17:13:20.530+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>Over The Last Several Weeks I Have Been Mostly Listening To…</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/Sm8jl1yccqI/AAAAAAAAAJY/jF-0hU8EQXo/s1600-h/littlebootshands212.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="untitled" border="0" alt="untitled" src="http://lh4.ggpht.com/_C8feMND9TeA/Sm8jmaIfhTI/AAAAAAAAAJc/Fi_8Vf7exfE/littlebootshands21_thumb.jpg?imgmax=800" width="244" height="244"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Hands – Little Boots &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/Sm8jmrTREqI/AAAAAAAAAJg/W3FNfBPtlzg/s1600-h/laroux12.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="laroux[1]" border="0" alt="laroux[1]" src="http://lh6.ggpht.com/_C8feMND9TeA/Sm8jnN7KW6I/AAAAAAAAAJk/wDsOkLt5DXs/laroux1_thumb.jpg?imgmax=800" width="244" height="244"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;La Roux – La Roux&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/Sm8jncSzb2I/AAAAAAAAAJo/v7m1scSlVyI/s1600-h/florence_and_the_machine12.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="florence_and_the_machine[1]" border="0" alt="florence_and_the_machine[1]" src="http://lh3.ggpht.com/_C8feMND9TeA/Sm8jn16cOSI/AAAAAAAAAJs/UKcKibeYMcw/florence_and_the_machine1_thumb.jpg?imgmax=800" width="244" height="244"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Lungs – Florence + the Machine&lt;/p&gt; &lt;p&gt;&lt;a href="http://open.spotify.com/user/oneleguk/playlist/4PySAyVm1Xr8ICEvWTPvj7" target="_blank"&gt;Spotify Playlist&lt;/a&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9ce827f0-d015-4687-8cb5-9166251bcc08" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Little+Boots" rel="tag"&gt;Little Boots&lt;/a&gt;,&lt;a href="http://technorati.com/tags/La+Roux" rel="tag"&gt;La Roux&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Florence+and+the+Machine" rel="tag"&gt;Florence and the Machine&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Florence+%2b+the+Machine" rel="tag"&gt;Florence + the Machine&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5537411905395046753?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5537411905395046753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5537411905395046753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5537411905395046753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5537411905395046753'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/07/over-last-several-weeks-i-have-been.html' title='Over The Last Several Weeks I Have Been Mostly Listening To…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_C8feMND9TeA/Sm8jmaIfhTI/AAAAAAAAAJc/Fi_8Vf7exfE/s72-c/littlebootshands21_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-9066390459286958798</id><published>2009-07-28T16:57:00.001+01:00</published><updated>2009-07-29T10:12:17.131+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><title type='text'>A Little Something About PPS Filters (part 3)</title><content type='html'>&lt;div id="codeSnippetWrapper"&gt;It’s been a while since I started on this topic so hopefully I’ll remember what I was attempting to say.&lt;/div&gt; &lt;p&gt;For a particular client we have had issues with a multi level dimension hierarchy that contains several thousand members. As I’ve said before and numerous people have experienced PPS filter performance is not great (word on the grapevine is though this is no longer an issue in v2). For various reasons, creating multiple dashboards to satisfy different users and restricting the users using OLAP security weren’t options so we came up with a “third way”.&lt;/p&gt; &lt;p&gt;The third way was to provide the users with the ability to change their preferences and alter what they could see in the report hierarchy. First we needed to provide the users with a screen where they could make their selections. This was as simple as providing a PPS dashboard page that contained a filter and a report that used the filter.&lt;/p&gt; &lt;p&gt;The filter is based off of tabular data as explained in the &lt;a href="http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part_04.html"&gt;last &lt;/a&gt;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4f9c3054-0b45-4a8a-9194-9e81dcf21528" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PerformancePoint" rel="tag"&gt;PerformancePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PPS" rel="tag"&gt;PPS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Filters" rel="tag"&gt;Filters&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Analysis+Services" rel="tag"&gt;Analysis Services&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;a href="http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part_04.html"&gt;post&lt;/a&gt;. The data itself is a parent child data set generated from the dimension that I want to restrict turning my source table of the dimension from something that looks like this;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_C8feMND9TeA/Sm8f1L5piEI/AAAAAAAAAIA/3O-OPak3V7c/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_C8feMND9TeA/Sm8f1f_R6NI/AAAAAAAAAIE/CSVOO07s0cg/image_thumb11.png?imgmax=800" width="447" height="136"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;To something that looks like like this;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/Sm8f1ouWr2I/AAAAAAAAAII/i-VN5yO-S8E/s1600-h/image7%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_C8feMND9TeA/Sm8f2NPtCHI/AAAAAAAAAIM/vgS9Af9nKMo/image_thumb3.png?imgmax=800" width="286" height="218"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;There are reasons I’ve done things like place a letter a the beginning of each of the ID’s. First it ensures that every member has a different ID and secondly it identifies the level of the original hierarchy the member is from without having to write queries to work out this out.&lt;/p&gt; &lt;p&gt;This has been placed into a view which is just a series of select statements from each level of the hierarchy with unions between. With that source view a tabular filter can be built and put into a dashboard page. At the top of the view though I’ve put a statement in for the “All” member. Remember this isn’t Analysis Services so there’s no dimension and no “All” member.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/Sm8f2bOevNI/AAAAAAAAAIQ/1TvcPxkKZWo/s1600-h/image111.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_C8feMND9TeA/Sm8f3Jf1YWI/AAAAAAAAAIU/2Tk-A7GHgL0/image_thumb5.png?imgmax=800" width="416" height="238"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Again referencing back to the &lt;a href="http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part_04.html"&gt;previous post&lt;/a&gt; on this, for the filter value to be retained in the ParameterValues table you will need to associate it with a report. A simple reporting services report will do and my preference is to provide the user with some feedback on the selections they’ve made. If they have selected the “All” member then they get a list of all of the locations otherwise only the members that have been selected.&lt;/p&gt; &lt;p&gt;The reporting services input parameter is from the filter passed into some SQL that in this case looks like this;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff"&gt;EXISTS&lt;/span&gt; (&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; 1&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; vwDimTown&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; &lt;span style="color: #006080"&gt;'ALL'&lt;/span&gt; &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; (@Location)) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;DISTINCT&lt;/span&gt; CountryDesc, RegionDesc&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; vwDimTown&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;ELSE&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;DISTINCT&lt;/span&gt; CountryDesc, RegionDesc&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; vwDimTown&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; &lt;span style="color: #006080"&gt;'D'&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;CAST&lt;/span&gt;(CountyID &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(5))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; (@Location)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;OR&lt;/span&gt; &lt;span style="color: #006080"&gt;'C'&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;CAST&lt;/span&gt;(RegionID &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(5))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; (@Location)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;OR&lt;/span&gt; &lt;span style="color: #006080"&gt;'B'&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;CAST&lt;/span&gt;(CountryID &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(5))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; (@Location)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;With the reporting services report on the page we now have a mechanism for capturing a users preferences like so;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_C8feMND9TeA/Sm8f3RgJ7-I/AAAAAAAAAIY/9qw8kgth23o/s1600-h/image4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_C8feMND9TeA/Sm8f3va2eRI/AAAAAAAAAIc/IBeAfmu0_ew/image_thumb1.png?imgmax=800" width="409" height="231"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Retrieving the preferences is the next part so for that we build on the SQL on the &lt;a href="http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part_04.html"&gt;previous post&lt;/a&gt; that shows how to extract rows from the ParameterValues table in a meaningful way and for this we will put the logic into a stored procedure.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The procedure will perform a number of tasks in addition to pulling the selected members out of the PPSMonitoring database. We also need the final output to be formatted as an MDX set in the format &lt;font face="Courier New"&gt;&lt;em&gt;{member 1, member 2, member 3, member n}&lt;/em&gt;&lt;/font&gt;. So lets break down the procedure into its constituent parts. First the declarations.&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;PROCEDURE&lt;/span&gt; uspGetFilterPreference &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     @Login &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(255)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    ,@FilterID &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(50) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    ,@StrToSet &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;OUTPUT&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The first of the variables, Login, is the logon of the person whose preferences we are trying to find. FilterID is the GUID identifying the filter we are interested in. Finally StrToSet is the output variable that will contain my final MDX set string.&lt;/p&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;DECLARE&lt;/span&gt; @Keys &lt;span style="color: #0000ff"&gt;table&lt;/span&gt;( &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;MemberKey &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(255)) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;DECLARE&lt;/span&gt; @OutputString &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;INSERT @Keys(MemberKey) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    REPLACE( &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        REPLACE( &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;CAST&lt;/span&gt;(d.Members.query(&lt;span style="color: #006080"&gt;'LocationID'&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VARCHAR&lt;/span&gt; (255) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                ), &lt;span style="color: #006080"&gt;'&amp;lt;LocationID&amp;gt;'&lt;/span&gt;, &lt;span style="color: #006080"&gt;''&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            ), &lt;span style="color: #006080"&gt;'&amp;lt;/LocationID&amp;gt;'&lt;/span&gt;, &lt;span style="color: #006080"&gt;''&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; MemberKey &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; PPSMonitoring..ParameterValues &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;CROSS&lt;/span&gt; APPLY SerializedXml.nodes&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    (&lt;span style="color: #006080"&gt;'/NewDataSet/MyDataTable'&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; d(Members) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; [Login] = @Login &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;AND&lt;/span&gt; ParameterUniqueName = @FilterID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;This section gets the values out of the ParameterValues table and loads them into a table variable called Keys. Along the way we strip out any XML syntax (element names, tags, etc.) leaving a table variable comtaining the key values from the tabular filter.&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff"&gt;EXISTS&lt;/span&gt; (&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; 1 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; @Keys  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; MemberKey = &lt;span style="color: #006080"&gt;'ALL'&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;BEGIN&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; @OutputString = &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #006080"&gt;'[Town].[County].Members'&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;END&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Here we check to see if the “All” member has been selected. If it has then we set the OutputString variable to be all members from the County attribute hierarchy of my Town dimension and &lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;&lt;u&gt;NOT&lt;/u&gt;&lt;/strong&gt;&lt;font color="#000000" size="2"&gt; the user hierarchy. This is really important for later on.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color="#000000"&gt;If the “All” member has not been selected then we work out what members have been selected and using a set of union statements get a list of true dimension keys&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;ELSE&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;BEGIN&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;  &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; @OutputString = &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;SUBSTRING&lt;/span&gt;((&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #006080"&gt;', '&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            + &lt;span style="color: #006080"&gt;'[Town].[County].&amp;amp;['&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            + &lt;span style="color: #0000ff"&gt;CAST&lt;/span&gt;(ID &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(10)) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            + &lt;span style="color: #006080"&gt;']'&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; (&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; ID &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; DimTownTabular &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; ParentLocationID &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;         (&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; MemberKey &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; @Keys &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;LEFT&lt;/span&gt;(MemberKey, 1) = &lt;span style="color: #006080"&gt;'B'&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;UNION&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; ID &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; dbo.DimTownTabular &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; ParentLocationID &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;         (&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; MemberKey &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; @Keys &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;LEFT&lt;/span&gt;(MemberKey, 1) = &lt;span style="color: #006080"&gt;'C'&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;UNION&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; ID &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; dbo.DimTownTabular &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; LocationID &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;         (&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; MemberKey &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; @Keys &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;LEFT&lt;/span&gt;(MemberKey, 1) = &lt;span style="color: #006080"&gt;'D'&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            ) a &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;  &lt;span style="color: #0000ff"&gt;FOR&lt;/span&gt; XML &lt;span style="color: #0000ff"&gt;PATH&lt;/span&gt;( &lt;span style="color: #006080"&gt;''&lt;/span&gt; )), 3, 1000 ) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;END&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;This is why we have the ID column and the letter prefix. It makes this bit a lot easier to manage. The output of this and the value that get dropped into the OutputString variable is almost exactly what we want. The only issue is that by using the &lt;span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes; mso-font-width: 90%"&gt;&lt;span style="color: blue"&gt;FOR&lt;/span&gt; &lt;span style="color: blue"&gt;XML&lt;/span&gt; &lt;span style="color: blue"&gt;PATH&lt;/span&gt;&lt;/span&gt; statement to produce a comma delimited string of the members it replaces “&lt;em&gt;&amp;amp;&lt;/em&gt;“ symbols with “&lt;em&gt;&amp;amp;amp;”&lt;/em&gt;. A quick …&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; @StrToSet = &lt;span style="color: #006080"&gt;'{'&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                 + REPLACE(@OutputString,&lt;span style="color: #006080"&gt;'.&amp;amp;amp;'&lt;/span&gt;, &lt;span style="color: #006080"&gt;'.&amp;amp;'&lt;/span&gt;) &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                 + &lt;span style="color: #006080"&gt;'}'&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;… fixes that and puts the curly brackets around to finish off our set syntax and the procedure as a whole.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Run the procedure against the username and filter you’re querying and depending on how many members you selected in the tabular filter you should get something like this;&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{[Town].[County].&amp;amp;[26], [Town].[County].&amp;amp;[63]}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Now I would recommend that everyone goes out and gets this book&lt;/p&gt;&lt;br /&gt;&lt;table border="0" cellspacing="0" cellpadding="6" width="425"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td width="212"&gt;&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/Sm8f4Mhjh9I/AAAAAAAAAIg/QXJei1C088U/s1600-h/image31.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_C8feMND9TeA/Sm8f4igqnhI/AAAAAAAAAIk/5PZ1JWDE9OA/image_thumb.png?imgmax=800" width="194" height="244"&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;td width="212"&gt;MDX Solutions &lt;br&gt;(&lt;a href="http://www.amazon.co.uk/MDX-Solutions-Microsoft-Analysis-Services/dp/0471748080/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1248363917&amp;amp;sr=1-1"&gt;Amazon link&lt;/a&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;And go to chapter 10 where there is a section called “Using Stored Procedures for Dynamic Security”. This explains how to use a simple analysis service stored procedure (DLL) to affect what members in a dimension users are able to see. All the code is doing is retrieving a number of rows from a SQL query and passing it into analysis services security as an MDX set object. In my stored procedure I made it simpler and just executed a stored procedure and output a string.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Unfortunately I haven’t got this all packaged up as a project but my recommendation would be to create a C# project build the DLL and also build a command line application that references the DLL just to test everything is working OK. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_C8feMND9TeA/Sm8f5K6NBJI/AAAAAAAAAIo/119uX2nHddU/s1600-h/image7.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_C8feMND9TeA/Sm8f5rB3BcI/AAAAAAAAAIs/KUJrUCjitUc/image_thumb8.png?imgmax=800" width="449" height="196"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Also things like error handling and connection string configuration to where the PPS database should all be handled in this code. My function is called “GetPreferredCounties” which has two input variables. The username and the filter ID, both as strings.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After registering the assembly with the Analysis Server we can now setup the final piece. In one of the roles in your cube (you have created one right?), within the dimension data security for the County attribute of the Town dimension I can now put in the syntax to make the stored procedure call and retrieve the string. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/Sm8f519xauI/AAAAAAAAAIw/Vx39ZskJXII/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_C8feMND9TeA/Sm8f6Q5ltgI/AAAAAAAAAI0/J5ZUVtJRggA/image_thumb%5B2%5D.png?imgmax=800" width="460" height="147"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;In my example it looks like this.&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;STRTOSET(PPSFilterASStoredProcs.GetPreferredCounties(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    UserName()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   ,"822e399a-af44-4cf3-be19-f1602ca14afb"))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The &lt;font color="#0000ff"&gt;USERNAME&lt;/font&gt; function will pass through the current users logon credentials to the function and the &lt;font color="#800000"&gt;STRTOSET&lt;/font&gt; function will take the output string from the function and convert it into something analysis service will understand is a set.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If all has gone well Analysis Services is now using the output from the stored procedure to provide a restricted list of dimension members to a user. A list that the user themselves can control without any other system being put in the way or elevated privileges being provided.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Build another page on your dashboard and this time create and add a report that just displays some info about your filtered dimension. Attach this to a filter based on the analysis services dimension (I tend to use named sets) and now you will only see the members that match your preferences selection.&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/Sm8f65eMP7I/AAAAAAAAAI4/1ZGSlSCVshk/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_C8feMND9TeA/Sm8f7O27wfI/AAAAAAAAAI8/_-R7kZlmd5U/image_thumb%5B4%5D.png?imgmax=800" width="456" height="164"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/Sm8f7qhyOEI/AAAAAAAAAJA/GrXaZoacboo/s1600-h/image%5B13%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_C8feMND9TeA/Sm8f77DvtnI/AAAAAAAAAJE/FWvkeUNiOBE/image_thumb%5B7%5D.png?imgmax=800" width="470" height="232"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now to tidy up that hierarchy a bit. All those parent members that are just getting in the way and making the navigation more complex than it needs to be. Pay a visit to Boyan Penev’s blog and take a look at a post on &lt;a href="http://bp-msbi.blogspot.com/2008/09/filtering-unneeded-dimension-members-in.html"&gt;Filtering Unneeded Dimension Members in PerformancePoint Filters&lt;/a&gt;. By making the source query or named set for your filter based on the logic in the post you just get the top most level necessary which makes the filter a hell of a lot neater and with the added bonus of the top level member becoming the default when you first access it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_C8feMND9TeA/Sm8f8bcJ0_I/AAAAAAAAAJI/qn4TJR4_f6s/s1600-h/image%5B17%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_C8feMND9TeA/Sm8f8hwdV8I/AAAAAAAAAJM/9CNfKFn-s70/image_thumb%5B9%5D.png?imgmax=800" width="458" height="227"&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;There’s a lot going on in this post and unfortunately I haven’t had the chance to package it up into something I can redistribute easily but if there’s any questions then ask away and I’ll help if I can. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-9066390459286958798?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/9066390459286958798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=9066390459286958798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/9066390459286958798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/9066390459286958798'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/07/little-something-about-pps-filters-part.html' title='A Little Something About PPS Filters (part 3)'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/Sm8f1f_R6NI/AAAAAAAAAIE/CSVOO07s0cg/s72-c/image_thumb11.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2034841264357556908</id><published>2009-06-04T09:59:00.001+01:00</published><updated>2009-06-04T15:26:19.131+01:00</updated><title type='text'>A Little Something About PPS Filters (part 2)</title><content type='html'>&lt;p&gt;Here I wanted to go through what happens when you click apply on a PerformancePoint filter. Well first lets look at the simple OLAP based filter that I put together for the &lt;a href="http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part.html" target="_blank"&gt;last post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/SieM8ZvHrTI/AAAAAAAAAHo/so21Czl1cLE/s1600-h/Image0013.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Image001" border="0" alt="Image001" src="http://lh6.ggpht.com/_C8feMND9TeA/SieM9LKuQwI/AAAAAAAAAHs/hMxtYrnw720/Image001_thumb1.jpg?imgmax=800" width="456" height="248" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On my blank dashboard page with only a single filter I click apply and then I’ll have my selection displayed so the filter looks like it’s registered the filter change. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_C8feMND9TeA/SieM93WzjoI/AAAAAAAAAHw/Iq6OACVvt4A/s1600-h/Image0024.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Image002" border="0" alt="Image002" src="http://lh3.ggpht.com/_C8feMND9TeA/SieM-UhmPWI/AAAAAAAAAH0/r4v82zaFM9E/Image002_thumb2.jpg?imgmax=800" width="460" height="262" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The problem is that when I refresh the page PPS doesn’t remember my last selection and will return the All member. This isn’t what PPS filters are supposed to do but the reason is simple, what’s the point of having a filter if there’s no report connected to it?&lt;/p&gt;  &lt;p&gt;After putting a simple reporting services report on the page and trying the filters again no problems. I can close the browser, log out, reboot my machine no matter what you do the parameter selection is remembered. So lets ask the question, how?&lt;/p&gt;  &lt;p&gt;When a user accesses a report linked parameter their selections are stored in the PPS monitoring database in a table called ParameterValues. This table consists of a filter id, which is a GUID as a string, the users login credentials, the last update time and finally a column called SerializedXml.&lt;/p&gt;  &lt;p&gt;SerializedXml is an xml typed field that contains a users actual selections for that particular filter. Select * from the table in management studio and click on one of the values in the SerializedXml column and you can see the xml displayed. Forget the schema tags and looking lower down in the xml document to the elements called ‘MyDataTable’.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="428"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="426"&gt;         &lt;blockquote style="margin-right: 0px" dir="ltr"&gt;           &lt;p style="margin-right: 0px" dir="ltr"&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;Key&lt;/font&gt;&amp;gt;&lt;font color="#000000"&gt;c431349de280b5a3fc3f921d5ebffd67&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Key&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;DisplayValue&lt;/font&gt; /&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;/&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;Key&lt;/font&gt;&amp;gt;&lt;font color="#000000"&gt;18eb638b9e0c1c9ab64aaacdcb21d4bd&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Key&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;DisplayValue&lt;/font&gt; /&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;/&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;         &lt;/blockquote&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This is where one particular difference between OLAP and tabular filter appears. Look at a the SerializedXml value for an OLAP based filter and you’ll see a GUID appear in the key element. This would seem to be the dimension property MEMBER_GUID but I haven’t been able to confirm this on Analysis Services 2008 but it seems logical enough.&lt;/p&gt;  &lt;p&gt;When looking at the SerializedXml for a filter based on tabular data the differences are quite clear.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;blockquote style="margin-right: 0px" dir="ltr"&gt;           &lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;LocationID&lt;/font&gt;&amp;gt;&lt;font color="#000000"&gt;England&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;LocationID&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;LocationDesc&lt;/font&gt; /&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;/&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;LocationID&lt;/font&gt;&amp;gt;&lt;font color="#000000"&gt;Scotland&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;LocationID&lt;/font&gt;&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;#160; &amp;lt;&lt;font color="#800000"&gt;LocationDesc&lt;/font&gt; /&amp;gt;                 &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;/&lt;font color="#800000"&gt;MyDataTable&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;         &lt;/blockquote&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;With tabular filters the key assigned within the parent / child relationship is the value stored in the xml and its possible to query it as well using SQL Servers xml query features. The example above can be queried using the following syntax;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;blockquote style="margin-right: 0px" dir="ltr"&gt;           &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; d.Members.query(&lt;font color="#ff0000"&gt;'LocationID'&lt;/font&gt;)                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&amp;#160; AS&lt;/font&gt; MemberKey                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;ParameterValues                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#808080"&gt;CROSS APPLY&lt;/font&gt; SerializedXml.nodes                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160; (&lt;font color="#ff0000"&gt;'/NewDataSet/MyDataTable'&lt;/font&gt;)                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; AS&lt;/font&gt; d(Members)                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt; [Login] = @Login                 &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;AND&lt;/font&gt; ParameterUniqueName = @FilterID&lt;/font&gt;&lt;/p&gt;         &lt;/blockquote&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;By providing the login and filter id parameter we can get the selection for a single users filter. The result set is again xml based returning a row for each filter selection.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="277"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="275"&gt;&lt;strong&gt;MemberKey&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="275"&gt;&lt;font color="#0000ff" face="Courier New"&gt;&lt;u&gt;&amp;lt;LocationID&amp;gt;England&amp;lt;/LocationID&amp;gt;&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="275"&gt;&lt;font color="#0000ff" face="Courier New"&gt;&lt;u&gt;&amp;lt;LocationID&amp;gt;Scotland&amp;lt;/LocationID&amp;gt;&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The element names and tags can be cleared away easily enough with some string manipulation or if anyone know how the SQL xml query could be tweaked to use return just the values themselves I would be interested to hear.&lt;/p&gt;  &lt;p&gt;In the next post I’m going to show how this can all be put together to demonstrate how these ideas can be applied to real world scenarios.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2034841264357556908?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2034841264357556908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2034841264357556908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2034841264357556908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2034841264357556908'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part_04.html' title='A Little Something About PPS Filters (part 2)'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/SieM9LKuQwI/AAAAAAAAAHs/hMxtYrnw720/s72-c/Image001_thumb1.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2543227483565627689</id><published>2009-06-04T09:54:00.001+01:00</published><updated>2009-06-04T15:32:27.342+01:00</updated><title type='text'>This Week I Have Been Mostly Listening To…</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/Sifa944dMSI/AAAAAAAAAH4/e-xJihuCO5I/s1600-h/KitsuneMaison7%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="KitsuneMaison7" border="0" alt="KitsuneMaison7" src="http://lh5.ggpht.com/_C8feMND9TeA/Sifa-t5bewI/AAAAAAAAAH8/ypCtAneitQI/KitsuneMaison7_thumb.jpg?imgmax=800" width="244" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Kitsuné&lt;em&gt; &lt;/em&gt;Maison Compilation 7 – Various Artists&lt;/p&gt;  &lt;p&gt;&lt;a title="Spotify Playlist" href="http://open.spotify.com/search/kitsune+maison+compilation+7" target="_blank"&gt;Spotify Playlist&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2543227483565627689?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2543227483565627689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2543227483565627689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2543227483565627689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2543227483565627689'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/06/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_C8feMND9TeA/Sifa-t5bewI/AAAAAAAAAH8/ypCtAneitQI/s72-c/KitsuneMaison7_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-6372638424553045435</id><published>2009-06-03T15:02:00.001+01:00</published><updated>2009-06-03T15:05:30.151+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><title type='text'>A Little Something About PPS Filters (part 1)</title><content type='html'>&lt;p&gt;If you have a lot of members, say in the thousands, that you want to display in a PPS filter then you’re going have problems. The current version of PPS doesn’t handle them to well and I surmise that it’s one of the reasons that there’s a configurable setting in the web.config allowing to set the maximum number of members returned in a filter.&lt;/p&gt;  &lt;p&gt;Things are compounded when you have hierarchical filters as the number of members is increased by parent members. The obvious way to get around this off the top of your head would be cascading filters but this has its own issues one in particular is that I want the user to be able to use all of the hierarchy in the reports from the all level to the leaf level members.&lt;/p&gt;  &lt;p&gt;Hopefully the architecture of PPS v2 will have corrected this little foible but in the meantime we have to work around this. I’m going to talk in the next few posts about the filters and demonstrate a potential workaround but wanted to start off with a bit of an overview on two types of filters available in PPS and that’s OLAP based and tabular based.&lt;/p&gt;  &lt;p&gt;The majority of people will have put together an OLAP data based filter. It’s very simple and you can choose to either select the members directly from the dimension, use a named set or a MDX query. I would hazard to guess that most developers will use either named sets or MDX queries.&lt;/p&gt;  &lt;p&gt;I’ll use a simple MDX query to generate a set from a dimension I’ve got called “Towns”. This dimension contains a single user hierarchy that looks like this;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Country      &lt;ul&gt;       &lt;li&gt;Region          &lt;ul&gt;           &lt;li&gt;County              &lt;ul&gt;               &lt;li&gt;Town Prefix                  &lt;ul&gt;                   &lt;li&gt;Town &lt;/li&gt;                 &lt;/ul&gt;               &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As I only want to display data to the county level in my filter I can set this up with this MDX;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="437"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="435"&gt;         &lt;blockquote style="margin-right: 0px" dir="ltr"&gt;           &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;DESCENDANTS&lt;/font&gt;(                 &lt;br /&gt;&amp;#160;&amp;#160; [Town].[Town].[All] &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#008000"&gt;// The top level member                  &lt;br /&gt;&lt;/font&gt;&amp;#160; ,[Town].[Town].[County] &lt;font color="#008000"&gt;// down to the County level&lt;/font&gt;                 &lt;br /&gt;&amp;#160; ,&lt;font color="#0000ff"&gt;SELF_AND_BEFORE&lt;/font&gt;) &lt;font color="#008000"&gt;// including all members&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/blockquote&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h6&gt;&lt;/h6&gt;  &lt;p&gt;When the filter is built and deployed you’ get something that looks like this;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/SiaDJcBkE2I/AAAAAAAAAHg/jnJZqVHmOKQ/s1600-h/Image001%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Image001" border="0" alt="Image001" src="http://lh6.ggpht.com/_C8feMND9TeA/SiaDKGPnnQI/AAAAAAAAAHk/aQe1ZpfwaOY/Image001_thumb%5B1%5D.jpg?imgmax=800" width="443" height="241" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To achieve the same with a tabular filter you need to put together a parent child structured data set. As my source table has individual fields for each of the hierarchy levels this will need to be created manually using a series of union statements. For example;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="317"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="315"&gt;         &lt;blockquote style="margin-right: 0px" dir="ltr"&gt;           &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;                 &lt;br /&gt;&amp;#160; &lt;font color="#ff0000"&gt;'All' &lt;/font&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt; Location&amp;#160; &lt;br /&gt;,&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff0000"&gt;'All' &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt; ParentLocation                 &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION&lt;/font&gt; &lt;font color="#808080"&gt;ALL&lt;/font&gt;                 &lt;br /&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;                 &lt;br /&gt;&amp;#160; Country &lt;font color="#0000ff"&gt;AS&lt;/font&gt; Location                 &lt;br /&gt;,&lt;font color="#ff0000"&gt;'All' &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt; ParentLocation                 &lt;br /&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;                 &lt;br /&gt;&amp;#160; dbo.DimTown                 &lt;br /&gt;&lt;font color="#0000ff"&gt;UNION &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#808080"&gt;ALL&lt;/font&gt;&lt;/font&gt; &lt;font face="Courier New"&gt;               &lt;br /&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;                 &lt;br /&gt;&amp;#160; Region &lt;font color="#0000ff"&gt;AS&lt;/font&gt; Location                 &lt;br /&gt;,Country &lt;font color="#0000ff"&gt;AS&lt;/font&gt; ParentLocation                 &lt;br /&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;                 &lt;br /&gt;&amp;#160; dbo.DimTown&lt;/font&gt;&lt;/p&gt;         &lt;/blockquote&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Now none of what has been written above is new, Earth shattering or of any particular benefit to anyone apart from those who have never touched PPS before but I wanted to mention the distinction between OLAP and tabular data sourced filters as it will become quite important in the next post around how PPS remembers what your last selection was.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-6372638424553045435?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/6372638424553045435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=6372638424553045435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6372638424553045435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6372638424553045435'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/06/little-something-about-pps-filters-part.html' title='A Little Something About PPS Filters (part 1)'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/SiaDKGPnnQI/AAAAAAAAAHk/aQe1ZpfwaOY/s72-c/Image001_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5954014979793979847</id><published>2009-03-10T15:44:00.001Z</published><updated>2009-03-10T15:44:13.900Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To…</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_C8feMND9TeA/SbaKxqxU5GI/AAAAAAAAAHY/ph6fXcYODPE/s1600-h/665.x600.mr.titus.rev12.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="665.x600.mr.titus.rev[1]" border="0" alt="665.x600.mr.titus.rev[1]" src="http://lh6.ggpht.com/_C8feMND9TeA/SbaKy0fsZbI/AAAAAAAAAHc/IvGGmTa-e-Y/665.x600.mr.titus.rev1_thumb.jpg?imgmax=800" width="244" height="238" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Airing of Grievances – Titus Andronicus&lt;/p&gt;  &lt;p&gt;&lt;a href="http://open.spotify.com/user/oneleguk/playlist/1HVYscRvqOHQB7DmNHIh0E" target="_blank"&gt;Spotify Playlist&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5954014979793979847?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5954014979793979847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5954014979793979847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5954014979793979847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5954014979793979847'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/03/this-week-i-have-been-mostly-listening_10.html' title='This Week I Have Been Mostly Listening To…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/SbaKy0fsZbI/AAAAAAAAAHc/IvGGmTa-e-Y/s72-c/665.x600.mr.titus.rev1_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-740686807689690323</id><published>2009-03-04T18:17:00.001Z</published><updated>2009-03-04T18:17:03.128Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>Crash, Bang, WOLAP..</title><content type='html'>&lt;p&gt;I’ve been working on a SQL Server 2008 project that uses proactive caching on some partitions to speed up the availability of the data to the end user.&lt;/p&gt;  &lt;p&gt;For all the things that have been said and written about ROLAP in the past apart from some issues around &lt;a href="http://stevemchugh.blogspot.com/2009/02/proactive-caching-weirdness.html" target="_blank"&gt;traces&lt;/a&gt; I’ve found it to behave itself pretty much. Well that is until now.&lt;/p&gt;  &lt;p&gt;Since moving into a test environment we’ve been getting a lot these errors;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;p&gt;&lt;font color="#808080" size="1"&gt;The description for Event ID 22 from source MSSQLServerOLAPService cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer. &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font color="#808080" size="1"&gt;If the event originated on another computer, the display information had to be saved with the event. &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font color="#808080" size="1"&gt;The following information was included with the event: &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font color="#808080" size="1"&gt;Internal error: An unexpected exception occurred. &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font color="#808080" size="1"&gt;the message resource is present but the message is not found in the string/message table&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Actually these errors would come thick and fast every couple of seconds or so until the Analysis Services service decided to stop. Profiling the Analysis Server showed the problem from the OLAP server point of view where it seemed to happen when the aggregations were being merged.;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;font color="#808080" size="1"&gt;Internal error: An unexpected exception occurred. Errors in the OLAP storage engine: An error occurred while processing the 'Current Day' partition of the 'Fact Table' measure group for the 'AS2008 Bug Test' cube from the AS2008 Bug Test database. Server: The operation has been cancelled.&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;I took the OLAP database that I was using and broke it down until I had the minimum amount of code and objects left in there. This meant stripping out the calculations, all of the measure groups, apart from 1, and most of the dimensions. Finally I was left with a cube that had 2 dimensions (one of which was a date dimension) and a single measure.&lt;/p&gt;  &lt;p&gt;Within the measure group were 2 partitions, one was standard MOLAP the other a real-time HOLAP partition looking at the same fact table but different date ranges (current day and everything else). Now here’s the thing, while there is data in the HOLAP partition there are no errors and no crashing. With the HOLAP partition not processed, again no errors but as soon as the HOLAP partition was processed and had no data to retrieve then there would be errors galore resulting in the inevitable crash.&lt;/p&gt;  &lt;p&gt;A further step back showed that this would all behave as long no aggregations were applied to the HOLAP partition. As soon as a single aggregation was put on the partition and the partition processed the errors would appear until either data was inserted into the source table, to subsequently be picked up in the HOLAP partition, or Analysis Services crashed.&lt;/p&gt;  &lt;p&gt;Curiously converting the partition to real-time ROLAP didn’t deliver any errors with or without aggregations and same is true for any of the MOLAP types of storage but as soon as it moved back to HOLAP the errors returned.&lt;/p&gt;  &lt;p&gt;Some extra detail. I’ve observed this on both 32bit and 64bit systems. The 64bit server this was first spotted on has the &lt;a href="http://support.microsoft.com/kb/960484/en-us" target="_blank"&gt;cumulative update package 3 for SQL Server 2008&lt;/a&gt; installed and the 32bit is RTM so it looks like the issue is throughout the codebase. We haven’t gone as far as to install the SP1 CTP due to environment constraints. This looks like it might be a bit of a bug so I’m in the process now of packaging up something to send to Microsoft.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-740686807689690323?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/740686807689690323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=740686807689690323' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/740686807689690323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/740686807689690323'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/03/crash-bang-wolap.html' title='Crash, Bang, WOLAP..'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-276378683175722170</id><published>2009-03-03T17:57:00.001Z</published><updated>2009-07-28T17:10:46.744+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To…</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/Sm8jBL1rtcI/AAAAAAAAAJQ/DR-4SjgQPjc/s1600-h/brilcd108%5B1%5D%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="brilcd108[1]" border="0" alt="brilcd108[1]" src="http://lh6.ggpht.com/_C8feMND9TeA/Sm8jBoGoAuI/AAAAAAAAAJU/2y-xo-0uvp0/brilcd108%5B1%5D_thumb.jpg?imgmax=800" width="244" height="243"&gt;&lt;/a&gt; &lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:59c53b38-b809-4427-9565-4008293ba486" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Good+Shoes" rel="tag"&gt;Good Shoes&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Think Before You Speak - Good Shoes&lt;/p&gt; &lt;p&gt;&lt;a href="http://open.spotify.com/user/oneleguk/playlist/5b1Xvd0uQMxM3BJIAAknR1" target="_blank"&gt;Spotify Playlist&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-276378683175722170?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/276378683175722170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=276378683175722170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/276378683175722170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/276378683175722170'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/03/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/Sm8jBoGoAuI/AAAAAAAAAJU/2y-xo-0uvp0/s72-c/brilcd108%5B1%5D_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3951679241913917077</id><published>2009-02-25T09:12:00.001Z</published><updated>2009-02-25T09:12:16.762Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Wanted: Data Dude-esque Features for the Rest of the SQL Server Stack</title><content type='html'>&lt;p&gt;I’m a big fan of Visual Studio Team Developer Edition for Database Professionals (mouthful..!). But what has practically always taken the sheen off of my BI deployments is the clunky way in which the other components get deployed. I like the idea of being able to perform a one click deployment and so do many of the production administrators I deal with.&lt;/p&gt;  &lt;p&gt;DB Pro really provides complete control over all aspects of the database development and deployment so why can’t I have the same thing for my Analysis Services deployments. Between the deployment features of Visual Studio and the Analysis Services Deployment Wizard everything appears to be there to do exactly what I would like so all I’m missing is that close nit development environment integration.&lt;/p&gt;  &lt;p&gt;Reporting Services suffices to a certain extent apart from being able to control the connection strings in data sources depending on the project / solution configuration. Yes I know that you can re-deploy the data sources or use the scripting capabilities but yet another external mechanism when Data Dude (now in its second iteration) shows exactly how it should be done.&lt;/p&gt;  &lt;p&gt;SSIS deployment is something I’ve never been particularly fond of but you can build the files into the folder of your choice so I’ll swallow that…&lt;/p&gt;  &lt;p&gt;Maybe there’s something coming in SQL Server 2010 / Visual Studio 2010. One can always hope… &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3951679241913917077?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3951679241913917077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3951679241913917077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3951679241913917077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3951679241913917077'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/wanted-data-dude-esque-features-for.html' title='Wanted: Data Dude-esque Features for the Rest of the SQL Server Stack'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-1850628945963114643</id><published>2009-02-24T14:53:00.001Z</published><updated>2009-02-24T14:53:02.544Z</updated><title type='text'>SQL Server 2008 SP1 CTP…</title><content type='html'>&lt;p&gt;… is out and available from all good record stores or if you don’t have a good record store near by you can always try &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6f26fc45-f0ca-49cf-a6ee-840c7e8bb8af&amp;amp;DisplayLang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-1850628945963114643?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/1850628945963114643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=1850628945963114643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1850628945963114643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1850628945963114643'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/sql-server-2008-sp1-ctp.html' title='SQL Server 2008 SP1 CTP…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8647818967678200500</id><published>2009-02-24T10:28:00.001Z</published><updated>2009-02-24T10:28:00.944Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To…</title><content type='html'>&lt;p&gt;&lt;img src="http://static.motor.de/bilder/891c8d5cadfbcc86e1f5bbafc6ef1e0c.jpg" width="240" height="240" /&gt;&lt;/p&gt;  &lt;p&gt;The Golden Spike – Sky Larkin&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8647818967678200500?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8647818967678200500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8647818967678200500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8647818967678200500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8647818967678200500'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/this-week-i-have-been-mostly-listening_24.html' title='This Week I Have Been Mostly Listening To…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8910518158665864003</id><published>2009-02-17T08:56:00.001Z</published><updated>2009-02-18T23:02:15.710Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><title type='text'>The Mystery of the Disappearing Packet</title><content type='html'>&lt;p&gt;No it’s not Halloween come early but a story straight from “&lt;a href="http://en.wikipedia.org/wiki/Tales_of_the_Unexpected_(TV_series)" target="_blank"&gt;Tales of the Unexpected&lt;/a&gt;”.&lt;/p&gt;  &lt;p&gt;So we have a scaled out PerformancePoint architecture with Windows SharePoint Services on one box, the PPS Monitoring services on another and Analysis Services 2008 and SQL Server 2008 on separate machines. In this environment the dashboards deployed to the SharePoint server talk directly to the Analysis Server but in this case they didn’t. &lt;/p&gt;  &lt;p&gt;Because there is a firewall between the SharePoint server and the other servers in this environment my immediate thought was firewall but after, a) checking the firewall rules were in place, b) checking Analysis Services was listening on the default port, and c) that we could telnet on port 2383 from the SharePoint box to the Analysis Services machine there was still no indication as to the issue.&lt;/p&gt;  &lt;p&gt;Plugging in Microsoft’s Network Monitor (great tool, I thoroughly recommend &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&amp;amp;displaylang=en" target="_blank"&gt;getting it&lt;/a&gt; and using it). I could see the request coming in from the client but nothing going out at all on port 2383. I knew there needed to be something going out on that port as I had checked all of this with the same tool on a similarly configured environment.&lt;/p&gt;  &lt;p&gt;Next I moved on to the OLEDB providers themselves. As this is totally SQL Server 2008 it appeared all of the correct drivers had been installed but as you notice when configuring PPS Monitoring, the installation does like to have ADOMD and SQL Client for AS 2005 and SQL 2005. After consuming some information on the interweb about SQL Server 2008 / PPS SP2 installations (&lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2008/12/31/performance-point-sp2-and-sql-server-2008.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://hmorgenstern.spaces.live.com/blog/cns!28A6BE83102A0EB3!461.entry?wa=wsignin1.0&amp;amp;sa=552690013" target="_blank"&gt;here&lt;/a&gt;) I thought I would give the latest &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=536fd7d5-013f-49bc-9fc7-77dede4bb075&amp;amp;displaylang=en" target="_blank"&gt;2005 components&lt;/a&gt; a try. To my amazement without even a reboot packets started to trickle to my Analysis Server on port 2383.&lt;/p&gt;  &lt;p&gt;Now I will leave you with a blast from the past. Just one thing to note for anyone outside of the UK, this is actually how everyone dances over here. On Saturday nights the Ritzys and Hippodromes up and down the country are filled with this kind of thing.&lt;/p&gt;  &lt;p&gt;Enjoy..!&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4e06e632-018b-4bc8-87c0-813d7961bead" class="wlWriterEditableSmartContent"&gt;&lt;div id="04a5baae-b926-464f-ba7a-eee8ac8a0552" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=zzaobXhzX9E" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/_C8feMND9TeA/SZyTdltBTOI/AAAAAAAAAHE/0Jk3SySMx40/video956b3e91b585%5B2%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('04a5baae-b926-464f-ba7a-eee8ac8a0552'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/zzaobXhzX9E&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/zzaobXhzX9E&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8910518158665864003?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8910518158665864003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8910518158665864003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8910518158665864003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8910518158665864003'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/mystery-of-disappearing-packet.html' title='The Mystery of the Disappearing Packet'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_C8feMND9TeA/SZyTdltBTOI/AAAAAAAAAHE/0Jk3SySMx40/s72-c/video956b3e91b585%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4351315836184626634</id><published>2009-02-17T08:25:00.001Z</published><updated>2009-02-17T08:32:14.139Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>Client Tool Curiosities</title><content type='html'>&lt;p&gt;Had a bit of a weird one the last couple of days where a cube I had built was demonstrating different behaviour in a variety of tools. Debugging the cube script in Visual Studio provided the values that I expected from the script but when I then viewed the same script in ProClarity I had a very different behaviour.&lt;/p&gt;  &lt;p&gt;I then tried the same thing in Management Studio and got a different set of numbers and then finally Excel 2007 provided me with a slightly different behaviour. So how did all of this come about. Well firstly there was an error in my calc, I was adding an integer value to a column where null occurred but this wasn’t producing an error in the visual studio debugger. In fact even though the debugger numbers appeared correct it wasn’t evaluating my script in the way I expected.&lt;/p&gt;  &lt;p&gt;ProClarity wouldn’t show the error, that was fine but when I put same MDX that ProClarity was generating into Management Studio the correct numbers appeared. Browsing the cube in Management Studio produced a completely different set of values but that was due to me setting filters in the browser rather than navigating to the values I wanted.&lt;/p&gt;  &lt;p&gt;Finally I gave Excel 2007 a go and actually saw the error “#VALUE” which kind of gave away what the problem was and where it was.&lt;/p&gt;  &lt;p&gt;So there’s a moral to this story in there somewhere which I’ll leave to yourselves. But I’ve taken away from this the saying that if the number looks right and the number smells right then it’s probably right, maybe, in the right type of tool….. perhaps!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4351315836184626634?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4351315836184626634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4351315836184626634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4351315836184626634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4351315836184626634'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/client-tool-curiosities.html' title='Client Tool Curiosities'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-1198130310291942672</id><published>2009-02-12T14:39:00.001Z</published><updated>2009-02-12T14:39:24.724Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>If You’re Going To Buy A Couple Of Singles From One Band This Week, Make It…</title><content type='html'>&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="398"&gt;         &lt;div align="center"&gt;           &lt;table cellspacing="0" cellpadding="2" width="398" align="center" border="0"&gt;&lt;tbody&gt;               &lt;tr&gt;                 &lt;td valign="top" width="199"&gt;&lt;a href="http://lh3.ggpht.com/_C8feMND9TeA/SZQ0hmeYp8I/AAAAAAAAAGo/62vrLB14_Tc/s1600-h/image%2011%5B9%5D.png"&gt;&lt;img title="image 11" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image 11" src="http://lh5.ggpht.com/_C8feMND9TeA/SZQ0i2VB5QI/AAAAAAAAAGs/9zeK8jhEr7w/image%2011_thumb%5B9%5D.png?imgmax=800" width="206" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;                  &lt;td valign="top" width="199"&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/SZQ0kilZpGI/AAAAAAAAAGw/bnGhGPYSwAY/s1600-h/image%2012%5B2%5D.png"&gt;&lt;img title="image 12" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="207" alt="image 12" src="http://lh3.ggpht.com/_C8feMND9TeA/SZQ0myy7kjI/AAAAAAAAAG0/6Nfhxjl54eY/image%2012_thumb%5B2%5D.png?imgmax=800" width="207" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                 &lt;td valign="top" width="199"&gt;                   &lt;p align="center"&gt;Austere&lt;/p&gt;                 &lt;/td&gt;                  &lt;td valign="top" width="199"&gt;                   &lt;p align="center"&gt;Cradle&lt;/p&gt;                 &lt;/td&gt;               &lt;/tr&gt;             &lt;/tbody&gt;&lt;/table&gt;         &lt;/div&gt;          &lt;table cellspacing="0" cellpadding="2" width="450" border="0"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td valign="top" width="448"&gt;                 &lt;p align="center"&gt;The Joy Formidable&lt;/p&gt;               &lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-1198130310291942672?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/1198130310291942672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=1198130310291942672' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1198130310291942672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1198130310291942672'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/if-youre-going-to-buy-couple-of-singles.html' title='If You’re Going To Buy A Couple Of Singles From One Band This Week, Make It…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_C8feMND9TeA/SZQ0i2VB5QI/AAAAAAAAAGs/9zeK8jhEr7w/s72-c/image%2011_thumb%5B9%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3351913895961258366</id><published>2009-02-06T09:54:00.001Z</published><updated>2009-02-06T09:54:45.147Z</updated><title type='text'>How Many Departments Does It Take</title><content type='html'>&lt;p&gt;Sounds like the beginning of a music hall gag and when you think about it, it could well be. &lt;/p&gt;  &lt;p&gt;Discussing the the merits of the Microsoft BI strategy in the wake of that PPS announcement with &lt;a href="http://markhill.org/blog/?p=21" target="_blank"&gt;Mark&lt;/a&gt; (so as not to show any type of favouritism more comment can be found…)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://cwebbbi.spaces.live.com/blog/cns!7B84B0F2C239489A!4151.entry" target="_blank"&gt;here&lt;/a&gt; (Chris Webb) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/archive/2009/01/29/rip-performancepoint-planning.aspx" target="_blank"&gt;here&lt;/a&gt; (Adatis) &lt;/li&gt;    &lt;li&gt;and &lt;a href="http://www.ssas-info.com/analysis-services-news/1337-microsoft-anounced-that-they-will-retire-performancepoint-as-a-product" target="_blank"&gt;here&lt;/a&gt; (SSAS Info) &lt;/li&gt;    &lt;li&gt;but surprisingly little &lt;a href="http://blogs.msdn.com/performancepoint/default.aspx" target="_blank"&gt;here&lt;/a&gt; (Microsoft PPS blog) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;… the conversation moved towards things as simple as charting. Now as I see it charts, graphs and the general graphical representation of data is pretty important for what we do in business intelligence and some companies understand this and specialise in providing just that. Looking at what Microsoft do with charting from the top of my head we have;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Reporting Services (Licensed from Dundas?) &lt;/li&gt;    &lt;li&gt;Excel &lt;/li&gt;    &lt;li&gt;PerformancePoint &lt;/li&gt;    &lt;li&gt;ProClarity &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of this sitting under one group and three of them focussed on BI. So I again ask the question / present the gag, how many departments does it take? Do I really need to fudge my ProClarity chart to look like a PPS chart because I can’t set the colours in the PPS chart? Should it really be necessary to mock up excel micro charts in reporting services?&lt;/p&gt;  &lt;p&gt;The overall scattergun approach here does net lend itself to a cohesive strategy and if the PPS announcement and this simple example of charting is anything to go by we can’t expect anything soon. Come on Microsoft, SQL Server and Analysis Services are bloody fantastic pieces of software. Lets get the front end strategy working as well as the back end does.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3351913895961258366?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3351913895961258366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3351913895961258366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3351913895961258366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3351913895961258366'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/how-many-departments-does-it-take.html' title='How Many Departments Does It Take'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-6263826959238806861</id><published>2009-02-06T09:53:00.001Z</published><updated>2009-03-03T17:41:24.096Z</updated><title type='text'>Given Half a Chance, This Weekend I Will Be Going All Retro And Playing…</title><content type='html'>&lt;p&gt;&lt;img src="http://www.tozaigames.com/rt_bigbanner.jpg" width="409" height="91" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;R-Type Dimensions - XBLA&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-6263826959238806861?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/6263826959238806861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=6263826959238806861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6263826959238806861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6263826959238806861'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/given-half-chance-this-weekend-i-will.html' title='Given Half a Chance, This Weekend I Will Be Going All Retro And Playing…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-492148639203330852</id><published>2009-02-06T09:00:00.001Z</published><updated>2009-02-06T09:00:23.997Z</updated><title type='text'>Proactive Caching Weirdness</title><content type='html'>&lt;p&gt;In both 2005 and now 2008 I have both heard other people, and experienced myself, a problem where proactive caching gets itself into a bit of a loop. Running profiler against the analysis server you will see a number of trace notification received message and errors that don’t contain anything useful.&lt;/p&gt;  &lt;p&gt;Whilst&amp;#160; haven’t been able to find a solution for this I have got a work around and that is to change the object id of the table that the trace is against. Un-processing the partition that is causing the issue and moving the data to an identical table and changing the names appears to get round the problem although it’s a little concerning that this behaviour is common on both SQL Server 2005 and 2008.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-492148639203330852?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/492148639203330852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=492148639203330852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/492148639203330852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/492148639203330852'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/proactive-caching-weirdness.html' title='Proactive Caching Weirdness'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2178516708093714913</id><published>2009-02-05T11:39:00.001Z</published><updated>2009-02-05T11:39:48.567Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><title type='text'>PerformancePoint Dashboard Performance</title><content type='html'>&lt;p&gt;I’m currently working on a project that is mixing PPS, Reporting Services 2008, ProClarity Analytics Server and Analysis Services 2008 with a lot of proactive caching….. Nice…!&lt;/p&gt;  &lt;p&gt;The development environment we’re using does the job but I had been experiencing some really wild performance issues. One dashboard deployment would be fine and then the next it would run like a dog. This then drove me down a path of tuning every aspect of the solution so I thought I would share a few of my findings up here for posterity.&lt;/p&gt;  &lt;p&gt;The cube has a number of measure groups that in turn have a number of partitions. We’re partitioning by month due to the data volumes with a current day partition that is HOLAP on each of the measure groups. I’m using the SQL Server notifications (AS sets a trace against the target table) so everything is pretty much automatic.&lt;/p&gt;  &lt;p&gt;Dashboards in the solution consist of a mix of reporting services, PAS and PPS native reports all joined together using PPS filters. First off the filter queries themselves, they weren’t dynamic so we went down the route of putting some server side named sets in and just calling them from Dashboard Designer. Nice and simple so far but this is where the performance problems started to manifest.&lt;/p&gt;  &lt;p&gt;With a simple dashboard up and a small number of members in the filter named set, the dashboard was taking far too long to return. There were four filters on this particular page. Looking at profiler I was finding that a refresh of the page after a database update (remember proactive caching involved here) was causing a query to be fired against against Analysis Services and every partition in a single measure group would be read, four times.&lt;/p&gt;  &lt;p&gt;The measure group in question happens to be the measure group that contains the cubes default measure. This I considered to be a bad thing as the production environment would have a lot more data and a lot more partitions to be read, four times, when ever a dashboard page was opened with filters.&lt;/p&gt;  &lt;p&gt;To confirm the behaviour I created a dummy partition with a dummy measure in and made that the cube default measure. Running the same test showed four queries being fired but this time the partition being read was tiny and the filter response in the dashboard immediate. Un-processing the partition though caused everything to behave correctly without obviously the dummy measure being read.&lt;/p&gt;  &lt;p&gt;So point 1 is be careful where you put you default measure. Next up are the reporting services reports. Creating parameters will create hidden data sets in the report that are there to support the available values list in the report parameters. Whenever the report is executed it’s going to want to get the data for those data-sets to populate the list and multi-selects. If, as is the case on this project, the reports are designed to be accessed purely through dashboards using PPS filters there is little point in having these data sets so removed them.&lt;/p&gt;  &lt;p&gt;First for each parameter set the available values to none then remove the related data sets (you will most likely have to show the hidden data sets) and redundant data sources. Although these data sets are small the reporting services reports on the dashboard were observably more responsive.&lt;/p&gt;  &lt;p&gt;The final overall improvement is to reduce the number of members in the filters and make sure that you have selected the right type of filter for the job. In the case of this project we’ve avoided multi-selects and opted for single select lists where possible as they seem to take less time to render on the client. Improving the performance of the filters is ultimately going to be based on the number of members you can select from. With SP1 of PPS you can now (I think) have cascading filters but in an OLAP environment where you want to select a member at any level within a hierarchy that’s not useful.&lt;/p&gt;  &lt;p&gt;Try using clever MDX or security to reduce the member count, it really makes a lot of difference.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2178516708093714913?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2178516708093714913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2178516708093714913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2178516708093714913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2178516708093714913'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/performancepoint-dashboard-performance.html' title='PerformancePoint Dashboard Performance'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-7769151825688102220</id><published>2009-02-05T10:55:00.001Z</published><updated>2009-02-05T10:55:15.115Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;img height="267" src="http://ecx.images-amazon.com/images/I/51AP1x30f3L._SS500_.jpg" width="267" /&gt;&lt;/p&gt;  &lt;p&gt;Nights Out - Metronomy&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-7769151825688102220?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/7769151825688102220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=7769151825688102220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7769151825688102220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7769151825688102220'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2009/02/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4545574361446675672</id><published>2008-11-26T13:04:00.001Z</published><updated>2008-11-26T13:04:25.025Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_C8feMND9TeA/SS1JVEroUBI/AAAAAAAAAGg/aOSYtXgl0JI/s1600-h/Little%20Death%20-%20Pete%20and%20the%20Pirates%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="237" alt="Little Death - Pete and the Pirates" src="http://lh6.ggpht.com/_C8feMND9TeA/SS1JWGcoaUI/AAAAAAAAAGk/v--221mARpM/Little%20Death%20-%20Pete%20and%20the%20Pirates_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Little Death - Pete &amp;amp; the Pirates&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4545574361446675672?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4545574361446675672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4545574361446675672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4545574361446675672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4545574361446675672'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/11/this-week-i-have-been-mostly-listening_26.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/SS1JWGcoaUI/AAAAAAAAAGk/v--221mARpM/s72-c/Little%20Death%20-%20Pete%20and%20the%20Pirates_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-496677398554578189</id><published>2008-11-26T13:00:00.001Z</published><updated>2008-11-26T13:00:50.293Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><title type='text'>Data Dude 2008</title><content type='html'>&lt;p&gt;It's finally been released.&lt;/p&gt;  &lt;p&gt;Get it from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt; for all of your database development delights. You will of course have to uninstall any previous CTP previous versions you have but details of what it will or won't upgrade can be found &lt;a href="http://blogs.msdn.com/gertd/archive/2008/11/25/visual-studio-team-system-2008-database-edition-gdr-rtm.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-496677398554578189?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/496677398554578189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=496677398554578189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/496677398554578189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/496677398554578189'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/11/data-dude-2008.html' title='Data Dude 2008'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-1176329938528958589</id><published>2008-11-17T13:09:00.001Z</published><updated>2008-11-17T13:09:26.707Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>Attribute Processing Errors</title><content type='html'>&lt;p&gt;Just something to remind myself that when processing a dimension attribute make sure that there are no NULL's in addition to empty strings. One or the other is ok but when you start having both in an attribute key you will get processing errors as Analysis Services will do whatever it does and effectively make them the same value therefore you will get duplicate key problems.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-1176329938528958589?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/1176329938528958589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=1176329938528958589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1176329938528958589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1176329938528958589'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/11/attribute-processing-errors.html' title='Attribute Processing Errors'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-1956313751709648118</id><published>2008-11-14T10:53:00.001Z</published><updated>2008-11-14T10:53:55.439Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/SR1YuaHBK4I/AAAAAAAAAGY/0T9nDRYZhYM/s1600-h/Another%20Late%20Night%20Tale%20-%20Matt%20Helders.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="Another Late Night Tale - Matt Helders" src="http://lh5.ggpht.com/_C8feMND9TeA/SR1YwU1ua6I/AAAAAAAAAGc/ChzkQcRINJo/Another%20Late%20Night%20Tale%20-%20Matt%20Helders_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Another Late Night Tale - Matt Helders&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-1956313751709648118?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/1956313751709648118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=1956313751709648118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1956313751709648118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1956313751709648118'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/11/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_C8feMND9TeA/SR1YwU1ua6I/AAAAAAAAAGc/ChzkQcRINJo/s72-c/Another%20Late%20Night%20Tale%20-%20Matt%20Helders_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-6633258724735105188</id><published>2008-11-14T09:56:00.001Z</published><updated>2008-11-14T09:57:36.545Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>It's me again.....</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_C8feMND9TeA/SR1LUqXUKhI/AAAAAAAAAGQ/A_VA1YWuw1k/s1600-h/Tada%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="Tada" src="http://lh6.ggpht.com/_C8feMND9TeA/SR1LVrYCEgI/AAAAAAAAAGU/hz4TO3kEQ4c/Tada_thumb.jpg?imgmax=800" width="180" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Somebody asked me yesterday if I'd been updating this recently and of course I haven't as I'm a slacker so I thought I start the process off again by posting about one of my fave subjects and that's that's the continued battle 32bit / 64bit mixed environments.&lt;/p&gt;  &lt;p&gt;I'm currently working on a real life SQL Server 2008 project with all the bells and whistles and everything so we have VS 2008 in the mix as well. Now let me set the stage....&lt;/p&gt;  &lt;p&gt;Dev server = 64 bit&lt;/p&gt;  &lt;p&gt;SQL Server = 64 bit&lt;/p&gt;  &lt;p&gt;Source Database = doesn't matter (I think)&lt;/p&gt;  &lt;p&gt;Now I'm going through a firewall so I've had to setup an alias in the configuration manager so I can specify the port of the instance of SQL server that is my source database. In there you have 32 bit and 64 bit configurations so because I'm setting everything up to make sure I can talk with the server I've gone through management studio.&lt;/p&gt;  &lt;p&gt;SQL Server Management Studio connects fine as I'm guessing it's a 32bit process and I've set up an alias in the 32bit bucket. I can also create a SSIS package that connects to my destination server, is able to browse the source data, and will execute from the dtexecui application. But what can't I do, well for starters I can't debug as I get an error telling me that it cannot connect to the source database.&lt;/p&gt;  &lt;p&gt;Now I create an alias in the 64bit configuration bucket and now I can debug. So what else can I do? Well next thing is to set the project property Run64bitRuntime to false and try to debug with the 64bit alias deleted. Guess what, it runs.&lt;/p&gt;  &lt;p&gt;So the moral of the story is don't expect everything to work nicely for you out of the box all of time even if you're in a single technology environment.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-6633258724735105188?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/6633258724735105188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=6633258724735105188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6633258724735105188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6633258724735105188'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/11/it-me-again.html' title='It&amp;#39;s me again.....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_C8feMND9TeA/SR1LVrYCEgI/AAAAAAAAAGU/hz4TO3kEQ4c/s72-c/Tada_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8588360353649908025</id><published>2008-05-19T10:21:00.003+01:00</published><updated>2008-05-26T07:38:51.187+01:00</updated><title type='text'>Things you should remember but kind of forgot that then come back and bite you on the arse that make you just want to curl up into a little ball and cry out for mommy..... Part 1..!</title><content type='html'>&lt;p&gt;In SSIS lookup component is case sensitive....!&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Apologies about the picture. Looks like my link got hijacked. It has been removed&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8588360353649908025?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8588360353649908025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8588360353649908025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8588360353649908025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8588360353649908025'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/05/things-you-should-remember-but-kind-of.html' title='Things you should remember but kind of forgot that then come back and bite you on the arse that make you just want to curl up into a little ball and cry out for mommy..... Part 1..!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5556097575683313003</id><published>2008-05-19T10:15:00.001+01:00</published><updated>2008-05-19T10:15:32.748+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>This Week I Have Been Mostly erm... Playing...</title><content type='html'>&lt;p&gt;&lt;img height="295" src="http://newtech.aurum3.com/images/xbox360_gta4.jpg" width="233" /&gt; &lt;/p&gt;  &lt;p&gt;Say no more......&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5556097575683313003?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5556097575683313003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5556097575683313003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5556097575683313003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5556097575683313003'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/05/this-week-i-have-been-mostly-erm.html' title='This Week I Have Been Mostly erm... Playing...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-698623544561544680</id><published>2008-05-19T10:10:00.001+01:00</published><updated>2008-05-19T10:11:24.859+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>What's Been Going On The Last Few Months...</title><content type='html'>&lt;p&gt;I have been asked by a few people what I'm doing lately and I have been a bit vague on the details not because I want to hide away but because I really haven't been too clear on that subject myself.&lt;/p&gt;  &lt;p&gt;Anyway here's a short update.&lt;/p&gt;  &lt;p&gt;I left Edenbrook back at the end of February to do some bits and pieces (still MS BI stuff) for myself which has gone quite well, I'm now working on some other projects that will hopefully see the light of day over the next few months. I dropped out of the consulting game really because I decided to spend more time at home with the family and less time in hotels in various parts of the country.&lt;/p&gt;  &lt;p&gt;The hobbies are the same with the addition of Tennis which I've taken up as I'm not allowed to play football anymore :( and any spare time is being taken up tearing it up in Liberty City.&lt;/p&gt;  &lt;p&gt;I shall still be going to the V festival this year at Hylands Park as they appear to have pulled their finger out and got what appears to be their best line up in years, although Glastonbury having Jay Z seems to have helped with that.&lt;/p&gt;  &lt;p&gt;I don't do Facebook, Bebo, MySpace, or any of the other so don't think me rude for not replying to friend requests etc on there. I may change my mind but then again I might not. I want a 3G iPhone, a new laptop and a quad core PC for doing all the stuff I do at home.&lt;/p&gt;  &lt;p&gt;Oh and I went to the Natural History museum yesterday. My daughter and I thoroughly enjoyed it and here is a picture from our day.......&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/stevemchughuk/SDFEBsGjqyI/AAAAAAAAAB4/vWVvE01S1zk/s1600-h/18052008014%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="Big Fish" src="http://lh3.ggpht.com/stevemchughuk/SDFECsGjqzI/AAAAAAAAACA/fG5tPF4eQNE/18052008014_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Apparently the Blue Whale is a lot sleeker than that but when they built this no one had actually ever seen one swimming....!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-698623544561544680?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/698623544561544680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=698623544561544680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/698623544561544680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/698623544561544680'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/05/what-been-going-on-last-few-months.html' title='What&amp;#39;s Been Going On The Last Few Months...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/stevemchughuk/SDFECsGjqzI/AAAAAAAAACA/fG5tPF4eQNE/s72-c/18052008014_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5747317593056547171</id><published>2008-05-19T09:23:00.000+01:00</published><updated>2008-05-19T09:30:25.649+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/stevemchughuk/SDE6nsGjqwI/AAAAAAAAABo/3QFkoxE-1rU/s1600-h/The.Duke.Spirit.Neptune2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="The.Duke.Spirit.Neptune" src="http://lh5.ggpht.com/stevemchughuk/SDE6oMGjqxI/AAAAAAAAABw/eKbTViT0InU/The.Duke.Spirit.Neptune_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Duke Spirit - Neptune&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5747317593056547171?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5747317593056547171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5747317593056547171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5747317593056547171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5747317593056547171'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/05/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/stevemchughuk/SDE6oMGjqxI/AAAAAAAAABw/eKbTViT0InU/s72-c/The.Duke.Spirit.Neptune_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-7277993667252531947</id><published>2008-02-05T10:33:00.001Z</published><updated>2008-02-05T10:42:45.268Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.google.com/stevemchughuk/R6g7ZyKJTWI/AAAAAAAAABQ/hPaxiTsCHao/Laura.Marling.Alas.I.Cannot.Swim%5B2%5D"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="244" alt="Laura.Marling.Alas.I.Cannot.Swim" src="http://lh6.google.com/stevemchughuk/R6g7bCKJTXI/AAAAAAAAABc/WqJD7dfxJls/Laura.Marling.Alas.I.Cannot.Swim_thumb" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Laura Marling - Alas I Cannot Swim&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-7277993667252531947?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/7277993667252531947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=7277993667252531947' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7277993667252531947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7277993667252531947'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2008/02/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8005805362188214141</id><published>2007-11-27T20:43:00.001Z</published><updated>2007-11-27T20:43:34.740Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.co.uk/gp/product/images/B000TZGQKE/sr=8-1/qid=1193245375/ref=dp_image_0/203-7969397-4169513?ie=UTF8&amp;amp;n=229816&amp;amp;s=music&amp;amp;qid=1193245375&amp;amp;sr=8-1"&gt;&lt;img height="240" alt="The Wombats Proudly Present..A Guide To Love, Loss and Desperation" src="http://ecx.images-amazon.com/images/I/51-G%2BKKeK-L._AA240_.jpg" width="240" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The Wombats - The Wombats Proudly Present..A Guide To Love, Loss and Desperation&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8005805362188214141?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8005805362188214141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8005805362188214141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8005805362188214141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8005805362188214141'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/11/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3767344301184537030</id><published>2007-10-24T18:18:00.001+01:00</published><updated>2007-10-24T18:18:24.707+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://www.amazon.co.uk/gp/product/images/B000W03O8I/ref=dp_image_0/203-7969397-4169513?ie=UTF8&amp;amp;n=229816&amp;amp;s=music"&gt;&lt;img height="240" alt="Overpowered" src="http://ecx.images-amazon.com/images/I/51ULOruaNIL._AA240_.jpg" width="240" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Overpowered - Roisin Murphy&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c203a869-3a6f-4c97-9dca-96280602c227" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Roisin%20Murphy" rel="tag"&gt;Roisin Murphy&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Overpowered" rel="tag"&gt;Overpowered&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3767344301184537030?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3767344301184537030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3767344301184537030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3767344301184537030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3767344301184537030'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/this-week-i-have-been-mostly-listening_24.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-836882105275974827</id><published>2007-10-24T18:01:00.001+01:00</published><updated>2007-10-24T18:01:45.675+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Organising SSIS</title><content type='html'>&lt;p&gt;I think this has probably been blogged about and documented elsewhere to death but it's well worth posting something about (even as a reminder to myself).&lt;/p&gt; &lt;p&gt;SSIS package configuration is great but as always, as people use something heavily, its usage gets more sophisticated and so do the problems. One thing I like is to be able to centrally log and also centrally get configuration values but to do this I need to be able to support multiple environments (dev, test, etc.) and also multiple applications (the same variable used in different packages). This is where I've found the configuration to be little limited so in true developer fashion we came up with an alternative configuration mechanism. I won't go into the details but effectively we get all configuration values from a call to a database.&lt;/p&gt; &lt;p&gt;The only problem with this is that I want to be able to tell the package where the configuration database is, what environment I'm executing in or the application name I'm running under but I can't do that with hard coding a config file into the package. Of course there are alternatives. A number of server variables or registry entries but really I just want to do this the once and have control over everything else.&lt;/p&gt; &lt;p&gt;In my perfect world I would want to structure my data in something similar to this;&lt;/p&gt; &lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/OrganisingSSIS_ABAE/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="166" alt="image" src="http://oneleg.fastmail.fm/BlogImages/OrganisingSSIS_ABAE/image_thumb.png" width="194" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This contains pretty much everything I need all in a single location. I can have multiple configuration files for different SSIS based systems, a place for source files and if I wanted to drop in XSD files I could create a new folder or just stick it in a suitable existing location. But this is when these little issues creep in.&lt;/p&gt; &lt;p&gt;How do I tell my package where the SSISRoot folder is? I don't want to use configuration files as that defeats the object of having a single location where I keep my configuration files, very chicken and egg. So what alternatives are there? An environment variable can be used to point to the config file location but then I need an environment variable for every config file I have once again defeating the object. What about creating an environment variable that points to SSISRoot, that would deliver what I need. I tried this. I created the variable and called it from Start&amp;gt;Run %SSISRoot%, it worked and I get the folder location that I wanted. The next thing to do was to put "%SSISRoot%/Config/SSISConfigFile.dtconfig" into the path for the file however that had little success, and when I say little I mean none whatsoever.&lt;/p&gt; &lt;p&gt;So I'm back to square one. Hard coding the package config file into the packages. This is one of those issues I would be grateful to hear any clever workarounds that anyone has so please let me know as this is getting increasingly frustrating.....!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0857d83e-1a4b-43ea-84ee-f1484fb3c2b1" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SSIS" rel="tag"&gt;SSIS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Organise" rel="tag"&gt;Organise&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-836882105275974827?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/836882105275974827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=836882105275974827' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/836882105275974827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/836882105275974827'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/organising-ssis.html' title='Organising SSIS'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-45163554358610828</id><published>2007-10-11T14:26:00.001+01:00</published><updated>2007-10-11T14:26:50.192+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><title type='text'>UPDATE to Multiple Pick List Filters in PPS 2007? Get RTM, Quickly..!</title><content type='html'>&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fc78a211-474d-419d-beac-863481827c04" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/PerfromancePoint" rel="tag"&gt;PerfromancePoint&lt;/a&gt;, &lt;a href="http://technorati.com/tags/PPS" rel="tag"&gt;PPS&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Yesterday I was over the moon with joy after finding that the RTM version of PPS solved my little issue. How wrong I was as performing the upgrade on another server presented me with exactly the same problem.&lt;/p&gt; &lt;p&gt;After some mad panicking and searching for a solution we discovered that the version of PAS on the PPS virtual PC was different to the version on our server. Another little hunt around presented us with this....&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=AB98CEBD-6466-4C35-8E23-A0C38928A9AD&amp;amp;displaylang=en" target="_blank"&gt;Microsoft ProClarity Analytics Server 6.3.2209 Hotfix&lt;/a&gt;&lt;/p&gt; &lt;p&gt;...which subsequently lead us to...&lt;/p&gt; &lt;p&gt;&lt;a href="http://support.microsoft.com/?kbid=936989" target="_blank"&gt;A hotfix rollup package is available for ProClarity Analytics Server 6.3&lt;/a&gt;&lt;/p&gt; &lt;p&gt;...and tucked away on there was this little gem...&lt;/p&gt; &lt;blockquote&gt; &lt;h5&gt;Issues that this hotfix rollup package fixes&lt;/h5&gt; &lt;p&gt;This hotfix rollup package fixes the following issues:&lt;/p&gt; &lt;p&gt;&lt;font color="#333333" size="2"&gt;blah&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#333333" size="2"&gt;blah &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#333333" size="2"&gt;blah&lt;/font&gt;&lt;/p&gt; &lt;p&gt;When you run a query in Microsoft SQL Server Analysis Services, the query takes a long time if multiple parameters are specified. Additionally, the query may time out in Internet Information Services (IIS).&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Hey presto it all behaves itself now. &lt;/p&gt; &lt;p&gt;To summarise, you don't have to install the RTM PerformancePoint Server to get rid of the poorly performing MDX, just patch PAS but I would still recommend getting it for things like better performance on the UI and the fact it now supports integration of Reporting Services on SharePoint.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:52a85b8e-d04f-4ca7-ab6b-9a4c7d59c4c7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/PerformancePoint" rel="tag"&gt;PerformancePoint&lt;/a&gt;, &lt;a href="http://technorati.com/tags/PPS" rel="tag"&gt;PPS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Monitoring" rel="tag"&gt;Monitoring&lt;/a&gt;, &lt;a href="http://technorati.com/tags/MDX" rel="tag"&gt;MDX&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-45163554358610828?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/45163554358610828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=45163554358610828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/45163554358610828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/45163554358610828'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/update-to-multiple-pick-list-filters-in.html' title='UPDATE to Multiple Pick List Filters in PPS 2007? Get RTM, Quickly..!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-1478532600431192407</id><published>2007-10-10T16:35:00.001+01:00</published><updated>2007-10-10T16:59:55.167+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><title type='text'>Multiple Pick List Filters in PPS 2007? Get RTM, Quickly..!</title><content type='html'>&lt;p&gt;PerformancePoint Server 2007 RTM has been up on MSDN subscriber downloads for a while now, well several days anyway, so I would imagine there aren't too many people who haven't got hold of it who are doing some serious mucking around in PPS.&lt;/p&gt; &lt;p&gt;If you're one of those people who are on the CTP but don't have access to the RTM then this may be of some interest.&lt;/p&gt; &lt;p&gt;As some of you may be aware one of the report types you can embed into a PerformancePoint dashboard is a Proclarity Analytics Server Page. This effectively provides the user with a Proclarity briefing book allowing some interactivity and as with almost all report types within PPS filters can be applied externally by PPS allowing say a PPS analytics grid, PAS page or reporting services report to all be displayed with the same parameters / dimension members being passed through.&lt;/p&gt; &lt;p&gt;The particular filter type that this post is concerned with are multi-selects. This is a typical dimension selection technique you've seen in plenty of tools before so I won't teach you to suck eggs on that one. Anyway, to cut a long story short after the dashboard has been published it's possible to preview the dashboard with your embedded PAS based report and filters.&lt;/p&gt; &lt;p&gt;Select a single member from your filter and apply and the report return pretty quickly, not lightening fast but remember this a CTP and debugging is switched on etc. so that has to be taken into account. Select 2 members from the filter and when the report is say performing a non empty on a dimension with members numbering in the thousands, it takes a little longer than it should, in fact uncomfortably longer.&lt;/p&gt; &lt;p&gt;Profile the poor performing MDX and here's what you get....&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;WITH&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;SET&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; [&amp;lt;##&amp;lt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: black; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;SET&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: black; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;!smchugh!{E3EF8F62-CD2B-422D-881F-ABAFB4AA3E16}&amp;gt;##&amp;gt;] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: black; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;AS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;'{[Product].[Product Categories].[Subcategory].&amp;amp;[31]}'&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;SET&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; [&amp;lt;##&amp;lt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: black; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;SET&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: black; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;!smchugh!{844FB37C-1DA6-4536-B7A4-297650572576}&amp;gt;##&amp;gt;] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: black; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;AS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;'{[Product].[Product Categories].[Subcategory].&amp;amp;[1]}'&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;MEMBER&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; [Product].[Product Categories].[&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;All&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Products].[ Aggregation] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;AS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;' &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;AGGREGATE&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;( &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;EXISTING&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt; { [&amp;lt;##&amp;lt;SET!smchugh!{E3EF8F62-CD2B-422D-881F-ABAFB4AA3E16}&amp;gt;##&amp;gt;], &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&amp;lt;##&amp;lt;SET!smchugh!{844FB37C-1DA6-4536-B7A4-297650572576}&amp;gt;##&amp;gt;] }) '&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;SOLVE_ORDER&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; = 0&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;NON&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;EMPTY&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; { [Measures].[Internet Tax Amount], [Measures].[Internet &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;Order&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Quantity] } &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;PROPERTIES PARENT_UNIQUE_NAME, MEMBER_TYPE ON COLUMNS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; ,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;NON&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;EMPTY&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; { [Customer].[Customer].[&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;All&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Customers].&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: maroon; font-family: 'Courier New'; mso-no-proof: yes"&gt;CHILDREN&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;PROPERTIES PARENT_UNIQUE_NAME, MEMBER_TYPE ON ROWS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;FROM&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;[Adventure Works] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;WHERE&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;( [Product].[Product Categories].[&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;All&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Products].[ Aggregation] ) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;CELL PROPERTIES VALUE, FORMATTED_VALUE, CELL_ORDINAL &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: 18pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Take particular notice of the new member called [ Aggregation] that uses the 2 sets. If they are stripped out then and the MDX run in a much more sensible manner such as ....&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;WITH&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;MEMBER&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; [Product].[Product Categories].[&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;All&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Products].[ Aggregation] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;AS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;' &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;AGGREGATE&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;( &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;EXISTING &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;{&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Product].[Product Categories].[Subcategory].&amp;amp;[31], &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Product].[Product Categories].[Subcategory].&amp;amp;[1]}) '&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;SOLVE_ORDER&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; = 0&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;SELECT&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;NON&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;EMPTY&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; { [Measures].[Internet Tax Amount], [Measures].[Internet &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;Order&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Quantity] } &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;PROPERTIES PARENT_UNIQUE_NAME, MEMBER_TYPE ON COLUMNS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; ,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;NON&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;EMPTY&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; { [Customer].[Customer].[&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;All&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Customers].&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: maroon; font-family: 'Courier New'; mso-no-proof: yes"&gt;CHILDREN&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;PROPERTIES PARENT_UNIQUE_NAME, MEMBER_TYPE ON ROWS&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;FROM&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;[Adventure Works] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;WHERE&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;( [Product].[Product Categories].[&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb; mso-bidi-font-size: 11.0pt"&gt;All&lt;/span&gt;&lt;span style="font-size: 7.5pt; color: #333333; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt; Products].[ Aggregation] ) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 7.5pt; color: blue; font-family: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: en-gb"&gt;CELL PROPERTIES VALUE, FORMATTED_VALUE, CELL_ORDINAL &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;...same data returned but with a massive time difference. It's worth actually running both these queries on [Adventure Works] as it's a good indication as to what a difference little changes in your MDX can make.&lt;/p&gt; &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;Suffice to say the second query is now how it's structured in PerformancePoint Server 2007 RTM so it's well worth getting this installed as soon as possible as not only will queries return faster but some nasty timeouts on your dashboard will be avoided.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:879d69c8-4c1d-4eed-8347-084cfd84860d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/PerformancePoint" rel="tag"&gt;PerformancePoint&lt;/a&gt;, &lt;a href="http://technorati.com/tags/PPS" rel="tag"&gt;PPS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Monitoring" rel="tag"&gt;Monitoring&lt;/a&gt;, &lt;a href="http://technorati.com/tags/MDX" rel="tag"&gt;MDX&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-1478532600431192407?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/1478532600431192407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=1478532600431192407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1478532600431192407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/1478532600431192407'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/multiple-pick-list-filters-in-pps-2007.html' title='Multiple Pick List Filters in PPS 2007? Get RTM, Quickly..!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5478655106843925225</id><published>2007-10-10T12:48:00.001+01:00</published><updated>2007-10-10T17:56:32.947+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PPS'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualisation'/><title type='text'>PPS CTP4 VPC DOA</title><content type='html'>&lt;p&gt;If there weren't enough acronyms in the world already....&lt;/p&gt; &lt;p&gt;A little tip from a colleague who has been working closely with Performance Point Server over last couple of months and had the misfortune to use the Virtual PC from Microsoft to demo the toolset.&lt;/p&gt; &lt;p&gt;It performs like a dog. I can confirm this as I'm watching it "not respond" for no reason after an "indeterminable" amount of time. After somebody complained about this they were told that you have to defrag the hard drive within the virtual PC 10 times. I'm currently on defrag number 5 of 10.....&lt;/p&gt; &lt;p&gt;8 out of 10.....&lt;/p&gt; &lt;p&gt;10 out of 10.....&lt;/p&gt; &lt;p&gt;......&lt;/p&gt; &lt;p&gt;......&lt;/p&gt; &lt;p&gt;......&lt;/p&gt; &lt;p&gt;Well after a little play around I have to admit to some non-scientifically measured performance benefits that have been noted, oh, until it crashed on me with the dashboard designer deciding that the task of saving needed 100% CPU and to deny any interaction whatsoever. &lt;/p&gt; &lt;p&gt;Unfortunately what I cannot answer with any clarity is....&lt;/p&gt; &lt;ul&gt; &lt;li&gt;9 clicks will make it perform worse.  &lt;li&gt;11 clicks will make it perform better, or worse.  &lt;li&gt;the dashboard designer needs a quad core xenon to save anything......&lt;/li&gt;&lt;/ul&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:996f7cdb-575a-4c51-9356-cecdd05216a6" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/PPS" rel="tag"&gt;PPS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/PerformancePoint" rel="tag"&gt;PerformancePoint&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Budgeting%20and%20Planning" rel="tag"&gt;Budgeting and Planning&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5478655106843925225?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5478655106843925225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5478655106843925225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5478655106843925225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5478655106843925225'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/pps-ct4-vpc-doa.html' title='PPS CTP4 VPC DOA'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-6913076421617972443</id><published>2007-10-09T11:04:00.001+01:00</published><updated>2007-10-10T17:23:46.058+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><title type='text'>Reporting Services and Virtual Directories, a Warning</title><content type='html'>&lt;p&gt;Just a very quick post to make people aware of a little thing that happens with reporting services when you install it on a server and install it under the same virtual directory (e.g. you install it on a SharePoint server and don't allow SharePoint to control the reporting server, e.g. when you have Performance Point Server 2007 CTP4 and are using it with reporting services - mail me if it's confusing).  &lt;p&gt;We found that Report Manager (http://servername:1234/reports) worked correctly but any access via the web service (http://servername:1234/reportserver) would return an error along the lines of...  &lt;p&gt;&lt;em&gt;Microsoft.ReportingServices.UI.WebControlConnection, &lt;br&gt;ReportingServicesWebUserInterface, Version=9.0.242.0, Culture=neutral, &lt;br&gt;PublicKeyToken=89845dcd8080cc91 does not implement &lt;br&gt;IReportServerConnection or could not be found&lt;/em&gt;  &lt;p&gt;Spurious to say the least. The solution for us was to remove a couple of lines from the web.config file within the &amp;lt;appsettings&amp;gt; tag in the reporting services virtual directory...  &lt;p&gt;&lt;em&gt;&amp;lt;add key="ReportViewerServerConnection" &lt;br&gt;value="Microsoft.ReportingServices.UI.WebControlConnection, &lt;br&gt;ReportingServicesWebUserInterface, Version=9.0.242.0, Culture=neutral, &lt;br&gt;PublicKeyToken=89845dcd8080cc91" /&amp;gt; &lt;br&gt;&amp;nbsp; &amp;lt;add key="ReportViewerTemporaryStorage" &lt;br&gt;value="Microsoft.ReportingServices.UI.ReportViewerTemporaryStorage, &lt;br&gt;ReportingServicesWebUserInterface, Version=9.0.242.0, Culture=neutral, &lt;br&gt;PublicKeyToken=89845dcd8080cc91" /&amp;gt;&lt;/em&gt;  &lt;p&gt;This gets the web service running but guess what, reports via the report manager won't work anymore.  &lt;p&gt;The problem, I am reliably informed on 'tinternet, is that web config's are inherited in IIS therefore the reporting services web service web config settings are inherited from the report manager web config which means that the setting you removed is needed for report manager but breaks the web service.  &lt;p&gt;The solution, is to add the values back into the web config for the report manager but make sure that the web config for the web service virtual directory has the value...  &lt;p&gt;&lt;em&gt;&amp;lt;appSettings&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;clear/&amp;gt; &lt;br&gt;&amp;lt;/appSettings&amp;gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Hey presto, both the report manager and the web service now function correctly.&lt;/p&gt; &lt;p&gt;Apologies if my descriptions of web things are a little on the vague side but I'm reading it as it happens.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9f37f4ab-0b62-46ac-8a86-7b110c13a33a" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Reporting%20Services" rel="tag"&gt;Reporting Services&lt;/a&gt;, &lt;a href="http://technorati.com/tags/IIS" rel="tag"&gt;IIS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/web.config" rel="tag"&gt;web.config&lt;/a&gt;, &lt;a href="http://technorati.com/tags/web%20service" rel="tag"&gt;web service&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-6913076421617972443?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/6913076421617972443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=6913076421617972443' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6913076421617972443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/6913076421617972443'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/reporting-services-and-virtual.html' title='Reporting Services and Virtual Directories, a Warning'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3432862596966155159</id><published>2007-10-09T10:05:00.001+01:00</published><updated>2007-10-10T17:37:16.521+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Been Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIHaveBeenMostlyListeningTo_8C46/RadioOneEstablished1967.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="Radio One Established 1967" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIHaveBeenMostlyListeningTo_8C46/RadioOneEstablished1967_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Radio One Established 1967 - Various Artists&lt;/p&gt; &lt;p&gt;(and not just for the Girls Aloud cover of Teenage Dirtbag...)&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:248f484e-5214-42b3-9005-29200dc9f42b" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Music" rel="tag"&gt;Music&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Radio%201" rel="tag"&gt;Radio 1&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Girls%20Aloud" rel="tag"&gt;Girls Aloud&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3432862596966155159?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3432862596966155159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3432862596966155159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3432862596966155159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3432862596966155159'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/this-week-i-have-been-mostly-listening.html' title='This Week I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3154289623492161170</id><published>2007-10-09T09:40:00.001+01:00</published><updated>2007-10-10T17:37:47.681+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQLBits</title><content type='html'>&lt;p&gt;Waking up early on a Saturday morning is not one of my greatest traits but I managed to overcome that weakness to attend SQLBits at the Microsoft campus in Reading at the weekend.&lt;/p&gt; &lt;p&gt;There was a track on BI as well as one on SQL Server 2008 so plenty for everyone to be interested in. The best moments for me were seeing my friend and colleague &lt;a href="http://sqlblogcasts.com/blogs/tsutha/default.aspx" target="_blank"&gt;Sutha&lt;/a&gt; present on managing early arriving facts and the new spatial data types in SQL Server 2008.&lt;/p&gt; &lt;p&gt;I need to go through the details of &lt;a href="http://blogs.msdn.com/keithbu/" target="_blank"&gt;Keith Burns&lt;/a&gt; presentation again before I can post about it with any real conviction but the general consensus within the room was that "right here right now I don't know what I'm going to use this stuff for but I'm going to find a way to implement it". In other words how we developer types define "cool".&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0f23f149-dd89-4f96-aa7f-f37f944ed222" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SQL%20Server%202008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Katmai" rel="tag"&gt;Katmai&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Spatial" rel="tag"&gt;Spatial&lt;/a&gt;, &lt;a href="http://technorati.com/tags/SQLBits" rel="tag"&gt;SQLBits&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3154289623492161170?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3154289623492161170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3154289623492161170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3154289623492161170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3154289623492161170'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/sqlbits.html' title='SQLBits'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-73469353289653321</id><published>2007-10-09T09:07:00.001+01:00</published><updated>2007-10-10T17:38:20.856+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>BIDS and TFS</title><content type='html'>&lt;p&gt;I'm a big fan of Team Foundation Server and how it can be used to better organise analysis, development and delivery. I've been especially impressed with a number of the features of Data Dude (or &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718807.aspx" target="_blank"&gt;Visual Studio 2005 Team Edition for Database Professionals&lt;/a&gt; for the full mouth full), certainly since &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9810808c-9248-41a5-bdc1-d8210a06ed87&amp;amp;displaylang=en" target="_blank"&gt;SR1&lt;/a&gt;, and how, with some work, deployments can be made a lot more efficient.&lt;/p&gt; &lt;p&gt;Let me give you an example. I have multiple environments, dev, UAT and production. All of them will have the same code base but different configuration settings for example we will have a table containing configuration settings or source file locations and these are all likely to change depending on what we are testing or deploying. Now Data Dude allows you to embed variables in your pre and post deployment scripts meaning that I don't have to change anything when it comes to things like allowing a accounts read access to data on dev that should not have read access on prod.&lt;/p&gt; &lt;p&gt;All pretty simple really and well worth installing for these kind of features (notice how I gloss over the cost....!)&lt;/p&gt; &lt;p&gt;Now the point "Visual Studio 2005 Team Edition for Business Intelligence Developers". has a nice ring to it but stick it into &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=%22Visual+Studio+2005+Team+Edition+for+Business+Intelligence+Developers%22&amp;amp;meta=" target="_blank"&gt;Google&lt;/a&gt; and at the time of writing nothing comes back. I can think of a number of scenarios where non intrusive deployment would be useful without have to rely on post deployment XMLA or scripts using rs.exe or even the wonderful package deployment wizard.&lt;/p&gt; &lt;p&gt;Some of the things I've named may not seem too reasonable but should you really have to go a separate utility every time you want to release code having multiple settings depending on the server or the environment or the fact it's a 64bit deployment or not. Analysis Services seems a prime candidate for this kind of behaviour as user access is defines in roles but I don't want to have to define them within role membership then remove them or go to the Analysis Services Deployment Wizard and define different configuration files when I've invested in a nice shiny Team Foundation Server and trained everyone up on it's use.&lt;/p&gt; &lt;p&gt;Anyway I would be most interested in hearing any thoughts on the above subject as this kind of thing is taking up a lot of time and more and more clients are jumping onto the TFS / agile bandwagon one even demanding to know why this can be done with the databases and not the cubes. You see the point..!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1f49f6d3-6a55-4c79-b096-830f8d2846b8" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/release%20management" rel="tag"&gt;release management&lt;/a&gt;, &lt;a href="http://technorati.com/tags/BIDS" rel="tag"&gt;BIDS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/data%20dude" rel="tag"&gt;data dude&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-73469353289653321?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/73469353289653321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=73469353289653321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/73469353289653321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/73469353289653321'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/bids-and-tfs.html' title='BIDS and TFS'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8313478272445444125</id><published>2007-10-09T08:31:00.001+01:00</published><updated>2007-10-10T17:39:11.402+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SAP have BO....!</title><content type='html'>&lt;p&gt;&lt;img alt="Oooooh, the smell..!" src="http://www.bbc.co.uk/wales/northwest/sites/amlwch/images/child200.jpg"&gt; &lt;/p&gt; &lt;p&gt;I couldn't resist the almost register like title for the post....&lt;/p&gt; &lt;p&gt;It appears after many many months of hearsay and conjecture someone is finally going to stump up the cash and buy Business Objects. There's been a lot of talk around this area especially with Hyperion being absorbed by Oracle and further rumors about the future of Cognos.&lt;/p&gt; &lt;p&gt;Microsoft seem to be content with buying the smaller players and partnering with the similar smaller vendors to compliment their own technologies and now they've gone their own route for budgeting and planning it seems very unlikely they will do anything else but carry on that trend.&lt;/p&gt; &lt;p&gt;It will be interesting to see what effect this has, if any, on the close ties that SAP and Microsoft have had recently. We shall see.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1728904c-81bc-40f4-85fe-69788e673554" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SAP" rel="tag"&gt;SAP&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Business%20Objects" rel="tag"&gt;Business Objects&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Business%20Intelligence" rel="tag"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Vendor" rel="tag"&gt;Vendor&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8313478272445444125?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8313478272445444125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8313478272445444125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8313478272445444125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8313478272445444125'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/10/sap-have-bo.html' title='SAP have BO....!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2824612681619081930</id><published>2007-09-26T09:07:00.001+01:00</published><updated>2007-10-10T17:39:37.235+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I Have Mostly Been Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIHaveMostlyBeenListeningTo_805E/AirTrafficFracturedLife.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="AirTraffic-FracturedLife" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIHaveMostlyBeenListeningTo_805E/AirTrafficFracturedLife_thumb.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Air Traffic - Fractured Life&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:2fd61eaf-3947-4aea-a55a-f28b5dc2aad4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Air%20Traffic" rel="tag"&gt;Air Traffic&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Music" rel="tag"&gt;Music&lt;/a&gt;, &lt;a href="http://technorati.com/tags/2007" rel="tag"&gt;2007&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2824612681619081930?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2824612681619081930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2824612681619081930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2824612681619081930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2824612681619081930'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/09/this-week-i-have-mostly-been-listening.html' title='This Week I Have Mostly Been Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5481034979934001068</id><published>2007-09-26T08:50:00.001+01:00</published><updated>2007-10-10T17:52:51.639+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Developing with MDM</title><content type='html'>&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:bdac3e38-cf5a-476b-8308-b7bcd4183c4c" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SSIS%202008" rel="tag"&gt;SSIS 2008&lt;/a&gt;, &lt;a href="http://technorati.com/tags/MDM" rel="tag"&gt;MDM&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Bulldog" rel="tag"&gt;Bulldog&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Stratature" rel="tag"&gt;Stratature&lt;/a&gt;&lt;/div&gt; &lt;p&gt;There has been some recent announcements on Microsoft's acquisition of Stratature that have begun to solidify their approach and roadmap for Master Data Management. The MDM tools, as most people had previously guessed, will be very much aligned with the Office toolset and made part of the SharePoint. Personally I think the key thing about this is how this data will be accessed in my day to day job pulling data from here and putting there for user consumption.&lt;/p&gt; &lt;p&gt;Jamie Thompson has a &lt;a href="http://www.youtube.com/watch?v=7s7w9pDF9Uo"&gt;video&lt;/a&gt; on YouTube (embedded below) detailing how to consume web services in SSIS 2008. Couple this with &lt;a href="http://www.stratature.com/portals/0/MSMDMRoadmap.pdf"&gt;Bulldog's&lt;/a&gt; (Microsoft's name for absorbing Stratature's EDM+ product) ability to expose the master data and meta data as web services and all kinds of pre-built SOA components become possible.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="53357c8b-5919-4e32-8c25-305d27c17a37:cc728f56-f403-4191-8071-c10bad1e9bed" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;embed src="http://www.youtube.com/v/7s7w9pDF9Uo" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=7s7w9pDF9Uo"&gt;YouTube - Consuming Web Services in SSIS 2008v2&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Although possible with the existing set of tools in SSIS, I would be surprised if a data source component didn't appear at some point for SSIS 2008 that was specifically designed to retrieve master data from Bulldog. After the constant battles I've had getting master data out of organisations due to the cost of managing and maintaining it, having a tool that looks after the work flow and provides simple generic interfaces to the data will be very beneficial indeed.&lt;/p&gt; &lt;p&gt;Bring on the CTP next year....&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5481034979934001068?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5481034979934001068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5481034979934001068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5481034979934001068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5481034979934001068'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/09/developing-with-mdm.html' title='Developing with MDM'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-7452591855839606841</id><published>2007-09-04T08:43:00.001+01:00</published><updated>2007-10-10T17:48:15.091+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>The Last Month or so I Have Been Mostly Listening To...</title><content type='html'>&lt;div id="imageViewerDiv"&gt;&lt;a onclick="return amz_js_PopWin(this.href,'AmazonHelp','width=700,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.co.uk/gp/product/images/B000R7HQVW/ref=dp_image_0/026-6508120-0530829?ie=UTF8&amp;amp;n=229816&amp;amp;s=music" target="AmazonHelp"&gt;&lt;img id="prodImage" height="240" alt="Our Love to Admire" src="http://ec1.images-amazon.com/images/I/512bEEZk6sL._AA240_.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Interpol - Our Love To Admire&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return amz_js_PopWin(this.href,'AmazonHelp','width=700,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.co.uk/gp/product/images/B000MRA7OK/ref=dp_image_0/026-6508120-0530829?ie=UTF8&amp;amp;n=229816&amp;amp;s=music" target="AmazonHelp"&gt;&lt;img id="prodImage" height="240" alt="The Young Knives Are Dead... and Some" src="http://g-ec2.images-amazon.com/images/I/61jrzhxsdvL._AA240_.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Young Knives - The Young Knives Are Dead... and Some&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return amz_js_PopWin(this.href,'AmazonHelp','width=700,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.co.uk/gp/product/images/B000RHR7LG/sr=8-1/qid=1188891665/ref=dp_image_0/026-6508120-0530829?ie=UTF8&amp;amp;n=229816&amp;amp;s=music&amp;amp;qid=1188891665&amp;amp;sr=8-1" target="AmazonHelp"&gt;&lt;img id="prodImage" height="240" alt="Girls and Weather" src="http://ec1.images-amazon.com/images/I/51tD-9AYJxL._AA240_.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Rumble Strips - Girls and Weather&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return amz_js_PopWin(this.href,'AmazonHelp','width=700,height=600,resizable=1,scrollbars=1,toolbar=1,status=1');" href="http://www.amazon.co.uk/gp/product/images/B000NQR892/ref=dp_image_0/026-6508120-0530829?ie=UTF8&amp;amp;n=229816&amp;amp;s=music" target="AmazonHelp"&gt;&lt;img id="prodImage" height="240" alt="Because of the Times" src="http://ec1.images-amazon.com/images/I/41ZDeUNmBBL._AA240_.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kings of Leon - Because of the Times&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:2267eeee-b32d-4ae0-a1bd-8ec163a8d865" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Music" rel="tag"&gt;Music&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-7452591855839606841?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/7452591855839606841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=7452591855839606841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7452591855839606841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7452591855839606841'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/09/last-month-or-so-i-have-been-mostly.html' title='The Last Month or so I Have Been Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2694517761391910804</id><published>2007-09-04T08:33:00.001+01:00</published><updated>2007-10-10T17:51:51.521+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Extended Absence.....</title><content type='html'>&lt;p&gt;After what appears to have been an eternity of non posting (which coincidently seems to occur every August, holidays, V festival etc.). I shall attempt to make up for lost time.&lt;/p&gt; &lt;p&gt;So lets ease into this gently with music posts first....&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:a87cbe9f-0175-434e-83ed-d4553a7dcc51" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/phoenix" rel="tag"&gt;phoenix&lt;/a&gt;, &lt;a href="http://technorati.com/tags/flames" rel="tag"&gt;flames&lt;/a&gt;, &lt;a href="http://technorati.com/tags/return" rel="tag"&gt;return&lt;/a&gt;, &lt;a href="http://technorati.com/tags/triumphant" rel="tag"&gt;triumphant&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2694517761391910804?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2694517761391910804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2694517761391910804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2694517761391910804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2694517761391910804'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/09/extended-absence.html' title='Extended Absence.....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8093316351531499710</id><published>2007-06-29T09:23:00.000+01:00</published><updated>2007-06-29T09:31:31.823+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Sorry it's been a bit quiet...</title><content type='html'>The lack of posts recently is down to my laptop being in the repair shop.....&lt;br /&gt;&lt;br /&gt;No fault of mine just general wear and tear. As soon as I get it back then I'll have some stuff on SQL Server 2008, more MDM bits and some interesting things I've been up to with SharePoint 2007, not forgetting the things that i've been listening to. There's quite a lot of those as we enter festival season and yes I will be making the traditional trip to the V Festival in Chemlsford if anything just to see McFly...! (If you know me you know the truth).&lt;br /&gt;&lt;br /&gt;Laters&lt;br /&gt;&lt;br /&gt;Steve&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8093316351531499710?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8093316351531499710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8093316351531499710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8093316351531499710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8093316351531499710'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/06/sorry-its-been-bit-quiet.html' title='Sorry it&apos;s been a bit quiet...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-11165393277386752</id><published>2007-06-08T12:39:00.001+01:00</published><updated>2007-10-10T17:51:04.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Just when I was about to carry on talking about MDM...</title><content type='html'>&lt;p&gt;...Microsoft go and announce this.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/knight_reign/archive/2007/06/08/microsoft-completes-stratature-acquisition.aspx"&gt;http://blogs.msdn.com/knight_reign/archive/2007/06/08/microsoft-completes-stratature-acquisition.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Looks good for an end to end Microsoft architecture but it will be interesting to see what happens when it's working outside of its comfort zone.....&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0a876c9e-8a31-49b4-b3ef-c7b36d95e569" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://technorati.com/tags/MDM" rel="tag"&gt;MDM&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Metadata" rel="tag"&gt;Metadata&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-11165393277386752?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/11165393277386752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=11165393277386752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/11165393277386752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/11165393277386752'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/06/just-when-i-was-about-to-carry-on.html' title='Just when I was about to carry on talking about MDM...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8522200783391305428</id><published>2007-06-05T08:56:00.001+01:00</published><updated>2007-10-10T17:42:03.003+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>What do they say about boys and their toys....</title><content type='html'>&lt;p&gt;Well now&amp;nbsp; I have my new version of writer I'm&lt;/p&gt; &lt;p&gt;posting like a demon....&lt;/p&gt; &lt;p&gt;Anyway let's get up to speed with some SQL Server 2008 web casts coming in July...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;SQL Server 2008 LiveMeeting Schedule&lt;/strong&gt;  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5559"&gt;Analysis Services - Dimension Design&lt;/a&gt; 06/12/07 11:00 am PDT  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5560"&gt;Change Data Capture&lt;/a&gt; 06/13/07 11:00 am PDT  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5562"&gt;Star Join Query Optimizations&lt;/a&gt; 06/19/07 11:00 am PDT  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5564"&gt;Table Valued Parameters&lt;/a&gt; 06/22/07 11:00 am PDT  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5565"&gt;Declarative Management Framework&lt;/a&gt; 06/26/07 11:00 am PDT  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5566"&gt;MERGESQL Statement&lt;/a&gt; 06/29/07 11:00 am PDT  &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:eec0b35d-a461-4694-a993-c1ac29b8fa81" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SQL%20Server" rel="tag"&gt;SQL Server&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Katmai" rel="tag"&gt;Katmai&lt;/a&gt;, &lt;a href="http://technorati.com/tags/vNext" rel="tag"&gt;vNext&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8522200783391305428?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8522200783391305428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8522200783391305428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8522200783391305428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8522200783391305428'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/06/what-do-they-say-about-boys-and-their.html' title='What do they say about boys and their toys....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-7795195025783193784</id><published>2007-06-05T08:49:00.001+01:00</published><updated>2007-10-10T17:49:26.468+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Windows Live Write Beta 2</title><content type='html'>&lt;img class="" id="ScreenshotIFA" style="margin: 0px" height="342" alt="" src="http://writer.live.com/images/WL/Merchandising/en/gb/betas/writer_screenshot.jpg" width="325"&gt;  &lt;p&gt;I've blogged about it in the past and it's still a great little tool. You can get it from here.....&lt;/p&gt; &lt;p&gt;&lt;a title="http://writer.live.com/" href="http://writer.live.com/"&gt;http://writer.live.com/&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:05efdb72-da9f-4586-95dd-960d1f462994" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Blogging" rel="tag"&gt;Blogging&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Live.com" rel="tag"&gt;Live.com&lt;/a&gt;, &lt;a href="http://technorati.com/tags/writer" rel="tag"&gt;writer&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-7795195025783193784?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/7795195025783193784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=7795195025783193784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7795195025783193784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7795195025783193784'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/06/windows-live-write-beta-2.html' title='Windows Live Write Beta 2'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2471817735755227478</id><published>2007-06-05T08:21:00.001+01:00</published><updated>2007-10-10T17:49:57.351+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><title type='text'>SQL Server 2008...</title><content type='html'>&lt;p&gt;The June CTP is out....&lt;/p&gt; &lt;p&gt;Get it while it's hot....!&lt;/p&gt; &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395"&gt;https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=5395&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:cbbb26a3-8c49-4e12-b878-0517d3fecac2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SQL%20Server%202008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;, &lt;a href="http://technorati.com/tags/SQL%20Server" rel="tag"&gt;SQL Server&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Katmai" rel="tag"&gt;Katmai&lt;/a&gt;, &lt;a href="http://technorati.com/tags/vNext" rel="tag"&gt;vNext&lt;/a&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2471817735755227478?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2471817735755227478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2471817735755227478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2471817735755227478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2471817735755227478'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/06/sql-server-2008.html' title='SQL Server 2008...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4139755198173144836</id><published>2007-05-23T15:39:00.001+01:00</published><updated>2007-05-23T15:40:03.261+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_DC3C/TheRakesTenNewMessages1.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_DC3C/TheRakesTenNewMessages.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The Rakes - Ten New Messages&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4139755198173144836?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4139755198173144836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4139755198173144836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4139755198173144836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4139755198173144836'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/05/this-week-i-am-mostly-listening-to_23.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2539768692281812174</id><published>2007-05-23T15:35:00.001+01:00</published><updated>2007-05-23T15:38:02.270+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>The Evil That is Master / Meta Data - Part 2 (or the one where Steve talks about Ireland..!)</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;In the last post on this subject I talked about some of the key attributes of master data and meta data management and how it is intrinsically synched with what I call the Information or Data lifecycle. Now I would like to elaborate on this and identify some of the advantages that investing in this kind of strategy can provide.&lt;/p&gt;&lt;p&gt;Embarking on corporate wide gathering of all things data requires investment at all levels. Time, effort, money and most importantly commitment are essential. But ensuring a business receives any kind of ROI (return of investment which in the early part of my career I thought meant Republic of Ireland, hence the title) before that kind of commitment takes place can prove daunting and a little difficult to say the least. Let's forget the cons for a moment and look at some examples of the key advantages a data and information strategy can provide.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Everyone on the same page. &lt;li&gt;Information means the same thing throughout the business. &lt;li&gt;Reduced cost of new reporting and / or analytical requirements.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This doesn't look like a very extensive list and to be honest if someone presented me with a pitch like this I would be showing them the exit pretty rapidly but when you further examine the nature of each of these bullets you see that they are rooted incredibly deeply in practically all business processes and systems in place within an organisation. Key to the whole concept is that meta data and master data are not only for use within reporting systems. It's just that any projects that tend to drive this kind of requirement are also implementing some kind of reporting mechanism.&lt;/p&gt;&lt;p&gt;Lets take a step back and look at a simplified implementation of a number of reports. First we gather the requirements for the reports which would be based upon an existing set of data, possibly sheets of paper possibly a database storing transactions. Then the nasty business of performing analysis on said data, conforming it into your existing dimensional structure or creating new dimensions from scratch. On defining the model from which you will base your reporting you can finally start building reports.&lt;/p&gt;&lt;p&gt;So how could we improve this process and reduce the time taken to turn around a reporting requirement. First having some degree of knowledge of the system prior to a reporting requirement coming along would be advantageous but that's not the way the world works. Looking at a single report as a deliverable we would need to understand where the constituent data is sourced from. The report, for example, has customers, geographical breakdown, product type, number of orders and order value. Very simple but already pulling data perhaps from CRM, product catalogue and ordering systems.&lt;/p&gt;&lt;p&gt;When building a picture of the data held within the company it is very important that ownership is established. Who owns the customer data? Who is responsible for maintaining the product catalogue? These are the people that own these data elements within the organisation and are therefore ensuring the quality of not only the data in their own systems but also the reporting that is based on this data.&lt;/p&gt;&lt;p&gt;The point to this is that data quality needs to come from the top down. BI projects are generally just the the catalyst for this but should also be used as means of improvement in the source systems. Too often has data cleansing been hooked on to the back of a BI project and weighed it down with responsibility that should lie elsewhere.&lt;/p&gt;&lt;p&gt;Ok enough of this business type talk of responsibility and stuff. Next time I'm going to go into what master data and meta data are actually made of.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2539768692281812174?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2539768692281812174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2539768692281812174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2539768692281812174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2539768692281812174'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/05/evil-that-is-master-meta-data-part-2-or.html' title='The Evil That is Master / Meta Data - Part 2 (or the one where Steve talks about Ireland..!)'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3055985937689010699</id><published>2007-05-23T15:20:00.001+01:00</published><updated>2007-05-23T15:37:51.309+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Unit Testing SSIS</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;SSIS packages are almost like a mini application in their own right. On most occasions there is one or more input items of data that may consist of either a single variable value or an entire data set. This will follow a transformation or validation process before a final output that could again be in a number of different formats. &lt;p&gt;Unit testing these packages should involve minimal change to the structure or behaviour of the package itself. The risk of influencing the code behaviour through the testing process is as great as an incorrect deployment or missing a particular testing scenario. &lt;p&gt;The most important factor in the process of testing a package is to understand how it will react in controlled circumstances and be in a position to test the success of the anticipated result. Testing this using the natural output of the package, for the reasons discussed previously, will provide the most robust results. &lt;p&gt;Due to some of the current debug limitations of SSIS and taking into account the need to keep the package structure and design static; it is only really possible to effectively test the control flow of a package whilst remaining ‘hands off’. &lt;p&gt;Let's look at a simple package example; &lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/UnitTestingSSIS_98EC/SSISUnitTestingImage15.jpg" atomicselection="true"&gt;&lt;img height="428" src="http://oneleg.fastmail.fm/BlogImages/UnitTestingSSIS_98EC/SSISUnitTestingImage1_thumb3.jpg" width="297" /&gt;&lt;/a&gt; &lt;p&gt;The same type of output would be taken from the other standard control flow tasks. The execute SQL task would have an initial state, a completion state and a resulting success state based on the other outputs. The initial state of &lt;i&gt;n&lt;/i&gt; rows in the destination table before and 0 rows after the step has executed. This is measured by examining the row count in the table before and after execution and comparing the value with the expected result. For the archive file system task all states would be measured using a different mechanism and so on and so forth. &lt;p&gt;Essentially this means that whatever the task there may be numerous methods of gathering the data necessary to confirm whether the test process has been successful. Simplifying the process of measuring the results of a test would make applying a standard testing mechanism far easier to implement. &lt;p&gt;Currently packages provide the ability to perform some manual logging as I've &lt;a href="http://stevemchugh.blogspot.com/2006/08/simple-ssis-logging-part-1-load-id.html"&gt;posted about in past&lt;/a&gt;. This can be used to establish whether tasks have completed successfully or not but where a measurement is needed to confirm this, this type of logging is lacking. For example, truncating a table will not provide you with row count confirming the number of rows affected or the subsequent amount of rows left in the table whilst a delete statement would. It would not be wise to change all truncates to deletes to allow this information to bubble up to the logging process and therefore allow capture of the state of the task before and after execution. &lt;p&gt;There are a number of different ways of trying to perform strict, robust SSIS unit testing of which I've generalised them into 3 options.&lt;/p&gt;&lt;p&gt;First is to create a more robust testing methodology that has processes particularly for unit testing SSIS packages based on the control flow. The success criteria should be based on use cases defined at the package design stage. Testing each of the steps within the control flow of the package with documented pre-execution criteria, expected output and the subsequent result. &lt;p&gt;This does not lend itself to any kind of automated testing approach and would involve stepping through the package control flow and logging the results. &lt;p&gt;The second option allows for the automation of tests and the capture of results but would require another application to control the execution of the process and establish pre-execute criteria in addition to measuring the post-execute result. &lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/UnitTestingSSIS_98EC/SSISUnitTestingImage23.jpg" atomicselection="true"&gt;&lt;img height="561" src="http://oneleg.fastmail.fm/BlogImages/UnitTestingSSIS_98EC/SSISUnitTestingImage2_thumb1.jpg" width="347" /&gt;&lt;/a&gt; &lt;p&gt;Using the unique identifier for each of the control flow tasks, during the pre execute and post execute process of each step a lookup would be made to either a database or configuration file containing the method call that would initiate the processes necessary to prepare the execution and subsequently validate and measure the success on post execute. &lt;p&gt;A change like this would mean integrating a procedure call, perhaps using the CLR, to execute such tasks based on an internal variable indicating that unit test, or debug mode was enabled within the package. Whilst providing a number of advantages in automated testing and capture of the test results there would be a great deal of work required in the preparation of the test. This would all have to be completed in addition to that suggested in the first option as the pseudo code necessary to design each of the test criteria would be based on the use cases defined at the package design stage. &lt;p&gt;The final option would be to remove the more advanced mechanism from option 2. The pre analysis and use case definition would still be required but in this option additional test scripts would be placed in the pre and post execution events of the package. This would mean embedding code into the package that would only be used during unit testing that could possibly be switched off using a similar variable to that in the second option. &lt;p&gt;Thought it would be possible to automate a great deal of the testing for the package it would mean changing the structure or behaviour of the package directly and increase the danger of introducing problems with script tasks that have previously been experienced on 32bit to 64bit transitions. &lt;p&gt;So there you go. There are ways of doing SSIS unit testing. There are even ways of automating the process but it's not a quick win. It doesn't remove the need to establish good formal testing strategies and it certainly isn't going to appear out of a box, well not soon anyway.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3055985937689010699?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3055985937689010699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3055985937689010699' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3055985937689010699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3055985937689010699'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/05/unit-testing-ssis.html' title='Unit Testing SSIS'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-3696275694869921763</id><published>2007-05-16T09:38:00.001+01:00</published><updated>2007-05-23T15:37:27.635+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_8767/ThePigeonDetectivesWaitForMe1.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_8767/ThePigeonDetectivesWaitForMe.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The Pigeon Detectives - Wait For Me&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-3696275694869921763?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/3696275694869921763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=3696275694869921763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3696275694869921763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/3696275694869921763'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/05/this-week-i-am-mostly-listening-to_16.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-230747092833948153</id><published>2007-05-01T15:20:00.001+01:00</published><updated>2007-05-23T15:37:09.940+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_D79E/TheMaccabeesCoulourItIn1.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_D79E/TheMaccabeesCoulourItIn.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The Maccabees - Coulour It In&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-230747092833948153?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/230747092833948153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=230747092833948153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/230747092833948153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/230747092833948153'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/05/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-667821757339693958</id><published>2007-04-03T07:58:00.001+01:00</published><updated>2007-04-03T08:01:50.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>The Evil That is Master / Meta Data - Part 1 (or the one where Steve talks about socks..!)</title><content type='html'>&lt;p&gt;Master data and metadata. A subject close to my heart due to it's significant importance in what I call the data lifecycle. Data? Lifecycle? What on earth is he talking about now, I just wanted to get Oracle talking to SSIS? Well let's go a little off subject here and use a bit of a euphemism.&lt;/p&gt; &lt;p&gt;Take something simple that I think we all learnt at school, the water cycle. This is the continuous movement of water as it shifts location and state from ocean to atmospheric to ground water. Now I liken this to the way data moves through an entity whether it be an organisation or group of systems.&lt;/p&gt; &lt;p align="left"&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/TheEvilThatisMasterDataorhowtopopulatet_7DD0/diag_water_cycle10.gif" atomicselection="true"&gt;&lt;img height="253" src="http://oneleg.fastmail.fm/BlogImages/TheEvilThatisMasterDataorhowtopopulatet_7DD0/diag_water_cycle_thumb8.gif" width="410"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;A good example of this is a common&amp;nbsp;scenario in financial reporting. An accountant (that's the cloud up there) will read their profit and loss report for a particular department and use this as to calculate the following years budget or forecast. These estimates will then be entered into the budgeting and planing system (that would be the mountains, more likely though&amp;nbsp;it's Excel :). The budget and forecast are&amp;nbsp;imported into the data warehouse where the profit and loss report (the ocean perhaps?) is generated which is read by another accountant looking at the companies performance, who........ ad infinitum.&lt;/p&gt; &lt;p&gt;A very typical example but it demonstrates the fact that the behavior of data within an organisation is very organic and in a constant state of flux. Just because the original piece of data is sitting in a table somewhere it doesn't mean it hasn't evolved into a different beast elsewhere with different properties and meanings. Simple as it sounds, this makes life a little complicated when you add influencing factors such as SOX (Sarbanes Oxley) compliance that requires the demonstrability of internal controls. In BI speak this could be someone changing an attribute of a dimension member and proving who did it, when and why. One tiny change which to a developer may be minor but to a CEO moves them from the red to the black, exactly the kind of thing SOX tries to stop.&lt;/p&gt; &lt;p&gt;Now all this talk of oceans, cycles and socks is all very good but doesn't bring us any closer to knowing what the hell to do about managing master and meta data. Ok, lets break down some of things I've mentioned in to some key bullets.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dimension Management&lt;/li&gt; &lt;li&gt;Compliance&lt;/li&gt; &lt;li&gt;Process Flow&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This list identifies some of the major reasons for having and requirements of any meta data and master data management mechanism.&lt;/p&gt; &lt;p&gt;In the next part I'll cover the these elements in more detail and how they can contribute to a more streamlined data strategy.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-667821757339693958?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/667821757339693958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=667821757339693958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/667821757339693958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/667821757339693958'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/04/evil-that-is-master-meta-data-part-1-or.html' title='The Evil That is Master / Meta Data - Part 1 (or the one where Steve talks about socks..!)'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5701541350444153817</id><published>2007-04-02T08:22:00.001+01:00</published><updated>2007-04-03T08:01:27.724+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To....</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_7597/NeonBible1.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_7597/NeonBible.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Arcade Fire - Neon Bible&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5701541350444153817?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5701541350444153817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5701541350444153817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5701541350444153817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5701541350444153817'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/04/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-2994413976012784125</id><published>2007-04-02T08:19:00.001+01:00</published><updated>2007-04-03T08:01:41.661+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>If an Alien Dropped Down, Right Here, Right Now....</title><content type='html'>&lt;p&gt;I have just had the displeasure / pleasure (please delete as necessary) to have spent a little time in Barcelona witnessing the English football teams victory over Andorra.&lt;/p&gt; &lt;p&gt;According to Wikipedia Andorra is a &lt;a href="http://en.wikipedia.org/wiki/Co-principality"&gt;co-principality&lt;/a&gt; with the &lt;a href="http://en.wikipedia.org/wiki/President_of_France"&gt;President of France&lt;/a&gt; and the &lt;a href="http://en.wikipedia.org/wiki/Bishop_of_Urgell"&gt;Bishop of Urgell&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Spain"&gt;Spain&lt;/a&gt; as &lt;a href="http://en.wikipedia.org/wiki/List_of_Co-Princes_of_Andorra"&gt;co-princes&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;According to the majority of the traveling supporter base of the England team, Andorran's are either taxi drivers, estate agents or butchers with the odd police man thrown in for good measure.&lt;/p&gt; &lt;p&gt;So where does the alien in the title come in? Well, the alien that dropped into the Estadi Olimpic on Wednesday night would have probably thought;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The human population is 98% male&lt;/li&gt; &lt;li&gt;The human population is 98% hairless&lt;/li&gt; &lt;li&gt;The human population is unable to construct sentences coherently&lt;/li&gt; &lt;li&gt;The human population are masochists.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;For the love of God, lets hope the aliens go to a Brazil game instead...!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-2994413976012784125?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/2994413976012784125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=2994413976012784125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2994413976012784125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/2994413976012784125'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/04/if-alien-dropped-down-right-here-right.html' title='If an Alien Dropped Down, Right Here, Right Now....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-7548995073052622999</id><published>2007-03-16T15:39:00.001Z</published><updated>2007-03-16T15:42:03.757Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_7C40/TheView1.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_7C40/TheView.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;The View - Hats Off to the Buskers&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-7548995073052622999?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/7548995073052622999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=7548995073052622999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7548995073052622999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/7548995073052622999'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/03/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-339705752893331383</id><published>2007-03-16T15:32:00.001Z</published><updated>2007-03-16T15:41:40.201Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><title type='text'>rsInternalError - Now This One's a Doozy...!</title><content type='html'>&lt;p&gt;If you're running Reporting Services and keep getting random rsInternalErrors that may or may not return errors in the logs concerning things like "There is no data for the field at position &lt;em&gt;n&lt;/em&gt;", before you start to rip apart your reports looking for bugs check the make of the processors on your server.&lt;/p&gt;&lt;p&gt;There is a little problem-ette that manifests itself as these kind of errors when you have AMD processors in your machine. We have 2 servers on a clients site that have the 64bit Opteron chips in that were both demonstrating these errors with different reports, data sources and pretty much anything you can imagine. After a little hunt around the information hyper global mega net we found some newsgroup postings points to this Microsoft knowledge base article.&lt;/p&gt;&lt;p&gt;&lt;a title="http://support.microsoft.com/default.aspx/kb/895980/en-us" href="http://support.microsoft.com/default.aspx/kb/895980/en-us"&gt;http://support.microsoft.com/default.aspx/kb/895980/en-us&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Adding the /usepmtimer switch in the boot.ini file appears, for now, to have cured the problem that was causing very simple reports to fail 20-30% of the time on an under stressed production server.&lt;/p&gt;&lt;p&gt;After my recent problems with &lt;a href="http://stevemchugh.blogspot.com/2007/02/adventures-of-ssis-and-oracle-in-64bit.html"&gt;SSIS 64bit&lt;/a&gt; this was the last thing I needed but suffice to say my cup of joy was overflowing as a dev server that pretty much gave me an rsInternalError on command has worked flawlessly for several hours. If anything changes I'll be sure to mention it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-339705752893331383?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/339705752893331383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=339705752893331383' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/339705752893331383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/339705752893331383'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/03/rsinternalerror-now-this-one-doozy.html' title='rsInternalError - Now This One&amp;#39;s a Doozy...!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4254156446134105947</id><published>2007-02-15T08:48:00.001Z</published><updated>2007-03-16T15:41:17.677Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_7BE7/BlocPartyWITC_1.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_7BE7/BlocPartyWITC_.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Bloc Party - A Weekend in the City&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4254156446134105947?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4254156446134105947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4254156446134105947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4254156446134105947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4254156446134105947'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/02/this-week-i-am-mostly-listening-to_15.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-86753480165206518</id><published>2007-02-06T08:06:00.001Z</published><updated>2007-03-16T15:42:21.216Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Other Blogger's</title><content type='html'>&lt;p&gt;A colleague of mine has started blogging recently mostly in and around the SSIS area and I can categorically say he know what he's talking about.&lt;/p&gt;&lt;p&gt;Check it out here....... &lt;a href="http://colinkirkby.blogspot.com/"&gt;Colin's blog&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-86753480165206518?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/86753480165206518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=86753480165206518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/86753480165206518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/86753480165206518'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/02/other-blogger.html' title='Other Blogger&amp;#39;s'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5502026350556858945</id><published>2007-02-05T14:19:00.001Z</published><updated>2007-02-05T14:21:17.787Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_C96B/ColdWarKids1.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="240" src="http://oneleg.fastmail.fm/BlogImages/ThisWeekIamMostlyListeningTo_C96B/ColdWarKids.jpg" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Cold War Kids - Robbers &amp;amp; Cowards&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5502026350556858945?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5502026350556858945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5502026350556858945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5502026350556858945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5502026350556858945'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/02/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4379339285659500338</id><published>2007-02-05T14:16:00.001Z</published><updated>2007-02-15T13:42:31.684Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>The Adventures of SSIS and Oracle in 64bit Land..!</title><content type='html'>&lt;p&gt;There's plenty of information out there spread out amongst the web concerning migration of packages to a 64b bit platform. I thought in the interests of fellow professionals out there I should share some of my experiences.&lt;/p&gt; &lt;p&gt;Firstly installation. Look at the C: drive on a 64bit Windows Server 2003 installation and you'll notice 2 "Program Files" folders one of which is suffixed (x86). Any 64bit applications are installed in the Program Files folder and 32bit applications are installed in the Program Files (x86) folder. So far so good and pretty simple but this is where you will encounter the first of several problems getting Oracle connectivity to behave on a 64 bit server.&lt;/p&gt; &lt;p&gt;Before I go into any detail here's a list of things that you need to know when you have installed 64bit SQL Server on an x64 server.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Visual Studio (BI Dev Studio)&amp;nbsp;is a&amp;nbsp;32bit application.  &lt;li&gt;SQL Server Management Studio is a 32bit application.  &lt;li&gt;dtexecui.exe is a 32bit application.  &lt;li&gt;dtexec.exe has both 32bit and 64bit versions.  &lt;li&gt;There are x64 and x86 versions of the Oracle provider available.  &lt;li&gt;SQLAgent is a 64bit process.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;OK with all this information&amp;nbsp;let's begin. Firstly if you develop packages on a 32bit platform, which is likely, and you are connecting to Oracle, use the Oracle OLEDB Provider, NOT the Microsoft provider for Oracle. For starters there is no 64bit version of this and secondly MS has no plans to create and support one.&lt;/p&gt; &lt;p&gt;Now you're using the Oracle OLEDB Provider we should be able to avoid a few problems later on although I would like to make note of one problem I had but couldn't find a resolution for. In a project I'm working on we needed to execute an Oracle stored procedure before we could access the data. When we ran the procedure using the MS provider (MSDAORA) everything was fine but as soon as we moved onto the Oracle provider (Oracle.OLEDB.1) the package would just hang as soon it attempted to access Oracle. This magically rectified itself when we moved servers. Just letting you know so beware.&lt;/p&gt; &lt;p&gt;Launching the 64bit Oracle universal installer will provide you with four options. Instant client, runtime, custom or administrator. Now I am not any kind of Oracle expert so I didn't go near the "custom" option and stuck with the other three default selections but I could only get the Administrator install to provide me with a working registered Oracle provider. Now this may work for someone else but on this server, only Administrator worked.&lt;/p&gt; &lt;p&gt;With the Oracle provider installed and my connection string configuration using the Oracle.OLEDB.1 provider there's a series of interesting little test you can run. First create a package that just sucks some data out of an Oracle table and places it in to a row count data flow task. We don't want to do anything, just get the Oracle end of this process working. Execute the package in the following ways;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Double click on the package and execute.  &lt;li&gt;Execute it through the command line interface (using the dtexec.exe in C:\&lt;strong&gt;Program Files (x86)&lt;/strong&gt;\Microsoft SQL Server\..\dtexec.exe".  &lt;li&gt;Execute it through the command line interface (using the dtexec.exe in C:\&lt;strong&gt;Program Files&lt;/strong&gt;\Microsoft SQL Server\..\dtexec.exe".  &lt;li&gt;Execute it as a SQL Server job.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The interesting thing is that the first two methods of executing the package will fail and the second two will be successful. Why? Well this is because a 32bit process cannot see the 64bit drivers. The first method initiates dtexecui.exe which is a 32bit process the same as the dtexec.exe in the (x86) program files folder. Running the process using dtexec.exe in the normal program files directory or as a SQL Server job executes the package as a 64bit process which quite happily sees the 64bit Oracle drivers.&lt;/p&gt; &lt;p&gt;This can prove to be a problem if you want to debug your package as Visual Studio is 32bit and can't see the Oracle drivers meaning you'll get messages about things not being registered even though you know you did. Fortunately you can install the 32bit and 64bit Oracle drivers on the same machine meaning each process type then has the ability to see the Oracle drivers. Run the same four methods of executing our test package and the same thing will happen. The first two will succeed and the second two will fail.&lt;/p&gt; &lt;p&gt;This issue is down to a problem with the Oracle provider. The Oracle provider appears to have a&amp;nbsp;particular dislike of being used by processes that have any mention of a bracket, Program Files (x86) being one of them. So even though you have correctly installed the 32bit Oracle providers on the server, you can't use them. The solution, copy the Microsoft SQL Server folder and Visual Studio folder into a new folder on your C: drive called ProgramFilesx86 and all of a sudden you development environment can see the Oracle drivers and work. You need to use the dtexecui.exe in there as well if you want to interactively execute packages.&lt;/p&gt; &lt;p&gt;Remember though this is only an issue if you need to perform any debug of packages that use Oracle providers on a 64bit server. Quite a specific problem but quite common none the less.&lt;/p&gt; &lt;p&gt;Now you've got over that problem solved(ish) you can start to build beautiful complex packages utilising every control and data flow task available&amp;nbsp;to you. But then you get strange errors. Ones that are centered around script tasks especially BUT not always.&lt;/p&gt; &lt;p&gt;Personally I've had a couple of issues moving packages onto 64bit servers, excluding the Oracle problems mentioned above. First script tasks sometimes need to be recompiled on the 64bit hardware. This is kind of hit and miss but appears to be common in scenarios where you have a template package and you copy and change the definitions in data flows. The recommendation is open up each package and script on 64bit to be on the safe side although I have had a number of occasions where we've had to delete the script task and recreate it get the same code working correctly. Very odd.&lt;/p&gt; &lt;p&gt;This issue doesn't seem to be isolated to script tasks though. Execute package tasks seem to sometimes have similar behavior where reopening the package on the 64bit hardware corrects it.&lt;/p&gt; &lt;p&gt;Overall the benefits of SSIS and 64bit are obvious but be careful during development and if you can't develop in 64bit then try to at least have a server that is 64bit for testing this kind of thing and if you do get any kind of strange issues cropping up, try to bear in mind the apparent inconsistencies in the two platforms.&lt;/p&gt; &lt;p&gt;&lt;u&gt;Update:&lt;/u&gt; &lt;/p&gt; &lt;p&gt;Corrected some spelling mistakes and disgustingly bad grammar..!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0a74c4ed-3260-4546-b59b-412bedaa620e" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/SSIS" rel="tag"&gt;SSIS&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Oracle" rel="tag"&gt;Oracle&lt;/a&gt;, &lt;a href="http://technorati.com/tags/64bit" rel="tag"&gt;64bit&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Provider" rel="tag"&gt;Provider&lt;/a&gt;, &lt;a href="http://technorati.com/tags/OLEDB" rel="tag"&gt;OLEDB&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4379339285659500338?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4379339285659500338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4379339285659500338' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4379339285659500338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4379339285659500338'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2007/02/adventures-of-ssis-and-oracle-in-64bit.html' title='The Adventures of SSIS and Oracle in 64bit Land..!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8231151074399245885</id><published>2006-12-11T18:18:00.001Z</published><updated>2006-12-12T07:36:49.149Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Making The Client Happy - The Real Reason For Yesterdays Post That Rapidly Turned Into Some Kind Of Rant...!</title><content type='html'>&lt;p&gt;If there's one thing that users hate it's being kept in the dark. So communication is essential and to be honest BI is all about communication. Articulating a series of 0's and 1's via OLAP or reporting something tangible that an end user can get real benefit from is what it's all about.&lt;/p&gt; &lt;p&gt;So we have a process that may rely on another process outside of the control of the BI infrastructure. This is a typical scenario and due to the 24 hour worldwide mannerisms of a lot of the BI implementations I've worked with, that process may be smack bang in the middle of someone's working day.&lt;/p&gt; &lt;p&gt;Scenario established, what are the problems we have here. Well first there's the problem of processing whilst people are working but with the performance tuning techniques available to us in the Microsoft BI space that shouldn't have so much of an impact on your user base. Really you just want to delivery new data to the user as quick as possible.&lt;/p&gt; &lt;p&gt;The real problem here is a user not knowing when their new data is available. Does that balance include yesterdays transactions yet or not? A typical question that may get asked in financial departments at month end something that would be asked a lot more regularly than you would like.&lt;/p&gt; &lt;p&gt;So communication is a problem, or lack of anyway&amp;nbsp;(see the way I did that, started off talking about it and brought it round again to the subject, you're impressed, I can tell..!).&lt;/p&gt; &lt;p&gt;What can be done about it? There are a number of clever little things we should be able to do as part of our BI profession. Use our skill set and let the consumers of our data know the data is there to be consumed. First method, deploy a report at the end of processing to the user or send an information e-mail. Database mail in SQL Server 2005 makes this a pretty simple task these days. This could be a standard link telling the user base to go to a reporting services link and open a report telling them what has happened in the data processing. Problem with this though is it is reliant on a patient user base who will happily stare at the mail box until that little shining light of hope gets sent from "SQLSVR978BSMNT" (I do miss the days when there were fewer servers and they had names based on characters from The Simpsons or something like that.).&lt;/p&gt; &lt;p&gt;OK so your client / user isn't patient or it's 4:30 on the Friday before Christmas (topical huh..!), either works, and you don't want to have to go answer 20 calls from finance departments around the world demanding to know where the data is. Let's look at what they need to know. Take a typical end to end process, it may go something like this;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Extract data from one or more source systems.  &lt;li&gt;Process said new data into the warehouse / mart / etc.  &lt;li&gt;Process data into cube.  &lt;li&gt;Distribute reports (or warm cache, it's useful have this catch all at the end)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Now this is high level generalisation of what may be going on but being able to let the uses know this much gives them a massive increase in the perception of the system. Even to just know that the sources system data has not ben extracted empowers the user, if there are aware of where the data is coming from, and why shouldn't they be, to get on the phone and ask New York why their figures haven't been entered yet.&lt;/p&gt; &lt;p&gt;I've already talked about making this happen via sending reports out but lets face it, this isn't the ideal way of doing this when there are numerous users and numerous steps within the process to communicate. So we make the user pro-active. Go to the portal or website and find out what the hold up is or where the problem lies. All we're doing is taken something that has been happening in customer service departments&amp;nbsp; for years and applying it to the BI systems that we put in place and to be honest with our experience we really should know how to provide someone with beneficial information in a number of formats.&lt;/p&gt; &lt;p&gt;So&amp;nbsp;what is my point in all this? There has been an idea bubbling around my head for a few months now around this subject and visualising end to end processes for clients, mostly based on SSIS and the&amp;nbsp;simple logging model I've posted about previously. The idea was to use Visio to expose&amp;nbsp;data in a diagrammatic format to the users showing them something similar to the SSIS control flow, you know greens, reds, yellows. This became all the more interesting after the recent UK BI user group at Reading where &lt;a href="http://www.bvisual.net" target="_blank"&gt;David Parker&lt;/a&gt; was presenting discussing visualising data in Visio, essentially the same topic.&lt;/p&gt; &lt;p&gt;There, that's the idea, now I'm going to put it into practice. Stay tuned and if anyone else has had any experience in doing what I've said then I would be really interested in hearing.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8231151074399245885?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8231151074399245885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8231151074399245885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8231151074399245885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8231151074399245885'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/12/making-client-happy-real-reason-for.html' title='Making The Client Happy - The Real Reason For Yesterdays Post That Rapidly Turned Into Some Kind Of Rant...!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807797436020183</id><published>2006-12-11T07:25:00.000Z</published><updated>2006-12-11T07:25:25.225Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/Raconteurs%20-%20Broken%20Boy%20Soldiers.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/200/Raconteurs%20-%20Broken%20Boy%20Soldiers.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Raconteurs - Broken Boy Soldiers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807797436020183?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807797436020183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807797436020183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807797436020183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807797436020183'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/this-week-i-am-mostly-list_115807797436020183.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4440155285181764614</id><published>2006-11-30T19:13:00.001Z</published><updated>2006-12-11T07:28:34.245Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Making The Client Happy...</title><content type='html'>&lt;p&gt;Being a consultant involves meeting a lot of different people in a lot of different situations. Most of the people I meet are by an large pretty nice but not all. I shall stop there for fear of incriminating myself :).&lt;/p&gt;&lt;p&gt;One thing is consistent throughout everything I do in my job though and that is that I try to deliver the best solution possible within the constraints placed upon me, whether that be ambitious requirements, time, money, equipment, coffee, etc, etc. I do take a certain pride in what I do and the best thing to come out of it at the end is the successful delivery of a project with the users grateful for the spanking new BI implementation my colleagues and myself have put in place. And hey, if you get to play around with a few extra toys then that's a bonus...&lt;/p&gt;&lt;p&gt;This may counter the myth that as a consultant my role is to bleed the client dry and ensure that the people that command my time have enough cash to bathe in asps milk, ordering people to remove all of the blue M&amp;amp;Ms from large jars made from empty Playstation 3 carcasses whilst drinking fine wine made from the grapes of pandas! (In my head I know what I mean).&lt;/p&gt;&lt;p&gt;I do what I do because I'm interested in it and it pays fairly well at the moment. Ideally I would be a tester at a major games developer, but I can't see that happening until the mortgage is paid off, until then I'll just keeping BI-ing my heart out in the interest of the client.&lt;/p&gt;&lt;p&gt;There was a technical reason for this post but I think my rant went on long enough so I'll perhaps share that tomorrow when I've had a chance to investigate further..&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4440155285181764614?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4440155285181764614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4440155285181764614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4440155285181764614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4440155285181764614'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/11/making-client-happy.html' title='Making The Client Happy...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-367082176941706724</id><published>2006-11-30T18:53:00.001Z</published><updated>2006-12-11T07:27:01.235Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Evening After The Night Before....</title><content type='html'>&lt;p&gt;Last night I had the pleasure of attending the 2nd UK BI User Group and happened to ask Chris Webb when the next one might be and he answered probably about 6 months. Now go onto one of the IT job boards and type in BI, SSIS, OLAP or any of the many acronyms that relate to this kind of thing and you'll be overloaded with agencies and other organisations offering large sums of money and incentives to come and join them.&lt;/p&gt;&lt;p&gt;What's my point?&lt;/p&gt;&lt;p&gt;Well with that kind of level of interest in BI over the last 18 months and that interest not looking like it will wane in the foreseeable future I think there are a couple of things that should happen....&lt;/p&gt;&lt;p&gt;Firstly more people should attend, now that may be location as TVP (Microsoft UK, Reading) isn't the easiest of places to get to but MS kindly offer their place so who's going to refuse it.&lt;/p&gt;&lt;p&gt;Secondly more regular, things are moving pretty fast, people are coming out with new tips tricks and ways of adapting and implementing the MS BI platform so surely there are plenty more things that can be discussed, one look at a PASS event shows there a hell of a lot of ideas out there.....&lt;/p&gt;&lt;p&gt;I should do my bit as well I suppose, I could make some Turkey sandwiches to take, there might be some left overs in the next month or so..!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-367082176941706724?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/367082176941706724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=367082176941706724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/367082176941706724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/367082176941706724'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/11/evening-after-night-before.html' title='Evening After The Night Before....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4434542110734264843</id><published>2006-10-17T14:47:00.001+01:00</published><updated>2006-10-17T14:49:01.557+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Failure - Data Source Does not Exist..! - Update</title><content type='html'>&lt;p&gt;I got asked to post the demo project I had mentioned in the original &lt;a href="http://stevemchugh.blogspot.com/2006/08/failure-data-source-does-not-exist.html"&gt;post&lt;/a&gt; a little while ago but unfortunately I had lost it. Luckily I was able to pull enough from memory to build it again and make it available for you pleasure. Whilst not embedded with premier coding standards it certainly provides some direction on how this kind of thing is achievable.&lt;/p&gt;&lt;p&gt;The project is &lt;a href="http://oneleg.fastmail.fm/BlogDownloads/DataSourceDoesNotExist.zip"&gt;here&lt;/a&gt;, any questions then mail me at the &lt;a href="mailto:steve@stevemchugh.com"&gt;usual address&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Apologies for the delay :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4434542110734264843?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4434542110734264843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4434542110734264843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4434542110734264843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4434542110734264843'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/10/failure-data-source-does-not-exist.html' title='Failure - Data Source Does not Exist..! - Update'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807791196205339</id><published>2006-10-15T17:17:00.000+01:00</published><updated>2006-10-17T14:48:42.507+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/MOrning%20Runner%20-%20Wilderness%20is%20Paradise%20Now.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/200/MOrning%20Runner%20-%20Wilderness%20is%20Paradise%20Now.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Morning Runner - Wilderness is Paradise Now&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807791196205339?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807791196205339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807791196205339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807791196205339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807791196205339'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/this-week-i-am-mostly-list_115807791196205339.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-8844351029306340229</id><published>2006-10-05T15:13:00.001+01:00</published><updated>2006-10-05T15:23:29.112+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>A Note From The Editor....</title><content type='html'>&lt;p&gt;Just a little clarification here. I am not a professional Dolphin trainer nor am I an amateur one either although I did once swim with a dolphin in the Florida Keys and found it to be a quite unfulfilling experience as the Dolphin was in a pool that I would consider to be the Dolphin equivalent of one of those Japanese capsule hotels.&lt;/p&gt;&lt;p&gt;The freelance dolphin trainer title comes from a time in my youth when life consisted of doing the things from this song below.&lt;/p&gt;&lt;p&gt;&lt;embed src="http://www.youtube.com/v/LH9RX-zIipI" width="425" height="350" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/p&gt;&lt;p&gt;Thank you for your attention in this matter.&lt;/p&gt;&lt;p&gt;Editor out..!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-8844351029306340229?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/8844351029306340229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=8844351029306340229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8844351029306340229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/8844351029306340229'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/10/note-from-editor.html' title='A Note From The Editor....'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-5221572365089821311</id><published>2006-10-05T14:48:00.001+01:00</published><updated>2006-10-05T14:48:15.968+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Next Gen Blogging</title><content type='html'>&lt;p&gt;I really wish I could blog more but I do find that the things I want to blog about do tend take a large chunk of time so when things come along that make blogging a bit more streamlined, I' first in the queue. Firstly the blogging support in Word 2007 is pretty good but I found it a little restrictive on occasion so now I've switched to Windows Live Writer.&lt;/p&gt;&lt;p&gt;I'm not going to write anything about it but point you in the direction of &lt;a href="http://download.microsoft.com/download/f/9/a/f9a19f2d-cec4-4a25-9b0b-eb9655ea7561/Writer.msi"&gt;this&lt;/a&gt;, where you can get it, and the video below. Direct from YouTube and embedded with a couple of clicks from Live Writer.&lt;/p&gt;&lt;p&gt;Enjoy....&lt;/p&gt;&lt;p&gt;&lt;embed src="http://www.youtube.com/v/yY6gf5aa93E" width="425" height="350" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-5221572365089821311?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/5221572365089821311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=5221572365089821311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5221572365089821311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/5221572365089821311'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/10/next-gen-blogging.html' title='Next Gen Blogging'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-4393538070682363105</id><published>2006-10-04T17:47:00.001+01:00</published><updated>2006-10-04T18:15:15.828+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Simple SSIS Logging - Part 3, Bad, Bad Rows..!</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;It’s all well and good knowing that there has been a failure in your package which has lead to a bleary eyed support technician getting phoned at 3 in the morning but sometimes it’s not really necessary to get Barry (we’ll call him Barry for the purposes of this post) out of bed. Your package may be bullet proof and work perfectly but the nature of data is that it will change and can quite often come back and bite you on the backside. &lt;p&gt;Take for example early arriving facts. When you start integrating a number of systems it is possible for things to start happening that don’t conform to the world according to the system owner. Take the example of an in-house order system operating completely separately to the companies CRM system. During the analysis phase of the data warehousing project it was determined that CRM was the source of Customer ID therefore that’s where customers get created and that’s where customers get maintained. But a new customer phones up and makes an order before the customers details are completed in the CRM mechanism due to one thing or another. Your data warehouse is quite likely to be collecting that fact row before the relevant CRM data has been correctly populated and passed on to the customer dimension. So what happens in your SSIS package when looking up the Customer key for that dimension, well not a hell of a lot. &lt;p&gt;To be fair there are numerous techniques for dealing with early arriving facts. Some involve the population of the Customer ID and retrieval of the key so that when the correct dimension member arrives in the dimension table, its attributes are populated automatically. The problem is that things aren’t always as clear cut as that. You have managed to capture the early arriving fact data and correctly allocate it to members in the Customer dimension but when board reports run that specify a particular customer type the data is incorrect, the numbers don’t roll up and for 24 hours you could be running around like a headless chicken trying to figure out where the missing data has gone, oh that’s until the next day when the customer dimension member is correctly updated and things mysteriously fix themselves . &lt;p&gt;So where does logging fit into all of this? Well knowing that we have an early arriving fact would be a good idea. So we have to log the early arriving fact and let the data pass through to allow it into the fact table. &lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/SimpleSSISLoggingPart3BadBadRows_EC95/SSISLoggingPrt3_Image0115.jpg" atomicselection="true"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="301" src="http://oneleg.fastmail.fm/BlogImages/SimpleSSISLoggingPart3BadBadRows_EC95/SSISLoggingPrt3_Image01_thumb13.jpg" width="400" border="0" /&gt;&lt;/a&gt; &lt;p&gt;This looks quite simple but when you’re trying to handle a number of dimensions and any of these could have early arriving facts then you can get have a lot of data destinations. In addition to all this there is also the fact that each package could have a different error table at each dimension lookup making logging, which should really be centralised and in a defined structure, a little reactive and difficult to deal with. Dealing with this may not be as difficult as it seems though and for the first time I’m going to mention a customer SSIS task that has been written with this in mind. A &lt;a href="http://www.thejoyofcode.com/SSIS_Xmlify_Data_Flow_Task.aspx"&gt;colleague of mine has written a component&lt;/a&gt; for just this type of situation. Whilst I would have liked to have completed all 3 parts of this Simple SSIS Logging piece without referring to any external code, this really does make life a lot easier. The full source code is available on the site and I recommend its download. &lt;p&gt;&lt;a href="http://oneleg.fastmail.fm/BlogImages/SimpleSSISLoggingPart3BadBadRows_EC95/SSISLoggingPrt3_Image027.jpg" atomicselection="true"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="265" src="http://oneleg.fastmail.fm/BlogImages/SimpleSSISLoggingPart3BadBadRows_EC95/SSISLoggingPrt3_Image02_thumb5.jpg" width="405" border="0" /&gt;&lt;/a&gt; &lt;p&gt;The Xmilfy component (to give it its officially christened name) will turn a series of columns and convert them into a single XML column that has some obvious benefits. In the above example the data is then written to a single table in my SSIS logging database which has a data type of XML allowing the data to be viewed in a number of ways. Extra information can be added into the data flow that specifies where the error occurred, the number of rows etc, again creating detailed and useful reporting. Want to know the number of early arriving for a particular package or even a particular dimension, easily done using the data in the table. Finally a warning can be raised using script to inform Barry, remember him, that some data problems occurred but now it’s a warning and can be handed over to the department in charge of wielding the large stick that is used to stop sales people logging sales before the customer is correctly created. Furthermore the system can be automated to alert said department taking Barry completely out of the loop. But wait a second, Barry is now worried about losing his job but luckily he’s been learning SSIS in his spare time. &lt;p&gt;It’s ok people, Barry is fine…!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-4393538070682363105?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/4393538070682363105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=4393538070682363105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4393538070682363105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/4393538070682363105'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/10/simple-ssis-logging-part-3-bad-bad-rows.html' title='Simple SSIS Logging - Part 3, Bad, Bad Rows..!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807785823467124</id><published>2006-10-04T13:32:00.000+01:00</published><updated>2006-09-12T17:17:38.243+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/Boy%20Kill%20Boy%20-%20Civillian.0.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/200/Boy%20Kill%20Boy%20-%20Civillian.0.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Boy Kill Boy - Civilian&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807785823467124?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807785823467124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807785823467124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807785823467124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807785823467124'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/this-week-i-am-mostly-list_115807785823467124.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115955564027618431</id><published>2006-09-29T19:41:00.000+01:00</published><updated>2006-09-29T20:32:08.206+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SQL Server 2005 Metadata</title><content type='html'>H&lt;span xmlns=""&gt;idden in the depths of Microsoft’s useful download division in Redmond is a handy &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=11DAA4D1-196D-4F2A-B18F-891579C364F4&amp;amp;displaylang=en"&gt;pair of utilities&lt;/a&gt; you may have discovered that analyse dependencies within and across SSIS and Analysis Services. The first tool, Dependency Analyzer, examines the meta data contained within SSIS packages and Analysis Services objects collating their inter-dependencies writing the results to a pre-defined database structure.&lt;br /&gt;&lt;p&gt;The second tool is the Dependency Viewer and provides a graphical interface displaying relationships between the analysed objects . &lt;/p&gt;&lt;p&gt;&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/SQL%202005%20Metadata%20Image%201.0.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/400/SQL%202005%20Metadata%20Image%201.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The amount of data is considerable and has some quite powerful possibilities. There has been a distinct gap in the MS BI product set, dependency and data analysis being two key areas that their competitors eulogise in large amounts about. This appears to be the beginning of some gap plugging before the release of Katmai (SQL Server 2007). In the meantime all the source code, examples and even some reporting interfaces are provided in the download.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I’m quite looking forward to plugging this tool into some of my end to end 2005 projects and looking at the results. Once I've got some good examples of how everything integrates together on this I'll post ome of the results.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115955564027618431?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115955564027618431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115955564027618431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115955564027618431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115955564027618431'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/sql-server-2005-metadata.html' title='SQL Server 2005 Metadata'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115955278422008790</id><published>2006-09-29T18:52:00.000+01:00</published><updated>2006-09-29T20:18:34.336+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>Dynamic Partition Creation and Processing – Part 2</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;The &lt;a href="http://stevemchugh.blogspot.com/2006/09/dynamic-partition-creation-and.html"&gt;first part&lt;/a&gt; of this post discussed how to identify whether a partition existed and create a partition dynamically. Although this post is a little on the suck eggs side I thought it would be better to write it for completeness. Processing a package can be performed using the exact same techniques that are used for dynamic partition creation thus the suck eggs comment.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;First let’s look at the XMLA query for processing a partition similar to the one created in the &lt;a href="http://stevemchugh.blogspot.com/2006/09/dynamic-partition-creation-and.html"&gt;previous post&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:Courier New;font-size:10;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Batch&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/analysisservices/2003/engine&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Parallel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Process&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;DatabaseID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Adventure Works DW&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;DatabaseID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CubeID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Adventure Works DW&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;CubeID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;MeasureGroupID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Measure_Group_Name&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;MeasureGroupID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:maroon;"&gt;PartitionID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;200609&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;PartitionID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Type&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;ProcessFull&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Type&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;WriteBackTableCreation&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;UseExisting&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;WriteBackTableCreation&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Process&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Parallel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Batch&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;Note there’s no mention of the partition name anywhere. The partition is processed using its ID and that is all we are really interested in. Replacing just that value in the Source expression in an SSIS Analysis Services Execute DDL Task will point us to the correct partition for processing.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Of course if the entire cube structure is built on the same partition naming strategy then creating s single script to process all of this periods partitions is relatively easy. The added bonus of being able to process partitions in parallel can prove a huge advantage in reducing the time taken to update the cube on whatever schedule you have.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;These examples are based on cubes structured with monthly or period based partitions. Partition strategy is an important subject for both cube querying and processing performance. I’ll leave that to another post but I just wanted to state that employing a rules mechanism that say merged period based partitions into a single year partition whilst creating new partitions on the fly does not need to be a massively complex process. The methods I’ve discussed in the two posts are probably some of the simpler ways of implementing this.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115955278422008790?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115955278422008790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115955278422008790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115955278422008790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115955278422008790'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/dynamic-partition-creation-and_29.html' title='Dynamic Partition Creation and Processing – Part 2'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807759116188294</id><published>2006-09-26T17:09:00.000+01:00</published><updated>2006-09-26T16:28:46.266+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/Young%20Knives%20-%20Voices%20of%20Animals%20and%20Men.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/200/Young%20Knives%20-%20Voices%20of%20Animals%20and%20Men.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Young Knives - Voices of Animals and Men&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807759116188294?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807759116188294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807759116188294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807759116188294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807759116188294'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/this-week-i-am-mostly-listening-to_26.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115928292134464670</id><published>2006-09-26T15:55:00.000+01:00</published><updated>2006-09-29T20:27:50.676+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>Dynamic Partition Creation and Processing – Part 1</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;Processing cubes in SSIS is pretty simple if all you want to do is pick a partition and process it but if that partition is time based, which is quite likely then the partition you process each day, week or month will change. So what are your options?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;First you can change your package each month, or use a variable with the partition name. Probably not the best of options as someone is going to have to physically make the change each month or come up with some clever method of changing your variable using something like VBA, Excel, etc. Inefficient if you ask me and defeating the object. Couple this with creating a years’ worth or partitions or creating them every time a new one is required and the whole task becomes quite laborious.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So what else can be done? My personal favourite is to use dynamic XMLA but this has a few of its own pitfalls you have to be aware of. First let’s look at the XMLA script for creating a partition and some of the key tags you have to be aware of.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Create&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/analysisservices/2003/engine&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ParentObject&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;DatabaseID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Adventure Works DW&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;DatabaseID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;CubeID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Adventure Works DW&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;CubeID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;MeasureGroupID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Fact Internet Sales 1&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;MeasureGroupID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ParentObject&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ObjectDefinition&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Partition&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:maroon;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Internet_Sales_2001&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:maroon;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Internet_Sales_2001&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Annotations&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Annotation&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;AggregationPercent&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Value&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;20&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Value&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Annotation&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Annotations&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Source&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xsi:type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;QueryBinding&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Adventure Works DW&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;DataSourceID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:blue;"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="color:maroon;"&gt;QueryDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;SELECT * FROM [dbo].[FactInternetSales]&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;WHERE OrderDateKey &lt;span style="color:red;"&gt;&amp;amp;lt;&lt;/span&gt;= '184'&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;QueryDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;/&lt;span style="color:maroon;"&gt;Source&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;StorageMode&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Molap&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;StorageMode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ProcessingMode&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Regular&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ProcessingMode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;[Date].[Calendar].[July 2006]&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ProactiveCaching&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;SilenceInterval&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;-PT1S&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;SilenceInterval&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Latency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;-PT1S&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Latency&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;SilenceOverrideInterval&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;-PT1S&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;SilenceOverrideInterval&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ForceRebuildInterval&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;-PT1S&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ForceRebuildInterval&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;AggregationStorage&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;MolapOnly&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;AggregationStorage&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Source&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;xsi:type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;ProactiveCachingInheritedBinding&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;NotificationTechnique&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Server&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;NotificationTechnique&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Source&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ProactiveCaching&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;EstimatedRows&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;1013&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;EstimatedRows&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;AggregationDesignID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;AggregationDesign&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;AggregationDesignID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Partition&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;ObjectDefinition&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Create&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-size:85%;"&gt;&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;Above is the create script of one of the partitions from the Adventure Works cube. There are some obvious elements in there but the ones that you need to be aware of when building your script dynamically are as follows;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ID&lt;/strong&gt; – The most important one. Even though this is the same as the name of the partition there’s a couple of things to remember. Firstly they don’t have to be the same, secondly by default it’s named after the partition name. Why is this important? When you first create a measure group in your Analysis Services project (in Visual Studio) the default partition is named after the measure group name and subsequently the ID. The ID is the unique identifier of a partition within a measure group so if your partitions are named MeasureGroup1_200608, MeasureGroup1_200609 you may find the ID’s are MeasureGroup and MeasureGroup_200609 and processing a partition in XMLA is based on the partition ID.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The partition ID is something you can’t change in an Analysis Services project, well I haven’t found a way yet so in my little world it can’t be changed..! The first thing I would do is create a duplicate partition in the cube design and name it what I would like the ID to be. Once created, you can change the name to whatever you like, the ID won’t be changed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;Name&lt;/strong&gt; element becomes pretty arbitrary but you still need to ensure that every partition you create has a different name, again if you want it to be the same as the ID then name it accordingly.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The final two are the &lt;strong&gt;QueryDefinition&lt;/strong&gt; and &lt;strong&gt;Slice&lt;/strong&gt;. This is where you may have to step back and think about the overall design of cubes and their dimension structures. For the purpose of this post I’m talking about partitions being sliced by date, this is because in my experience that’s how most cubes will get sliced. Where it’s suitable I would try to make the key of the date dimension a meaningful value i.e. 20060926 = 26&lt;sup&gt;th&lt;/sup&gt; September 2006. Before we go into multiple discussions about why this is a good or bad idea stop, it’s something I do, I know its pros and cons but I’ve found it to be beneficial in a hell of a lot of occasions, this example being one of them.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;My QueryDefinition value will be the query that forms the dataset my partition is to be processed from. Generally you’ll see something with a where clause like “WHERE DateKey BETWEEN 20060900 AND 2006999” if the partition is query bound. If the partition is table bound, more than likely you’re using views to distinguish the different data sets. Finally the partition slice. Even though this is documented as being for information purposes only there have been some other well &lt;a href="http://markhill.org/blog/?p=11"&gt;documented&lt;/a&gt; grey areas when not populating it. My recommendation is to put a value in anyway, even if it is for information purposes. The slice value for hmmmm let’s say the September 2006 partition in my cube would look something like this “&lt;span style="font-family:Courier New;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;[Date].[Calendar].[September 2006]&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;“&lt;span style="font-family:Courier New;color:blue;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;or ideally&lt;strong&gt;&lt;span style="font-family:Courier New;color:#0000ff;"&gt; &lt;/span&gt;&lt;/strong&gt;“&lt;span style="font-family:Courier New;"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;[Date].[Calendar].&amp;[200609]&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;“. The key for the slice makes it clear how you need to be considering this kind of thing when designing your dimensions at the data mart as well as OLAP stage as we’re making the month level of the dimension a critical value.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Looking at those key elements of the XMLA statement for creating a partition we get something like this;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;200609&lt;/strong&gt;&amp;lt;/&lt;span style="color:maroon;"&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:maroon;"&gt;&amp;lt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Measure_Group_Name_&lt;strong&gt;200609&lt;/strong&gt;&amp;lt;/&lt;span style="color:maroon;"&gt;Name&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;QueryDefinition&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;SELECT *&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;FROM FactTable&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;WHERE DateKey BETWEEN &lt;strong&gt;200609&lt;/strong&gt;00 AND &lt;strong&gt;200609&lt;/strong&gt;99&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;QueryDefinition&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;[Date].[Calendar].&amp;[&lt;strong&gt;200609&lt;/strong&gt;]&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;Slice&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;Each of the elements has the common value of “200609” which can be replaced allowing partitions to be created before processing, in this is example at month end. To actually execute this code within a SSIS package I populate the Source expression of an Analysis Services Execute DDL task. This can be either done via direct input or variable (selected by the SourceType property). The expression takes the variable, or direct input XMLA, and evaluates it based on any parameters you need to input. The parameters in this case would be replacing any reference with 200609 to correctly create the new partition.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Couple of things to remember when creating expression of XMLA like this, the script will have to be in double quotes and any double quotes within the script will have to be replaced with ‘&lt;span style="font-family:Courier New;"&gt;&lt;strong&gt;\”&lt;/strong&gt;&lt;/span&gt;’. That’s forward slash and double quote.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Finally, before you run the XMLA it would really be good practice to know if the partition already exists before you attempt to create it. AMO (Analysis Management Objects) is the answer to that. The script below, kindly mixed, matched and cribbed from the those lovely Project REAL chaps, will populate a SSIS boolean variable with the answer to whether the partition exists or not. Don’t forget to add AMO as a reference in the SSIS script task.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; System&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; System.Data&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; System.Math&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; Microsoft.SqlServer.Dts.Runtime&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Imports&lt;/span&gt; Microsoft.AnalysisServices &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Public&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Class&lt;/span&gt; ScriptMain&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Public&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Sub&lt;/span&gt; Main()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; WellIsItThere &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Boolean&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ASConnection &lt;span style="color:blue;"&gt;As&lt;/span&gt; ConnectionManager&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ASServer &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ASDatabase &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ASCube &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ASMeasureGrp &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ASPartition &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;String&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;ASPartition = Now().ToString(&lt;span style="color:maroon;"&gt;"yyyyMM"&lt;/span&gt;) &lt;span style="color:green;"&gt;' This will give us “200609”&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;ASConnection = Dts.Connections(&lt;span style="color:maroon;"&gt;"AnalysisServer"&lt;/span&gt;) &lt;/span&gt;&lt;span style="font-size:85%;color:green;"&gt;' This is the name of the connection manager that you're going to connect to in the package&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;ASServer = &lt;span style="color:blue;"&gt;CStr&lt;/span&gt;(ASConnection.Properties(&lt;span style="color:maroon;"&gt;"ServerName"&lt;/span&gt;).GetValue(ASConnection))&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;ASDatabase = &lt;span style="color:blue;"&gt;CStr&lt;/span&gt;(ASConnection.Properties(&lt;span style="color:maroon;"&gt;"InitialCatalog"&lt;/span&gt;).GetValue(ASConnection))&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;ASCube = &lt;span style="color:maroon;"&gt;"Adventure Works"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:green;"&gt;' How you populate this is really up to you&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;ASMeasureGrp = &lt;span style="color:maroon;"&gt;"Internet Sales"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:green;"&gt;' And again the population of this is up to you&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;WellIsItThere = IsPartitionThere(ASServer, ASDatabase, ASCube, ASMeasureGrp, ASPartition)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;Dts.Variables(&lt;span style="color:maroon;"&gt;"PartitionExists"&lt;/span&gt;).Value = WellIsItThere&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;Dts.TaskResult = Dts.Results.Success&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Sub&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Public&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Function&lt;/span&gt; IsPartitionThere(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sServer &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;String&lt;/span&gt;, _&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sDatabase &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;String&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sCube &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;String&lt;/span&gt;, _&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sMeasureGroup &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;String&lt;/span&gt;, _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sPartition &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;String&lt;/span&gt;) &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Boolean&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;color:green;"&gt;' By default, we will assume that it isn't there&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:green;"&gt;' Only if we get all of the way to the end and everything is&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:green;"&gt;' found, will we set it true&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; bIsPartitionThere &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Boolean&lt;/span&gt; = &lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;False&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oServer &lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;New&lt;/span&gt; Microsoft.AnalysisServices.Server&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:green;"&gt;' connect to the server and start scanning down the&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:green;"&gt;' object hierarchy&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;oServer.Connect(sServer)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oDB &lt;span style="color:blue;"&gt;As&lt;/span&gt; Database = oServer.Databases.FindByName(sDatabase)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; oDB &lt;span style="color:blue;"&gt;Is&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Nothing&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Then&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;MsgBox(&lt;span style="color:maroon;"&gt;"Did not find expected database: "&lt;/span&gt; &amp; sDatabase, _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;MsgBoxStyle.OkOnly, &lt;span style="color:maroon;"&gt;"Error looking for partition"&lt;/span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;GoTo&lt;/span&gt; Done&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:blue;"&gt;Else&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oCube &lt;span style="color:blue;"&gt;As&lt;/span&gt; Cube = oDB.Cubes.FindByName(sCube)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; oCube &lt;span style="color:blue;"&gt;Is&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Nothing&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Then&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;MsgBox(&lt;span style="color:maroon;"&gt;"Did not find expected cube: "&lt;/span&gt; &amp;amp; sCube, _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;MsgBoxStyle.OkOnly, &lt;span style="color:maroon;"&gt;"Error looking for partition"&lt;/span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;GoTo&lt;/span&gt; Done&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:blue;"&gt;Else&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oMG &lt;span style="color:blue;"&gt;As&lt;/span&gt; MeasureGroup = _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;oCube.MeasureGroups.FindByName(sMeasureGroup)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; oMG &lt;span style="color:blue;"&gt;Is&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Nothing&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Then&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;MsgBox(&lt;span style="color:maroon;"&gt;"Did not find expected Measure Group: "&lt;/span&gt; &amp;amp; _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;sMeasureGroup, _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;MsgBoxStyle.OkOnly, _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:maroon;"&gt;"Error looking for partition"&lt;/span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;GoTo&lt;/span&gt; Done&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:blue;"&gt;Else&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:green;"&gt;'-- This is the real test -- to see if the partition&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:green;"&gt;' is really there&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oPart &lt;span style="color:blue;"&gt;As&lt;/span&gt; Partition = _&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;oMG.Partitions.Find(sPartition)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Not&lt;/span&gt; oPart &lt;span style="color:blue;"&gt;Is&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Nothing&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Then&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:green;"&gt;' This is the only place to set the value to TRUE&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;bIsPartitionThere = &lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;True&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;If&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;If&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;If&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;If&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Done:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;oServer.Disconnect() &lt;/span&gt;&lt;span style="font-size:85%;color:green;"&gt;' disconnect from the server -- we are done&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;NoConnection:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;Return&lt;/span&gt; bIsPartitionThere&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="font-size:85%;"&gt;Function&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:blue;"&gt;Class&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115928292134464670?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115928292134464670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115928292134464670' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115928292134464670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115928292134464670'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/dynamic-partition-creation-and.html' title='Dynamic Partition Creation and Processing – Part 1'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807736586441742</id><published>2006-09-18T23:22:00.000+01:00</published><updated>2006-09-18T23:25:46.506+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/Captain%20-%20This%20is%20Hazelville.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/200/Captain%20-%20This%20is%20Hazelville.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Captain - This is Hazelville&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807736586441742?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807736586441742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807736586441742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807736586441742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807736586441742'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/this-week-i-am-mostly-listening-to_18.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115806504220709977</id><published>2006-09-12T23:12:00.000+01:00</published><updated>2006-09-18T23:27:57.903+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Simple SSIS Logging - Part 2, Devil in the Detail</title><content type='html'>&lt;span xmlns=""&gt;&lt;span style="font-family:Trebuchet MS;font-size:13;color:#333333;"&gt;&lt;p&gt;Ok so now you know when a package process starts, when it finishes and its final status (See Part 1). What we don’t have is the ability to accurately analyse the individual steps within a package and make effective decisions based on the information available.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;First you will have to decide what you are looking to track within the system. Obviously errors are the most important element as fast resolution is essential. Next should be warnings. The warnings generated within SSIS are key to identifying areas that may have performance issues. A common warning in SSIS would be where a column is brought into from a data source but subsequently not used throughout the package. SSIS will raise a warning at every transformation informing a user that these unused columns may hinder performance but does not effect the final outcome of the package.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For these examples we’re writing our log to a database so it’s necessary to have a structure to hold it. A nice simple structure should let you know the type of alert, timestamp, source task and any other descriptive information (such as error code and error description).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When you have the table structure you can write an insert statement, the most sensible option is of course a stored procedure with a number of parameters serving your needs, something like this;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Courier New;color:#8f3b39;"&gt;usp_WriteSSISEvent @ServerName, @EventType, @SourcePackage, @SourceTask, @ErrorCode, @ErrorDesc, @TimeStamp&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Trebuchet MS;font-size:13;color:#333333;"&gt;&lt;p&gt;So how do these variables get populated? Well for the most control on what gets written and where (and it’s pretty simple to boot, hence the title), I’m first going to put an Execute SQL task in to the OnError event handler. After setting the connection manager set the SQL statement via an expression. If you’ve not done this before it’s a very useful thing to know about but to cut a long story short it’s possible to set any number of task properties via an expression.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The expression will effectively be the constructed SQL statement with your parameters populated via a combination of system variables and direct input. Here’s The statement for an OnError event based on the above stored procedure example.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;color:#8f3b39;"&gt;&lt;p&gt;"EXECUTE [usp_WriteSSISEvent]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;@ServerName = '" + @[System::MachineName] + "'&lt;br /&gt;&lt;/p&gt;&lt;p&gt;,@EventType = '" + "OnError" + "'&lt;br /&gt;&lt;/p&gt;&lt;p&gt;,@SourcePackage = '" + @[System::PackageName] + "'&lt;br /&gt;&lt;/p&gt;&lt;p&gt;,@SourceTask = '" + @[System::SourceName] + "'&lt;br /&gt;&lt;/p&gt;&lt;p&gt;,@ErrorCode = " + (DT_WSTR, 15)@[System::ErrorCode] + "&lt;br /&gt;&lt;/p&gt;&lt;p&gt;,@ErrorDescription = '" + @[System::ErrorDescription] + "'&lt;br /&gt;&lt;/p&gt;&lt;p&gt;,@EventTimeStamp = '" + (DT_WSTR, 30)GETUTCDATE() + "'"&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:13;"&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;Yeah I know it looks a bit of a mess but trust me, this works .&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;The pain with this method is it’s not possible to populate the @EventType via a system variable meaning that you have to populate it manually for each event type you wish to record. The other gotcha is that the system variables differ dependent on the event type. For example of the 4 I usually use, OnError, OnWarning, OnPostExecute and OnPreExecute, only errors and warning have the error code and description. Something to be aware of.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;If you want to see it working then I have an example project all ready to send, just mail me at &lt;a href="mailto:steve@stevemchugh.com?subject=Simple%20SSIS%20Logging%20Part%20Deux"&gt;mailto:steve@stevemchugh.com?subject=Simple%20SSIS%20Logging%20Part%20Deux&lt;/a&gt;&lt;/span&gt;&lt;span style="color:#333333;"&gt; and I’ll send you a copy. It has the database structure as a script so there’s not too much effort involved in having a look.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115806504220709977?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115806504220709977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115806504220709977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115806504220709977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115806504220709977'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/simple-ssis-logging-part-2-devil-in.html' title='Simple SSIS Logging - Part 2, Devil in the Detail'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115808081628368897</id><published>2006-09-12T21:39:00.000+01:00</published><updated>2006-09-12T18:06:56.406+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Yet Another Tip as Cunning as a Fox Who's Just Been Appointed Professor of Cunning at Oxford University</title><content type='html'>SSIS package deployment, in my opinion is a right royal pain in Aris (I'm sure there's some kind of Wiki out there for cockney rhyming slang, there certainly is for Blackadder quotes).&lt;br /&gt;&lt;br /&gt;This became evident whilst trying to successfully deploy password protected packages to folder locations on SSIS servers. So again I came up with a plan to make my life a little more bearable. A plan as as cunning as a fox that used to be professor of cunning at Oxford University, but has moved on, and is now working for the UN at the high commission of international cunning planning..!&lt;br /&gt;&lt;br /&gt;All my SSIS projects, of significant size, now include a package called sys_DeployPackages. This does something very simple. deploys packages. A couple of variables such as the source folder and the destination, the password I want to use to encrypt the packages, the location folder on the SSIS server and hey presto. Put the variables into a config file and then you can deploy the same files to another server with just a double click.&lt;br /&gt;&lt;br /&gt;All this with just the joining of the Execute Process task and dtutil.exe. a combination so cunning you could brush your teeth with it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115808081628368897?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115808081628368897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115808081628368897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115808081628368897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115808081628368897'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/yet-another-tip-as-cunning-as-fox-whos.html' title='Yet Another Tip as Cunning as a Fox Who&apos;s Just Been Appointed Professor of Cunning at Oxford University'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807636960681287</id><published>2006-09-12T19:47:00.000+01:00</published><updated>2006-09-12T17:27:35.486+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To…</title><content type='html'>&lt;a href="http://www.amazon.co.uk/gp/product/images/B000FOPR9A/ref=dp_image_text_0/202-2865570-0067814?ie=UTF8"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/7765/1013/1600/The%20Dears%20-%20Gang%20of%20Losers.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/320/The%20Dears%20-%20Gang%20of%20Losers.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span xmlns=""&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The Dears – Gang of Losers&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807636960681287?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807636960681287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807636960681287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807636960681287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807636960681287'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To…'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115807906064589158</id><published>2006-09-12T17:31:00.000+01:00</published><updated>2006-09-12T17:38:14.800+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Another Little Tip</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;I don’t know if you sometimes have a package that contains lots of execute package tasks. Lord knows I do and often too. This is especially the case when pulling a number of tables out of a source system into a staging database.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Well all those individual packages have to have their properties set and their names changes and quite frankly double clicking on each of those tasks waiting for them to spring into life is something I’m not that keen on.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As an expert in trying to makes life a tad easier I now set the package name property via an expression that cunningly grabs the Integration Server path from a variable along with the task name, the combination of which is the full location of the package on the Integration Server.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;All I have to do then is copy and paste the task X amount of times and change the name of the task to the package I want to execute. Lazy I hear you say, and there was me thinking I was working “smarter”…!&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115807906064589158?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115807906064589158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115807906064589158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807906064589158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115807906064589158'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/09/another-little-tip.html' title='Another Little Tip'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115693364566872161</id><published>2006-08-30T11:26:00.000+01:00</published><updated>2006-08-30T14:32:29.250+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>A little tip...</title><content type='html'>...you know in SSIS when you have to create a parameter based OLE DB command (UPDATE tablename SET column1 = ?, column2 = ?, etc) well an easy way of getting the SQL statement together without the pain of typing those ? in yourself is this.&lt;br /&gt;&lt;br /&gt;Right click on the table in SQL Management Studio and create a script to update the table you’re looking to update. Then do a Ctrl H (search and replace) which then gives you the option to replace based on a wildcard search. Search for “= &lt;*&gt;” and replace with “= ?” and voila one update script ready for pasting into the OLE DB command.&lt;br /&gt;&lt;br /&gt;Mind you it doesn’t help when you then have almost 100 columns to map out :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115693364566872161?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115693364566872161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115693364566872161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115693364566872161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115693364566872161'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/little-tip.html' title='A little tip...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115461817989227633</id><published>2006-08-03T15:51:00.000+01:00</published><updated>2006-08-03T18:08:53.723+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Simple SSIS Logging - Part 1, The Load ID</title><content type='html'>Logging in SSIS gives you plenty of options. You have the built in event handling as well as the purpose built logging options. How this is used tends to be pretty different dependent on what project you’re working on and in the majority of cases you’ll find yourself implementing something very similar every time, then you’ll have to implement something very similar into every package on every project. This is time consuming and a pain and you can lose out on a lot of information that to be honest you will need later on for administration.&lt;br /&gt;&lt;br /&gt;Let me break it down into a few simple key elements that I believe are important in BI based SSIS projects. Firstly you need to be able to capture the start and end time of a particular process. Secondly, absolute traceability of the data from the source system interfaces through to the warehouse storage itself. Finally, organising the output from any logging into a known structure for later analysis.&lt;br /&gt;&lt;br /&gt;The concept of a load ID is fairly familiar to anyone moving data out of a source into a staging database, or if you’re skipping the middle man, straight into a warehouse. The load ID can be a unique indicator based on the specific process execution that extracted the data or identifies a number of loads to different tables. In the second case the source dataset itself becomes part of the identifier.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7765/1013/1600/CreatingLoads.4.gif"&gt;&lt;img style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; CURSOR: pointer" alt="" src="http://photos1.blogger.com/blogger/7765/1013/320/CreatingLoads.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Typically the start load process will populate a known table in a logging environment somewhere and return to the package a Load ID. On a recent project this was built in to its own component that had properties such as the connection. The returned Load ID will get tagged onto each of the records that are written in the Data Flow Task. Using this information, along with the data source or file, you have full end to end coverage of where a record came from and where it has ended up in, for the purposes of this say, the staging database.&lt;br /&gt;&lt;br /&gt;Obviously there’s a little more to this than just putting a script at the top and bottom of the control flow but not much more. The structure of the table that both provides the Load ID and logs the start time, end time and also the status of a particular load is pretty simple.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://oneleg.fastmail.fm/BlogImages/LoadTableStructure.gif"&gt;&lt;img style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 450px; CURSOR: pointer; HEIGHT: 69px" height="78" alt="" src="http://oneleg.fastmail.fm/BlogImages/LoadTableStructure.gif" width="469" border="0" /&gt;&lt;/a&gt; &lt;em&gt;&lt;span style="font-size:78%;"&gt;click on image to enlarge&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;There’s a bunch of other information you can attach to this table such as the package name, source server, pretty much anything you like. The important thing is capturing the core data and the real power comes from the reporting available from such a narrow dataset. Add the environment type and you can make comparisons between development, test and production performance. Add in a process identifier and you can see if one of your processes for transforming BI data is affecting a daily load task performed on one of your transactional systems.&lt;br /&gt;&lt;br /&gt;Although this provides a very simple mechanism for logging and tracking SSIS packages, that’s all it does. For even more detailed information and to track problem areas within a package, a whole new level of logging is required. That I’ll go into in another post. I am of the view that structuring logging in this fashion not only provides benefits for administration after us consultant types have cleared off site, but also speeds up implementation when you have a few simple SSIS components and a single logging database to deploy. All this and able to apply the K.I.S.S. * rule to the process.&lt;br /&gt;&lt;br /&gt;* Keep It Simple Stupid&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115461817989227633?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115461817989227633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115461817989227633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115461817989227633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115461817989227633'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/simple-ssis-logging-part-1-load-id.html' title='Simple SSIS Logging - Part 1, The Load ID'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115451428670547237</id><published>2006-08-02T10:51:00.000+01:00</published><updated>2006-08-02T11:24:46.726+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Failure - Data Source Does Not Exist..!</title><content type='html'>One of the SSIS interfaces I have been working on a project pulls data from 10 identically structured databases. The task we had was to pull data for a particular day, supplied via a parent variable, and place the data into a single file for import into the staging database of the BI infrastructure.&lt;br /&gt;&lt;br /&gt;The problem was that if one of the data sources was down, the WAN connection playing up or there was any other problem that would cause one of the data sources to fail, the entire package would fail. We didn’t want this behaviour because the client wanted as much data as possible rather than a complete failure.&lt;br /&gt;&lt;br /&gt;For starters the OLEDB source wasn’t going to help us in this situation so we had to go for a scripted data source and changing the Acquire Connection code with a simple Try-Catch statement. This worked well and does the trick. We can run the entire package without any problems building up the connection string as variables that are passed into the script and connecting to the required single data-source. But then another requirement popped up.&lt;br /&gt;&lt;br /&gt;How do I know when a data-source has failed, I don’t want the package to fail but a warning would be nice and enable us to capture the event in our logging mechanism. Enter the FireWarning method. This little diamond, along with its cousins FireError, FireInformation and FireProgress allows you to place custom entries into the SSIS logging.&lt;br /&gt;&lt;br /&gt;I have an example package built on Adventure Works if anyone wants it and, although quite simple, I have come across a number of instances where connecting to multiple data sources (including flat file connections) where this behaviour is needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115451428670547237?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115451428670547237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115451428670547237' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115451428670547237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115451428670547237'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/failure-data-source-does-not-exist.html' title='Failure - Data Source Does Not Exist..!'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115451213538932372</id><published>2006-08-02T10:41:00.000+01:00</published><updated>2006-08-02T10:48:55.400+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Secret Source of Pleasure..</title><content type='html'>... or not so secret if you check out some of my other links over there --&gt;&lt;br /&gt;&lt;br /&gt;I am the proud owner of a launch day purchased Xbox 360 and in my spare time enjoy the odd thrash on there. My recommnedations at the moment are&lt;br /&gt;&lt;br /&gt;Geomtery Wars - for a quick thrash on the machine.&lt;br /&gt;Table Tennis - so simple yet so enjoyable.&lt;br /&gt;Street Fighter II - coming to Xbox Live Arcade today, god I wasted so much of my time at college on that game..!&lt;br /&gt;&lt;br /&gt;If anyone fancies a round or two on anything my gamertag is one1eg (that's a one in there).&lt;br /&gt;&lt;br /&gt;See you online.&lt;br /&gt;&lt;br /&gt;Steve&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115451213538932372?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115451213538932372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115451213538932372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115451213538932372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115451213538932372'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/secret-source-of-pleasure.html' title='Secret Source of Pleasure..'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115451023640356027</id><published>2006-08-02T10:11:00.000+01:00</published><updated>2006-08-02T10:18:18.640+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7765/1013/200/The%20Rifles%20-%20No%20Love%20Lost.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Rifles - No Love Lost&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115451023640356027?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115451023640356027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115451023640356027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115451023640356027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115451023640356027'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115450827899804603</id><published>2006-08-02T09:42:00.000+01:00</published><updated>2006-08-02T09:58:23.640+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Other Places to go...</title><content type='html'>&lt;p&gt;In my first proper contribution to this years blogging (yeah, yeah, I know) I was going to give a quick overview of some of the blogs I regularly read and why.&lt;/p&gt;&lt;p&gt;First up is a Mark Hill (&lt;a href="http://markhill.org/blog"&gt;http://markhill.org/blog&lt;/a&gt;). I've known Mark for a number of years and worked with him for almost all that time. His blog is in his own words "a ramble through Microsoft BI technologies". Give the guy a little credit here, it's not a ramble but quite an insightful comment on Microsoft’s BI platform and essential viewing if you're looking for information on the problems you'll face implementing large scale SSIS and Analysis Services systems and especially if you're looking to put 64 bit servers within your architecture.&lt;/p&gt;&lt;p&gt;Next is Thiru Sutha's SQL Server 2005 BI blog (&lt;a href="http://tsutha.blogspot.com/"&gt;http://tsutha.blogspot.com/&lt;/a&gt;). Again someone I've know and worked with for a number of years has been working on the same projects as Mark Hill and significantly contributed to stabilising 64 bit SSIS. Definitely worth a viewing and contains some good example SSIS packages for your pleasure in addition to postings on known SSIS bugs.&lt;/p&gt;&lt;p&gt;Chris Webb (&lt;a href="http://cwebbbi.spaces.live.com/"&gt;http://cwebbbi.spaces.live.com/&lt;/a&gt;) is a pretty well known individual in the world of Microsoft business intelligence and is your first port of call if you need to know anything about using MDX in the field. His collaboration in the latest version of MDX Solutions (along with George Spofford amongst others) gives the book a lot more weight and makes it an excellent guide to anyone looking to enhance their MDX knowledge.&lt;/p&gt;&lt;p&gt;Off the BI band wagon slightly here The Joy of Code (&lt;a href="http://www.thejoyofcode.com/"&gt;http://www.thejoyofcode.com/&lt;/a&gt;) is a collaborative blog that includes Josh Twist, a colleague I’ve worked with recently on a SQL Server 2005 BI architecture implementation. Josh is .Net developer by trade but was huge benefit to the projects custom SSIS component development. A number of the SSIS components he worked on are available there with example code for download, some of which I’ll discuss in further detail later along with some recommended applications. &lt;/p&gt;&lt;p&gt;Finally another SSIS orientated blog from Jamie Thomson (&lt;a href="http://blogs.conchango.com/jamiethomson"&gt;http://blogs.conchango.com/jamiethomson&lt;/a&gt;). I have, lets say, borrowed plenty of SSIS code from this site recently and his postings on things like what you could do in DTS but aren’t as obvious in SSIS are very useful for anyone making that transition.&lt;br /&gt;Well that’s it for now hopefully you’ll find these sites as useful as I have.&lt;/p&gt;&lt;p&gt;Steve&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115450827899804603?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115450827899804603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115450827899804603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115450827899804603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115450827899804603'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/other-places-to-go.html' title='Other Places to go...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-115450571589589208</id><published>2006-08-02T08:59:00.000+01:00</published><updated>2006-08-02T09:48:04.120+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Confession of a Freelance Dolphin Trainer...</title><content type='html'>Forgive me Blogger for I have sinned.&lt;br /&gt;&lt;br /&gt;I've slacked in the blogging world in recent months so I thought I would get my ass into gear and whilst my time isn't complete monopolised with the daily grind I thought I would contribute to the amount of information currently in existence.&lt;br /&gt;&lt;br /&gt;The next few post will be general updates on what is happening in my world be it work related or not.....&lt;br /&gt;&lt;br /&gt;Steve&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-115450571589589208?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/115450571589589208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=115450571589589208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115450571589589208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/115450571589589208'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2006/08/confession-of-freelance-dolphin.html' title='Confession of a Freelance Dolphin Trainer...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112809090674512061</id><published>2005-09-30T15:31:00.000+01:00</published><updated>2005-09-30T15:35:06.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>A Storms a Brewing</title><content type='html'>To say things have been quiet on here would be an understatement but there is a very good reason for this, content is going to be moved somewhere else and a lot more of it will be produced (minus the things I'm currently listening to).&lt;br /&gt;&lt;br /&gt;So what more can I say but watch this space............&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112809090674512061?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112809090674512061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112809090674512061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112809090674512061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112809090674512061'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/09/storms-brewing.html' title='A Storms a Brewing'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112479289815564058</id><published>2005-08-23T11:14:00.000+01:00</published><updated>2005-08-23T11:43:57.213+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>Back to the slog</title><content type='html'>After what has been a pretty wasteful month so far culminating in an excessive trip to the &lt;a href="http://www.vfestival.com"&gt;2005 V Festival&lt;/a&gt; I'm back on the more serious subject of work starting with a small tip in Analysis Services that I see get missed a lot on my travels.&lt;br /&gt;You've got a dimension, say a time dimension that has levels of fiscal year, fiscal period and fiscal year. You have 2 cubes, one that looks at data at week level and another looking at period level for one reason or another. On many occasions I've seen a second time dimension added for the period level cube (or similar scenario) when all that needs to be done is disable the fiscal week level in the time dimnesion in the period cube.&lt;br /&gt;It's pretty easy to find, in the cube editor open up the dimnesion whose level you want to disable, highlight the level and in the advanced settings set 'Disabled' to Yes and there you have it, one less dimension, member properties and performance hit to worry about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112479289815564058?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112479289815564058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112479289815564058' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112479289815564058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112479289815564058'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/08/back-to-slog.html' title='Back to the slog'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112418226139557778</id><published>2005-08-16T09:48:00.000+01:00</published><updated>2005-08-16T09:54:00.453+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;img height="160" alt="The Subways - Young For Eternity" hspace="0" src="http://photos1.blogger.com/blogger/7765/1013/1600/The%20Subways%20-%20Young%20For%20Eternity.jpg" width="160" align="center" vspace="10" border="0" valign="center" /&gt;&lt;br /&gt;The Subways - Young For Eternity&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112418226139557778?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112418226139557778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112418226139557778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112418226139557778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112418226139557778'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/08/this-week-i-am-mostly-listening-to.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112290747378028617</id><published>2005-08-01T15:38:00.000+01:00</published><updated>2005-08-01T15:44:33.780+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Normal Service Has Been Resumed</title><content type='html'>My deepest apologies for anyone who takes the slightest bit of notice of this blog but I am currently sitting in the "internet cafe" within the complex I'm staying at in Lanzarote on my honeymoon (there's dedication for you) and have found out that my blog was not functioning in anything but Firefox, whoops. I believe those problems have now been rectified but would appreciate a mail to &lt;a href="mailto:yourblogisrubbish@stevemchugh.com"&gt;yourblogisrubbish@stevemchugh.com&lt;/a&gt; if you spot any other bloopers. As a good friend recently commented, you#ll never be a web developer steve....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112290747378028617?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112290747378028617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112290747378028617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112290747378028617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112290747378028617'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/08/normal-service-has-been-resumed.html' title='Normal Service Has Been Resumed'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-111953438031785435</id><published>2005-07-27T08:45:00.000+01:00</published><updated>2005-08-16T09:48:00.523+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;img height="160" alt="Interpol - Antics" hspace="0" src="http://photos1.blogger.com/blogger/7765/1013/1600/Interpol%20-%20Antics1.jpg" width="160" align="center" vspace="10" border="0" valign="center" /&gt;&lt;br /&gt;Interpol - Antics&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-111953438031785435?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/111953438031785435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=111953438031785435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/111953438031785435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/111953438031785435'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/07/this-week-i-am-mostly-listening-to_27.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-111953423333165905</id><published>2005-07-18T09:35:00.000+01:00</published><updated>2005-08-16T09:47:12.816+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>This Week I am Mostly Listening To...</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;img height="160" alt="Stellastarr - Stellarstarr" hspace="0" src="http://photos1.blogger.com/blogger/7765/1013/1600/Stellastar.jpg" width="160" align="center" vspace="10" border="0" valign="center" /&gt;&lt;br /&gt;Stellastarr - Stellarstarr&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-111953423333165905?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/111953423333165905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=111953423333165905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/111953423333165905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/111953423333165905'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/07/this-week-i-am-mostly-listening-to_18.html' title='This Week I am Mostly Listening To...'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112129089849365092</id><published>2005-07-13T19:58:00.000+01:00</published><updated>2005-07-26T10:04:47.776+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>New W3 Tag</title><content type='html'>&lt;mentalnote&gt;&lt;br /&gt;If you're doing any courses on SQL Server 2005 make sure it's based on the June CTP. &lt;mentalnote/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112129089849365092?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112129089849365092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112129089849365092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112129089849365092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112129089849365092'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/07/new-w3-tag.html' title='New W3 Tag'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112129081020032247</id><published>2005-07-12T21:06:00.000+01:00</published><updated>2005-07-13T22:40:10.203+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Analysis Services'/><title type='text'>2D 3D</title><content type='html'>Last week was a titanic one for me to say the least. My ongoing battle shoe horning Analysis Services data into Reporting Services continues with the completion of another 40 reports to add to the others completed so far on the project I've been working on. &lt;br /&gt;&lt;br /&gt;To try and make my life a little easier I decided to spend a little time working on a way of easily tweaking each report to minimise the amount of work necessary to complete the report suite.&lt;br /&gt;&lt;br /&gt;Bit of background, the report I'm working on has 3 alternate hierarchies in a store dimension which need to be drillable (whilst displaying different subreports at each differing level of each alternate hierarchy). On another axis is a crossjoin of a subset of the measures and what could be best compared to as a product dimension. A better explanation maybe would be to try and visualise the report....&lt;br /&gt;&lt;br /&gt;Standard matrix with the first row group displaying a list of the children of the current store hierarchy parameter value. Row group 2 is a list of the children of current product hierarchy parameter unioned with a list of measures which effectively gives you the sales value for product sub categories A B and C and then things like number of stores and number of units sold for the parent category of A B and C.&lt;br /&gt;&lt;br /&gt;Finally the column group was driven from a named set containing the previous 14 fiscal periods. As I previously said the report was drillable by store but also by product. This meant that a single report to the user was in fact built up of 40 reports linked and passing parameters between themselves to cater for every level in every dimension multiplied by 3 due to the alternate hierarchies.&lt;br /&gt;&lt;br /&gt;What I ended up doing was removing the 'database' fields from the matrix and replacing them with calculated fields meaning I didn't really have to touch the matrix for the changes but only the calculated field for each separate report.&lt;br /&gt;&lt;br /&gt;This may seem like going the long way around but for this requirement and this set of data this was quite literally the only solution and meant I was producing reports in several minutes along with thorough testing. Anyway I just thought I would share that one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112129081020032247?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112129081020032247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112129081020032247' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112129081020032247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112129081020032247'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/07/2d-3d.html' title='2D 3D'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12142612.post-112129064092426533</id><published>2005-07-11T22:36:00.000+01:00</published><updated>2005-07-13T22:37:20.926+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Thursday 7th July</title><content type='html'>It's been quite an eventful past 10 days here. My stag do, London winning the Olympics and finally the bombings in London which has devastated so many innocent people. &lt;br /&gt;&lt;br /&gt;After so many highs it's difficult to conceive how low things can get. Much as I doubt that anyone this statement is directed at will ever see this I just wanted to give my condolences to all the friends and family of the people whose lives were lost because of Thursday’s event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12142612-112129064092426533?l=stevemchugh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stevemchugh.blogspot.com/feeds/112129064092426533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12142612&amp;postID=112129064092426533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112129064092426533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12142612/posts/default/112129064092426533'/><link rel='alternate' type='text/html' href='http://stevemchugh.blogspot.com/2005/07/thursday-7th-july.html' title='Thursday 7th July'/><author><name>Steve</name><uri>http://www.blogger.com/profile/11840051314226786933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://oneleg.fastmail.fm/BlogImages/WeeMee.jpg'/></author><thr:total>0</thr:total></entry></feed>
