<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.adatis.co.uk/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'Utilities'</title><link>http://blogs.adatis.co.uk/search/SearchResults.aspx?o=DateDescending&amp;tag=Utilities&amp;orTags=0</link><description>Search results matching tag 'Utilities'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Boot to VHD – Demo Environments and more</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2012/09/26/boot-to-vhd-demo-environments-and-more.aspx</link><pubDate>Wed, 26 Sep 2012 11:54:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10475</guid><dc:creator>sachatomey</dc:creator><description>&lt;p&gt;A few people have asked me about this recently, so I thought I’d share my approach.&lt;/p&gt;  &lt;p&gt;Creating demo environments, particularly for the MS BI Stack, can be time consuming and a challenge, particularly when you need to take the demo with you and can’t rely on powerful, internal servers and good client internet connectivity.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;A bit of history&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;Initially we used to have a dedicated, decently specced, Demo laptop that would be installed with all the goodies that we would need to demo. This worked until the demo needed to be in two places at once, or you needed to carry around your day-to-day laptop too.&lt;/p&gt;  &lt;p&gt;The solution was to use the demo environment as our day to day workstation but it was massive overkill to have full blown Windows Server running SharePoint with multiple instances of SQL Server etc. and, unless you had a high spec machine, everything was a little laggy.&lt;/p&gt;  &lt;p&gt;The next approach was to carry around a couple of laptop hard disks that you’d swap in and out depending on whether you were demoing or working. This worked well for a good while but did prevent timely demos (no screwdriver, no demo).&lt;/p&gt;  &lt;p&gt;Then we entertained VirtualBox and Hyper-V and other virtualisation tech to run Virtual environments – this was all well and good but the primary downfall of this approach is the fact you need a really high spec machine to run both the host and the virtual environment or performance is going to be a major issue and for demos, you want performance to be good, as good as possible.&lt;/p&gt;  &lt;p&gt;Then we discovered Boot to VHD. I’m not sure when this was first possible and I definitely believe we were late to the game but we’ve been using it for around 12 months, long enough to prove it to be a solid approach to creating and running [not only] demo environments.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Boot to VHD&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;The concept is easy, and “does what it says on the tin”. You create, or acquire a VHD and configure your laptop to Boot directly to the VHD.&lt;/p&gt;  &lt;h3&gt;&lt;font color="#004080"&gt;Advantages&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;1) The VHD can use all the host resources. Under traditional virtualisation approaches you need to split memory and/or processors which impacts performance. So on an 8GB, 2 proc laptop traditionally you would have 4GB, 1 proc for the host and 4GB, 1 proc for the virtual environment. With Boot to VHD the virtual environment can utilise the full 8GB and both processors.&lt;/p&gt;  &lt;p&gt;2) It’s flexible. I have a chunky external HHD containing several different virtual environments for different purposes. I can backup, swap out, replace and roll-back environments in the time it takes to copy a VHD from local to external or vice-versa. You can even share demo environments with you colleagues.&lt;/p&gt;  &lt;p&gt;3) You always have a demo environment to hand. All it takes is a reboot to load up the appropriate environment for those spontaneous demo opportunities.&lt;/p&gt;  &lt;h3&gt;&lt;font color="#004080"&gt;Disadvantages&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;1) You do need to be careful regarding disk space usage and be very disciplined to ensure you always have enough disk space available. If you are running a number of large environments there will be an element of maintenance to ensure everything always fits.&lt;/p&gt;  &lt;p&gt;2) Without resorting to a hybrid approach, you can’t demo a distributed system working together.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Setup&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;So to make use of Boot to VHD, we’ll assume we already have a VHD available and ready for booting to. These can either be created manually, acquired from your internal infrastructure team, or from other third-parties.&lt;/p&gt;  &lt;p&gt;When creating them manually I ALWAYS create “Dynamically Expanding” virtual hard disks. This way, you can actually store more VHD environments on your laptop than you would otherwise.&lt;/p&gt;  &lt;p&gt;Although dynamically expanding disks allow you to store more environments, you will still need to ensure you have enough disk space for the disk to expand into as this will be required at the time of boot up. So, if your VHD is set to a 100GB dynamically expanding disk, (it might only be a 20GB file), but when it’s booted up, it will expand to 100GB, so you will need that space on your hard disk or the boot up will fail.&lt;/p&gt;  &lt;p&gt;1) Copy the VHD to your laptop to a suitable location e.g. C:\VHD&lt;/p&gt;  &lt;p&gt;2) Create a new Boot entry   &lt;br /&gt;Run the following at a command prompt as an Administrator:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;bcdedit /copy {current} /d &amp;quot;&lt;b&gt;&lt;font color="#ff0000"&gt;My New VHD Option&lt;/font&gt;&lt;/b&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Be sure to update the label to something to help you identify the VHD – this label will appear on the boot menu when you reboot.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/image_031495C2.png"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/image_thumb_34A00357.png" width="606" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note the new GUID that has been created.&lt;/p&gt;  &lt;p&gt;3) Using the GUID created for you in the previous step and the location of the VHD, run the following three commands, one after the other&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;bcdedit /set {&lt;font color="#ff0000"&gt;23dd42c1-f397-11e1-9602-923139648459&lt;/font&gt;} device vhd=[&lt;font color="#ff0000"&gt;C&lt;/font&gt;:]&lt;font color="#ff0000"&gt;\VHD\AdatisBI.vhd&lt;/font&gt;      &lt;br /&gt;bcdedit /set {&lt;font color="#ff0000"&gt;23dd42c1-f397-11e1-9602-923139648459&lt;/font&gt;} osdevice vhd=[&lt;font color="#ff0000"&gt;C&lt;/font&gt;:]&lt;font color="#ff0000"&gt;\VHD\AdatisBI.vhd&lt;/font&gt;      &lt;br /&gt;bcdedit /set {&lt;font color="#ff0000"&gt;23dd42c1-f397-11e1-9602-923139648459&lt;/font&gt;} detecthal on&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Note the square brackets around the drive letters, these are required. If you have spaces in your path, or filename, you’ll need to wrap the path, excluding the drive letter, in quotes.e.g.&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;..vhd=[&lt;font color="#ff0000"&gt;C&lt;/font&gt;:]&lt;font color="#ff0000"&gt;&amp;quot;\VHD Path\AdatisBI.vhd&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/clip_image002_3433D062.jpg"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.adatis.co.uk/blogs/sachatomey/clip_image002_thumb_48B91FE0.jpg" width="606" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s all there is to it. Reboot and you should be presented with a new Boot option and away you go.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Troubleshooting&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;When it doesn’t work you generally get a BSOD on boot up. To date I’ve identified two reasons for this:&lt;/p&gt;  &lt;p&gt;1) You don’t have enough disk space for the VHD to expand (The BSOD actually does inform you of this)&lt;/p&gt;  &lt;p&gt;2) You may need to change the SATA Mode configuration in the BIOS. Depending on how and where the VHD was created you may need to change the setting to either ATA or AHCI. If that works, you’ll have to reverse the change to reboot into your physical installation. &lt;/p&gt;  &lt;p&gt;I’ve yet to create a portable (i.e. sharable amongst colleagues) VHD for Windows 8. I have successfully created a Windows 8 VHD but it only currently works on the laptop it was created on, this is unlike any other VHD I have created in the past. If I work out a fix, I will update this post.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Additional Information&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;There are a couple of extra benefits that are worth pointing out.&lt;/p&gt;  &lt;p&gt;1) Once you’ve booted to VHD, your original, physical OS installation drive is reallocated, normally to drive D (Your VHD will assume C drive). This allows you to share files between environments, or as I do, place my &lt;a href="https://apps.live.com/skydrive/app/9a65e47d-606a-4816-a246-90f54bf7a3ea"&gt;SkyDrive&lt;/a&gt; folder on an accessible location on the original, physical drive. This allows me to have SkyDrive installed on VHDs but only have a single copy of the contents on my HDD.&lt;/p&gt;  &lt;p&gt;2) The reverse is true too. You can attach a VHD (from the physical install, or from within another VHD) using the Disk Management tool to access, move or copy files between environments. The disk is expanded at this point so you will need enough disk space to accommodate it.&lt;/p&gt;  &lt;p&gt;3) If disk space is a premium, you can shrink the VHD using a tool such as &lt;a href="http://vmtoolkit.com/files/folders/converters/entry87.aspx"&gt;VHD Resizer&lt;/a&gt;. It doesn’t resize the physical VHD file, but allows you to reduce the size of the virtual hard disk. It also allows you to convert from Fixed to Dynamic disks and vice-versa.&lt;/p&gt;  &lt;p&gt;4) You can remove boot entries with the following (or you can use the System Configuration tool):&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;bcdedit /delete {&lt;font color="#ff0000"&gt;GUID&lt;/font&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;5) I have found this approach so reliable my day-to-day Windows 7 installation is a VHD. I have not noticed any impact to performance. The only thing that I have noticed is that you cannot determine a “Windows Experience Index” when running a VHD – but I can live with that &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.adatis.co.uk/blogs/sachatomey/wlEmoticon-smile_1A5F9A33.png" /&gt;&lt;/p&gt;</description></item><item><title>PerformancePoint Planning: Deleting a Custom Member Property - A Solution</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/11/26/performancepoint-planning-deleting-a-custom-member-property-a-solution.aspx</link><pubDate>Wed, 26 Nov 2008 18:43:36 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7468</guid><dc:creator>sachatomey</dc:creator><description>&lt;p&gt;I had a &lt;font color="#ff0000"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/11/25/performancepoint-planning-deleting-a-custom-member-property.aspx" target="_blank"&gt;bit of a rant&lt;/a&gt;&lt;/font&gt; yesterday about the fact I have had to compromise naming member properties when I&amp;#39;ve inadvertently created them with the wrong data type.&amp;#160; As I mentioned, I found a Dimension attribute collection method in the Planning client assemblies that hinted that it might allow me to delete a member property so I decided to give it a go.&lt;/p&gt;  &lt;p&gt;Below is some really rough and ready C# code that actually does delete a dimension member property.&amp;#160; I will improve the code and probably add it in to my &lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/08/27/performancepoint-server-2007-ppscmd-gui.aspx" target="_blank"&gt;PPSCMD GUI&lt;/a&gt; interface as a &amp;#39;feature pack&amp;#39; bonus at some stage, however, if you are in desperate need for the code to delete a member property, and you can&amp;#39;t wait for PPSCMD GUI v0.2 or PerformancePoint Version 2 (I&amp;#39;m not sure which will come first !) the code is below (&lt;strong&gt;Use at your own risk !!&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;Note:&amp;#160; Replace &amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;MyApp&lt;/strong&gt;&lt;/font&gt;&amp;quot;, &amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;MyDimension&lt;/strong&gt;&lt;/font&gt;&amp;quot;, &amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;MyAttribute&lt;/strong&gt;&lt;/font&gt;&amp;quot;, oh, and the &lt;font color="#ff0000"&gt;&lt;strong&gt;server address&lt;/strong&gt;&lt;/font&gt;, accordingly..&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;    using &lt;/span&gt;Microsoft.PerformancePoint.Planning.Client.Common;
&lt;span style="color:blue;"&gt;    using &lt;/span&gt;Microsoft.PerformancePoint.Planning.Bmo.Core;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ..&lt;br /&gt;&lt;span style="color:green;"&gt;    // Setup the PPS Application Metadata Manager
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;    ServerHandler &lt;/span&gt;serverHandler = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;ServerHandler&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;http://localhost:46787&lt;/strong&gt;&lt;/font&gt;&amp;quot;&lt;/span&gt;);
&lt;span style="color:#2b91af;"&gt;    MetadataManager &lt;/span&gt;manager = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;MetadataManager&lt;/span&gt;();
    manager.ServerHandler = serverHandler;
    manager.ServerHandler.Connect();

