Recently I was trying to install SQL Server 2005 on a workstation running Windows XP Professional SP3 and for some reason the installation kept failing. The first item in the list that failed was MSXML 6.0. After combing through the log file I found the following message: "Product: MSXML 6 Service Pack 2 (KB954459) -- Configuration failed."

According to http://support.microsoft.com/kb/968749, when SQL Server Setup tries to install MSXML 6.0 SP2, it detects that the version of MSXML 6.0 that is described in Knowledge Base article 954459 is already installed on the computer. Therefore, the validation process indicates that the current version of MSXML 6.0 should not be replaced. This stops the installation of both MSXML 6.0 and SQL Server 2005.
To work around this issue, use the Windows Installer CleanUp utility to remove references to MSXML 6.0 Service Pack 2. The Windows Installer CleanUp utility can be downloaded here: http://support.microsoft.com/kb/290301. Once installed, simply run the utility, select MSXML6 Service Pack 2 (KB954459) [6.20.1099.0] in the list and click Remove. After MSXML 6.0 has been removed then you should be able to install SQL Server 2005 without any further problems.

The other day one of my clients upgraded from Outlook 2003 to Outlook 2007. Since then, whenever she went to her company’s SharePoint site, she received the following error:
==================================================================
Website error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Timestamp: Mon, 4 Jan 2010 18:27:45 UTC
Message: Library not registered.
Line: 1935
Char: 4
Code: 0
URI: http://server/_layouts/1033/init.js?rev=ck%2BHdHQ8ABQHif7kr%2Bj7iQ%3D%3D
==================================================================
Apparently the Outlook upgrade did something to a DLL (removed it?) that SharePoint needs.
If you have just upgraded from Outlook 2003 to Outlook 2007 and you receive a similar error, simply run Office Diagnostics and it should fix the problem!
To run Office Diagnostics follow these steps:
1. Open Microsoft Outlook 2007.
2. On the Help menu, click Office Diagnostics.
3. Click Continue, and then click Start Diagnostics.
I've always struggled with the correct spelling of the word "gray": is it "gray" with an a or is it "grey" with an e? According to the Internet and my spellchecker, both spellings are correct. Maybe the spelling should be changed to include both the a and the e, as in "graey". Ditching the y wouldn't be a bad idea either.
I suspect it will be a good long while before the world adopts my new spelling but luckily I'm not the only one with this deficiency. Apparently the word grae is something the Reporting Services developers over at Microsoft struggle with too.
Notice how the constants for the Color property are different depending on whether you're looking at the Properties window or Expression window.