&lt;span style="color:green;"&gt;    // Get the system metadata
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;    BizSystem &lt;/span&gt;system = manager.GetSystem(&lt;span style="color:blue;"&gt;true&lt;/span&gt;);

&lt;span style="color:green;"&gt;    // Get hold of the PPS Application
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;    BizApplication &lt;/span&gt;ppsApp = system.Applications[&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;MyApp&lt;/strong&gt;&lt;/font&gt;&amp;quot;&lt;/span&gt;];

&lt;span style="color:green;"&gt;    // Obtain the root model site from the application
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;    BizModelSite &lt;/span&gt;site = ppsApp.RootModelSite;

&lt;span style="color:green;"&gt;    // Obtain the dimension that contains the member property
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;    BizDimension &lt;/span&gt;dimension = site.Dimensions[&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;MyDimension&lt;/strong&gt;&lt;/font&gt;&amp;quot;&lt;/span&gt;];

&lt;span style="color:green;"&gt;    // Obtain the member property
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;    BizDimensionAttribute &lt;/span&gt;attribute = dimension.Attributes[&lt;span style="color:#a31515;"&gt;&amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;MyAttribute&lt;/strong&gt;&lt;/font&gt;&amp;quot;&lt;/span&gt;];

&lt;span style="color:green;"&gt;    // Check out the dimension
&lt;/span&gt;    manager.CheckOut(dimension.Id, dimension.ParentModelSite.Id);