Below are the basic steps for adding custom components to SSIS; however, for more in-depth information I highly recommend reading Matthew Roche’s post about deploying and testing custom SSIS components.
1. Register the custom assembly in the Global Assembly Cache (GAC)
Copy the DLL to the c:\windows\assembly\ directory. Note that you cannot simply right click on the dll, select copy, then right click in the directory and select paste. Instead you need to drag and drop the file from one location to the other. And you may (or may not!) need Admin rights. Alternatively you can use the command line utility called GACUTIL.EXE but I find the drag/drop method much easier. For more info about GACUTIL see the link above to Matthew's Roche's post.
2. Copy the custom assembly to Visual Studio’s “special folder”
Copy the DLL to the appropriate subfolder in the C:\Program Files\Microsoft SQL Server\90\DTS\ directory. For Control Flow Tasks put the custom assembly in the Tasks folder; for Data Flow Tasks use the PipelineComponents folder. Remember that Visual Studio is a 32 bit application. If you’re running on a 64 bit machine, make sure to use the Program Files (x86) path, otherwise you won’t see your component listed in the Choose Toolbox Items window of Step 3.
3. Add the component to the SSIS toolbox
Open an Integration Services project in Visual Studio, right click anywhere in the Toolbox, and select Choose Items. Go to the appropriate tab in the Choose Toolbox Items window and select the appropriate components.
This morning I needed to check the properties for one of our SharePoint application pools so I logged onto the server and opened Internet Information Services (IIS) Manager. To my surprize the root was empty; it should have automatically connected to the localhost. To my even greater surprize, all attempts to manually get IIS to connect to the server yeilded the message "The path specified cannot be used at this time".
After a quick search I found a post by Old Nick stating that this problem is easily resolved by restarting the Windows SharePoint Services Timer service. That's pretty obvious, right? Sure enough, restarting that service solved the problem. The next time I opened IIS it connected to the localhost.
Lately I’ve been doing a lot of work in Dashboard Designer and I’ve come to realize that your life will be considerably easier if you spend some quality time with your business users reviewing Stephen Few’s techniques for meaningful dashboard presentation and really analyzing how they plan to aggregate the data before you create the dashboard.
What you’ll probably find is that business users often like to see their data aggregated along an axis of time, such as weeks, months, quarters, or years. Pay special attention to key phrases like “last year”, “rolling six months”, “year to date”, and so forth; these are very important. As you’re designing the cube, where I assume all your data for the dashboard will be sourced from, plan to create several dynamic named sets – one for each “last year”, “rolling six months”, and “year to date” phrase that you hear from the user.
Although PPS has built-in time intelligence there are a number of reasons why it makes more sense to handle this in the cube as a dynamic named set. For one thing, PPS time intelligence isn’t available in the analytic charts or grids. Sure, you can have an analytic chart that displays sales for the last rolling 6 months but you’ll have to go in and edit the chart each month and change the date selection.
However, PPS does have several useful time intelligence functions that you can use inside a KPI but your KPI definition becomes severely limited when you use them. Lets say you want the Actual value of your KPI to show last month’s combined sales for only the Northeast and Southeast sales regions. In PPS you can easily select your Sales Amount measure, filter on the Geography dimension, and set the Time Formula to something like “Month-1”. The problem is that we need to filter on both the Northeast and Southeast regions. You can filter on multiple attributes within a dimension but you can only select a single member within that attribute. I have no idea why it’s that way, it just is, and yes it drives me crazy. So unless you have a hierarchy level in your dimension that contains only the Northeast and Southeast regions, then you’ll have to use an MDX expression. And unless you have copious amounts of spare time to edit the KPI each month, you’re MDX expression will need to be dynamic.
Creating dynamic named sets is simple. Remember, a named set is simply a list of dimensional members like “Jan 2009”, “Feb 2009”, “Mar 2009” or “VA”, “NC”, “SC”, “GA”. When it comes to creating dynamic named sets along an axis of time, the secret is to use VBA functions like Now() and Format(). Make sure to give special attention to naming conventions: your business users may want to compare year to date measures against the same time period last year. In order to accomplish this you’ll need to create two named sets – one for YTD This Year, and one for YTD Last Year – so name accordingly. Think about how (and where - I'll be writing a post about that very soon) your named sets will appear in the list of available cube attributes.
You could even create a named set that returns the top 10 products with the highest sales. With dynamic named sets the sky is the limit. Best of all, they can be consumed in tools other than PPS Dashboard Designer, such as Excel. Imagine your business users creating their own Year to Date Sales report!
Below are a few of my favorite dynamic named sets.
CREATE SET CURRENTCUBE.[Rolling 13 Months] AS
{
StrToMember("[Date].[Calendar].[Month].[" + Format(Now(), "MMMM - yyyy") + "].Lag(13)")
:StrToMember("[Date].[Calendar].[Month].[" + Format(Now(), "MMMM - yyyy") + "].Lag(1)")
};
CREATE SET CURRENTCUBE.[Rolling 6 Quarters] AS
{
StrToMember("[Date].[Calendar].[Quarter].[Q" + CStr((Month(Now()) - 1) / 3 + 1) + " " + CStr(Year(Now())) + "].Lag(6)")
:StrToMember("[Date].[Calendar].[Quarter].[Q" + CStr((Month(Now()) - 1) / 3 + 1) + " " + CStr(Year(Now())) + "].Lag(1)")
};
CREATE SET CURRENTCUBE.[Months YTD (This Year)] AS
{
StrToMember("[Date].[Calendar].[Month].[" + Format(Now(), "MMMM - yyyy") + "].Lag(Month(Now()) - 1)")
:StrToMember("[Date].[Calendar].[Month].[" + Format(Now(), "MMMM - yyyy") + "].Lag(1)")
};
CREATE SET CURRENTCUBE.[Months YTD (Last Year)] AS
{
ParallelPeriod([Date].[Calendar].[Year], 1, StrToMember("[Date].[Calendar].[Month].[" + Format(Now(), "MMMM - yyyy") + "].Lag(Month(Now()) - 1)"))
:ParallelPeriod([Date].[Calendar].[Year], 1, StrToMember("[Date].[Calendar].[Month].[" + Format(Now(), "MMMM - yyyy") + "].Lag(1)"))
};
CREATE SET CURRENTCUBE.[This Year] AS
{
StrToMember("[Date].[Year].[" + Format(Now(), "yyyy") + "]")
};
CREATE SET CURRENTCUBE.[Last Year] AS
{
StrToMember("[Date].[Year].[" + Format(Now(), "yyyy") + "].Lag(1)")
};
The other day I thought it would be fun to arbitrarily change the keys for all the members in one of my dimensions. Actually, there was a legitimate reason but after the fact I realized there was a much better way to solve my problem that didn’t involve changing the keys.
Nevertheless, the point is this: If you have a PerformancePoint (PPS) filter linked to an attribute in a dimension, and the keys change, your filter will break.
Lets say you have a PPS dashboard containing a filter and a scorecard. The filter is linked to the Category attribute in the Product dimension. If the keys in the Product dimension change from Bikes having a key of 3 and Accessories having a key of 4 to Bikes having a key of 4 and Accessories having a key of 5, then whenever you select Bikes in the filter the scorecard will display the results for Accessories. If these were the only two members in your dimension I’m not sure what would happen if you selected Accessories but I assume the scorecard would just show empty cells. Or spontaneously combust.
To fix this all you have to do is edit the filter by clicking on Member Selection, going through the wizard, and publish/deploy your dashboard.
I found this and thought I'd pass it on.
http://performancepointblog.com/2009/03/performancepoint-fix-slow-rendering-dashboard-issues-with-internet-explorer-8/
When implementing a PPS dashboard, the browser of choice should be Internet Explorer 8.
Whereas IE7 only supports up to 2 concurrent connections to the server, IE8 supports up to 6 concurrent connections to the server. In cases where there are a lot of objects on the dashboard you should see a significant increase in performance. This is because each object on the dashboard (each filter, each scorecard, each chart) requires a connection to the server. Instead of rendering only 1 or 2 objects at a time, IE8 can render up to 6 at a time.
I'm a big fan of SQL Server Management Studio; suffice to say it's a really great tool with a tremendous amount of functionality. Lately I've been working in the new 2008 version of SSMS and a few days ago I noticed some peculiar behavior: when you double click on text that is surrounded by brackets in an MDX query editor, only the text is selected, not the brackets; however, when you double click on text that is surrounded by brackets in a regular SQL query editor, the text and the brackets are selected – even if the text within the brackets contains spaces. How interesting is that?!
Below are a couple screenshots to illustrate what I'm talking about:
Selected text in an MDX editor:
Here you can see that I double clicked on the word “Adventure” and only the word “Adventure’’ is selected.
Selected text in a regular SQL editor:
Here you can see that I double clicked on the word “Test” (you’ll just have to trust me on this!) and the entire text within the brackets, including the brackets, is selected.