&lt;span style="color:green;"&gt;    // Perform the delete
&lt;/span&gt;    dimension.DeleteDimensionAttribute(attribute, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);

&lt;span style="color:green;"&gt;    // Submit the change
&lt;/span&gt;    manager.SubmitModelSite(ppsApp.Id, dimension.ParentModelSite, Microsoft.PerformancePoint.Planning.Bmo.Interfaces.&lt;span style="color:#2b91af;"&gt;SubmissionType&lt;/span&gt;.Update);

&lt;span style="color:green;"&gt;    // Check in the dimension
&lt;/span&gt;    manager.CheckIn(dimension.Id, dimension.ParentModelSite.Id);&lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;font face="Trebuchet MS"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font color="#ff0000"&gt;&lt;font face="Trebuchet MS"&gt;Update:&amp;#160; I&amp;#39;ve since discovered that you can obtain an unsupported utility from Microsoft Support that reportedly does the same thing, doh !  &lt;br /&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;Oh well, always nice to have the code ..&lt;/font&gt;&lt;font face="Wingdings" size="3"&gt;&lt;strong&gt;J&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font face="Trebuchet MS" color="#ff0000"&gt;&lt;/font&gt;&lt;/pre&gt;</description></item><item><title>PerformancePoint Planning: Deleting a Custom Member Property..</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/11/25/performancepoint-planning-deleting-a-custom-member-property.aspx</link><pubDate>Tue, 25 Nov 2008 20:15:37 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7466</guid><dc:creator>sachatomey</dc:creator><description>&lt;p&gt;&lt;font color="#ff0000"&gt;Update:&amp;#160; I&amp;#39;ve posted a solution to Deleting a Custom Member Property &lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/11/26/performancepoint-planning-deleting-a-custom-member-property-a-solution.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I&amp;#39;ve done this countless times; I&amp;#39;ve created my perfectly named Custom Member Property when it suddenly dawns on me that I&amp;#39;ve forgotten to give it the right data type.&amp;#160; No problem, right?&amp;#160; Wrong!&amp;#160; From within PBM, can you change the data type?&amp;#160; No!&amp;#160; Can you delete the member property? No!&amp;#160; Can you rename the member property?&amp;#160; No!&lt;/p&gt;  &lt;p&gt;So, what are the options?&amp;#160; Well, you could wait for version 2 (I truly hope you can edit/delete member properties in V2!), you could hack the back end database in the vague hope of removing the member property safely, or, as I have been doing in the past, create a new member property with a less than perfect name and try not to clench teeth and fists every time I glance at the original.&lt;/p&gt;  &lt;p&gt;Well, I&amp;#39;ve had enough, and decided I&amp;#39;m going to take action.&lt;/p&gt;  &lt;p&gt;Strangely, the Microsoft.PerformancePoint.Planning.BMO assembly contains a method called DeleteDimensionAttribute on the Dimension attribute collection.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointPlanningDeletingaCustomM_F52B/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="490" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointPlanningDeletingaCustomM_F52B/image_thumb.png" width="808" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I wonder...&lt;/p&gt;  &lt;p&gt;Anyone tried?&lt;/p&gt;</description></item><item><title>PerformancePoint Server 2007 PPSCMD GUI</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/08/27/performancepoint-server-2007-ppscmd-gui.aspx</link><pubDate>Wed, 27 Aug 2008 21:21:38 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7394</guid><dc:creator>sachatomey</dc:creator><description>&lt;p&gt;I&amp;#39;ve built a really simple GUI for a couple of commands of the PPSCMD utility.&amp;#160; I always take far too long to work out the syntax and navigate to the appropriate directory (Yes, I ought to update the PATH environment variable) that I felt I could justify building a simple front end to help speed up the usage.&lt;/p&gt;  &lt;p&gt;So far I&amp;#39;ve only implemented the MIGRATE and REPROCESS commands - I use these quite a lot outside of any automated SSIS package so they seemed the most sensible to implement in the GUI first.&amp;#160; I do intend on extending it to encompass some of the other commands and I would welcome any feedback towards prioritisation, usage, features and the inevitable bugs.&amp;#160; It&amp;#39;s currently version 0.1 and more or less ready for &amp;#39;Community Preview&amp;#39; - there are some omissions such as full error handling and validation that I do intend on implementing over time along with the other commands.&lt;/p&gt;  &lt;p&gt;It&amp;#39;s a .NET 3.5 application so you will need to deploy it to a client where you are happy to install .NET 3.5 if it&amp;#39;s not already present.&lt;/p&gt;  &lt;p&gt;You can download version 0.1 from &lt;a href="http://blogs.adatis.co.uk/files/" target="_blank"&gt;here&lt;/a&gt; - (You will need to create a login first)&lt;/p&gt;  &lt;p&gt;Below are the screen shots:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Migrate&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The migrate command: both import and export variations can be set and executed directly from the GUI.&amp;#160; In addition, the command line is generated so you can cut and paste into a command window, batch file or SSIS package.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="453" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_thumb_3.png" width="502" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reprocess&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Need to reprocess a model quickly?&amp;#160; Rather than wait for PBM/SSMS to open you can reprocess a model directly from the GUI.&amp;#160; Just like Migrate, the command is generated for cut and paste.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_10.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="453" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_thumb_4.png" width="502" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Console&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Any output you would normally see in the command window is reported in the console as the command is being executed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_14.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="453" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_thumb_6.png" width="502" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Log&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can enable logging to a log file of your choice to record all commands processed through the GUI.&amp;#160; Useful for additional auditing and for creating batch files of multiple PPSCMD operations.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_16.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="453" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_thumb_7.png" width="502" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Preferences&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Preferences and options are set on the preferences dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_18.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="300" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/PerformancePointServer2007PPSCMDGUI_13935/image_thumb_8.png" width="564" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SQL Server Utilities</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/06/10/sql-server-utilities.aspx</link><pubDate>Tue, 10 Jun 2008 16:31:38 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:6361</guid><dc:creator>sachatomey</dc:creator><description>&lt;p&gt;&lt;a href="http://blogs.technet.com/andrew/default.aspx" target="_blank"&gt;Andrew&lt;/a&gt; has posted a great list of community developed &lt;a href="http://blogs.technet.com/andrew/archive/2008/06/04/microsoft-sql-server-community-utilities.aspx" target="_blank"&gt;utilities for SQL Server&lt;/a&gt;.&amp;#160; There is a few on there that have been on my &amp;#39;must-do-one-day&amp;#39; list for far too long !&lt;/p&gt;</description></item><item><title>Essential Adatis Blogs</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2008/03/11/essential-adatis-blogs.aspx</link><pubDate>Tue, 11 Mar 2008 20:22:55 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:3044</guid><dc:creator>sachatomey</dc:creator><description>&lt;p&gt;I&amp;#39;ve been speaking to a couple of people recently that, although subscribe to my blog, are not aware of our PPS Planning Sharepoint Web Part that Tim has blogged about &lt;a href="http://blogs.adatis.co.uk/blogs/timkent/archive/2007/11/22/performancepoint-planning-assignment-web-part-for-sharepoint.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.adatis.co.uk/blogs/timkent/archive/2008/02/06/performancepoint-planning-assignments-web-part-update.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;nbsp; This post is more of an awareness that we have other bloggers onboard and much of the content is of the &amp;#39;essential&amp;#39; variety.&lt;/p&gt; &lt;p&gt;Currently blogging are &lt;a href="http://blogs.adatis.co.uk/blogs/timkent/" target="_blank"&gt;Tim&lt;/a&gt;, &lt;a href="http://blogs.adatis.co.uk/blogs/martynbullerwell/" target="_blank"&gt;Martyn&lt;/a&gt; and &lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/" target="_blank"&gt;Jeremy&lt;/a&gt; with our &lt;a href="http://blogs.adatis.co.uk/blogs/" target="_blank"&gt;aggregated feed&lt;/a&gt; that includes the lot.&lt;/p&gt;</description></item><item><title>MDX Stored Procedures (Part 1)</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2007/08/17/mdx-stored-procedures-part-1.aspx</link><pubDate>Fri, 17 Aug 2007 09:47:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:68</guid><dc:creator>sachatomey</dc:creator><description>&lt;p style="COLOR:red;"&gt;UPDATE:&amp;nbsp;&amp;nbsp;You can find part 2 &lt;a class="" href="http://blogs.adatis.co.uk/blogs/sachatomey/archive/2007/11/20/mdx-stored-procedures-part-2.aspx" target="_blank"&gt;here&lt;/a&gt;, along with a link to download a C# quick start.&amp;nbsp;&lt;/p&gt;
&lt;p style="COLOR:black;"&gt;A long time ago I realised that inevitably, however well specified the requirements or however tight the deadlines are, clients always throw a curve ball.&amp;nbsp; To that avail, like many,&amp;nbsp;I adopt an agile approach to project delivery with a keen eye on building frameworks and generic components that improve productivity and flexibility for current and future projects.&lt;/p&gt;
&lt;p&gt;My current project is no different to any other, we knew the requirements would change as, even from the outset, they were high level and vague.&amp;nbsp; With little budget to flesh them out, a controlled, iterative approach was essential.&amp;nbsp; It&amp;#39;s a typical BI project, various data sources require consolidating and processing to allow analytics and reporting to assist in strategy and revenue generation.&lt;/p&gt;
&lt;p&gt;The reporting element was the vaguest of them all, although what did exist immediately eliminated using Reporting Services as the reporting/delivery mechanism.&amp;nbsp; The required reports&amp;nbsp;were highly interactive and aesthetically challenging enough to stretch Reporting Services functionality to the limit, even&amp;nbsp;without the vagueness busting curve balls out of sight but already primed for deployment.&lt;/p&gt;
&lt;p&gt;With all this in mind, we decided to use ASP.NET 2.0 web forms for the reporting as this gave us a little more freedom with regard to layout,&amp;nbsp;a high degree of flexibility surrounding interactivity and the ability to quickly react to the ever changing requirements.&amp;nbsp; Now, with an eye on productivity we decided to build an MDX Helper class (mentioned previously &lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/archive/2007/07/31/xml-namespaces-and-the-adomd-xml-reader-result-set.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.adatis.co.uk/blogs/timkent/archive/2007/08/02/analysis-services-stored-procedures-views.aspx"&gt;here&lt;/a&gt;) that would streamline the development process and enable us to react quickly to those inevitable changes.&lt;/p&gt;
&lt;p&gt;Our own requirements for such a component were as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow text files containing parameterised MDX to be executed. 
&lt;li&gt;Must support the execution of multiple queries over a single connection 
&lt;li&gt;Return a conventional ADOMD cell set object containing the query results 
&lt;li&gt;Return a typed/untyped ADO.NET DataTable object for binding to native and third party .NET controls 
&lt;li&gt;Allow the inspection of various server, database and cube properties 
&lt;li&gt;Lightweight, re-usable&amp;nbsp;and simple to use&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The public interface of the resultant component looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/MDXStoredProceduresPart1_9442/Class.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="240" alt="Class" src="http://blogs.adatis.co.uk/blogs/sachatomey/WindowsLiveWriter/MDXStoredProceduresPart1_9442/Class_thumb.png" width="156" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;In it&amp;#39;s simplest form, usage is straight forward.&lt;/p&gt;
&lt;p&gt;Take the following parameterised query stored in file UKSales.txt&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Product].[Product Categories].[Category].&lt;font color="#0000ff"&gt;members on rows&lt;/font&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Measures].[Internet Sales Amount] &lt;font color="#0000ff"&gt;on columns&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Adventure Works]&lt;br /&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Country&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You return an ADOMD cell set object using the following C# code snippet:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#008000"&gt;// Create an instance of the helper class, setting cube and query information&lt;/font&gt;&lt;br /&gt;MDXHelper helper = new MDXHelper(&amp;quot;ASTestServer&amp;quot;, &amp;quot;Adventure Works DW&amp;quot;, &amp;quot;Adventure Works&amp;quot;, MDXHelper.MDXResourceFormat.RelativeURL, &amp;quot;UKSales.txt&amp;quot;);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#008000"&gt;// Add in the country parameter&amp;nbsp;&lt;br /&gt;&lt;/font&gt;helper.Parameters.Add(&amp;quot;@Country&amp;quot;, &amp;quot;[Geography].[Geography].[Country].&amp;amp;[United Kingdom]&amp;quot;);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#008000"&gt;// Execute the query&lt;br /&gt;&lt;/font&gt;CellSet&amp;nbsp;result = helper.ExecuteCellSet();&lt;br /&gt;&lt;br /&gt;&lt;font color="#008000"&gt;// Tidy up&lt;/font&gt;&lt;br /&gt;helper = null;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;There are several overrides on the constructor and &amp;#39;Execute&amp;#39; methods to allow for flexible usage and it&amp;#39;s been used in anger now for a good couple of weeks supporting every type of MDX query we&amp;#39;ve managed to throw at it so far.&amp;nbsp; It still needs a little refinement and some full-on testing but it has&amp;nbsp;achieved its goal and has helped us easily digest changes to the original requirements.&amp;nbsp; It has also given us some great ideas for version 2 where the query definitions are stored in the Analysis Services cube definition itself.&lt;/p&gt;
&lt;p&gt;In a future post I&amp;#39;ll delve into the approach and implementation of the helper class to see how it works under the hood.&lt;/p&gt;</description></item><item><title>Vista Taskbar preview in Windows XP</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2006/05/24/vista-taskbar-preview-in-windows-xp.aspx</link><pubDate>Wed, 24 May 2006 12:40:36 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:21</guid><dc:creator>sachatomey</dc:creator><description>&lt;div&gt;&lt;div&gt;This is a cool little utility that gives you a preview image of each task on the task bar.  A richer version will be available in Vista - but why wait?&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.visualtasktips.com/"&gt;http://www.visualtasktips.com/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;table cellspacing="0"&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://sachatomey.spaces.live.com&amp;#47;photos&amp;#47;&amp;#47;cns&amp;#33;6084F9B2487AF9A5&amp;#33;172"&gt;&lt;img src="http://storage.msn.com&amp;#47;items&amp;#47;6084F9B2487AF9A5&amp;#33;172&amp;#58;thumbnail" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?space=sachatomey&amp;amp;page=RSS%3a+Vista+Taskbar+preview+in+Windows+XP&amp;amp;referrer=" width="1px" height="1px" border="0" alt="" /&gt;&lt;img style="position:absolute;" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=88469&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sachatomey.spaces.live.com&amp;amp;GT1=sachatomey" /&gt;</description></item></channel></rss>