﻿<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>Stacia's Business Intelligence Blog</title>
	<updated>2008-09-07T23:56:38Z</updated>
	<id>http://blog.datainspirations.com/atom.aspx</id>
	<link rel="self" href="http://blog.datainspirations.com/atom.aspx" />
	<link rel="alternate" href="http://blog.datainspirations.com" />
	<generator uri="http://app.onlinequickblog.com/" version="2.0">Quick Blog</generator>
	<entry>
		<title>Configuring Reporting Services Security Correctly</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/11/13/configuring-reporting-services-security-correctly.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-11-13:59bf30df-48bb-4cec-a3eb-810c9421a2b1</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Reporting Services" />
		<updated>2007-11-13T14:45:47Z</updated>
		<published>2007-11-13T14:33:00Z</published>
		<content type="html"><![CDATA[<DIV>While there was a good showing at all my sessions last week at SQL Server Magazine Connections, I think <STRONG>Configuring Reporting Services Security Correctly </STRONG>was most popular based on feedback I've already received from attendees. As I suspected was true, a lot of folks are bumping into security issues that leave them frustrated. If I had to nail the single most recurring problem, I'd say it was related to Kerberos. Either people didn't realize their server environment necessitated Kerberos, or they've been told it's hard to configure and avoided it, or they've tried configuring it and run into trouble because information out there on this subject tends to be incomplete or, worse yet, inaccurate. I have to confess I've not been one to dig into security issues very deeply in the past. My eyes tended to glaze over when the subject came up, even though in my heart I know it's extremely important. It's just that I've been fortunate enough to have someone else deal with security on my projects, so why fill my brain with details I don't use? At least that's how I felt until this last&nbsp;year when I had no choice but to dig in and conquer some security-related issues. This session encapsulated some of what I learned as I resolved to strengthen my security skills.&nbsp;In support of this&nbsp;session, I've prepared&nbsp;the step-by-step instructions for configuring Reporting Services to use domain accounts, to use SSL, or to use Kerberos which you can <A href="http://datainspirations.com/uploads/ssrs_security_demos.zip" target=_blank>download here</A>. I've also included some common error messages and suggested causes and/or action to take. <BR><BR>If you find an error in this document, or want to share a Reporting Services security-related error that you've come across, please shoot me an email. I'd love to hear from you and your help in keeping this document up-to-date with known errors would be a great service to the Reporting Services community.</DIV>]]></content>
	</entry>
	<entry>
		<title>Teaming up with Kimberly Tripp and the gang at SQLSkills</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/10/09/teaming-up-with-kimberly-tripp-and-the-gang-at-sqlskills.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-10-09:aeee35fd-9f72-4c83-b858-957cf4cf1d27</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Miscellaneous" />
		<updated>2007-11-13T14:49:08Z</updated>
		<published>2007-10-09T19:51:00Z</published>
		<content type="html"><![CDATA[<DIV>I'm pleased to announce I'll be working with SQLSkills-- Kimberly Tripp, Paul Randall, Bob Beauchemin, and Elizabeth Vitt (my friend and colleagure from the Aspirity days)--as we prepare for Katmai's release next year. I'll still be posting blogs from time to time here on non-Katmai related topics, but I have a new blog to which I'll be&nbsp;posting&nbsp;on a regular basis&nbsp;as I explore the features of Katmai. Check it out <A href="http://www.sqlskills.com/blogs/stacia" target=_blank>here</A>.</DIV>]]></content>
	</entry>
	<entry>
		<title>Connecting at Connections</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/10/05/connecting-at-connections.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-10-05:0ec908b5-2123-4727-a729-c39a4b9c0b17</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Miscellaneous" />
		<updated>2007-10-05T06:33:27Z</updated>
		<published>2007-10-05T06:18:00Z</published>
		<content type="html"><![CDATA[<DIV>
<TABLE style="WIDTH: 100%" cellSpacing=1 cellPadding=1 border=1>
<TBODY>
<TR>
<TD><IMG src="http://blog.datainspirations.com/images/35546-33075/120x240_SQLConn_IBT.jpg" width=120 border=0></TD>
<TD>SQL Server Magazine Connections is coming again to Las Vegas in November and I'm happy to be speaking there again. Not only is it a great opportunity to meet new people and reconnect with old friends, it's a treat to be able to go to "work" in my home town. Oddly enough, I don't do any work in Vegas, so driving anywhere other than to the airport (or of course to local establishments for social reasons, I really do leave the house on occasion!) is a strange experience. But one that I look forward to next month! Stop by and say hello if you're attending.<BR><BR><BR><BR><BR>Here are the topics I'll be covering:</TD></TR>
<TR>
<TD></TD>
<TD><BR><FONT size=2><STRONG>Configuring Reporting Services Security Correctly<BR></STRONG>Understanding the relationship between Reporting Services and ASP.NET, IIS, the database, and Windows security is vital to establishing the appropriate security policy for your environment and configuring the report server correctly. This session starts with a review of the security architecture of Reporting Services in native and SharePoint integrated mode. This session also includes a series of practical examples that show you how to set up IIS authentication, service accounts, and Reporting Services data sources for various deployment scenarios, including single server or multiple server environments. You’ll see the Reporting Services security architecture. You’ll understand the dependencies between Reporting Services, ASP.NET, IIS, database, and Windows security layers. You’ll learn how to configure IIS, service accounts, and data source credentials to support security requirements.&nbsp;<BR></FONT><BR><STRONG><FONT size=2>Creating Reports with Reporting Services 2005 and Analysis Services 2005<BR></FONT></STRONG><FONT size=2>With the introduction of Reporting Services 2005, you now have a Query Designer to generate the MDX required to retrieve data from a cube as a great first step, but you can extend this query to satisfy more complex reporting requirements. In this session, you’ll learn several tips and tricks about working with Analysis Services 2005 as a source for your reports, including how to customize an MDX query, how to handle aggregate values, and how to implement cascading parameterized MDX queries. You’ll understand the benefits and limitations of the MDX Query Designer. You’ll learn how to modify an MDX query to produce specific results. And you’ll learn how to override default parameter behavior to create cascading parameters.&nbsp;</FONT><BR><STRONG><BR><FONT size=2>Data Mining for the Rest of Us<BR></FONT></STRONG><FONT size=2>Don’t worry if you don’t hold a PhD in data mining or even if you didn’t take statistics in college. You can still use and, better yet, understand data mining now that Data Mining Add-Ins for Office 2007 is available. Whether you regularly analyze data now or provide technical support for those who do, it’s time to learn how take business intelligence to the next level in your organization. This session will show you specific examples for exploring common data sets, such as sales and financial data, to find the hidden information in your business. You’ll understand the technical architecture requirements for the Data Mining Add-Ins. You’ll learn how to prepare data for data mining. You’ll learn how to apply data mining techniques to specific business problems. </FONT></TD></TR></TBODY></TABLE><BR><BR></DIV>]]></content>
	</entry>
	<entry>
		<title>Data Mining for the Rest of Us</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/10/04/data-mining-for-the-rest-of-us.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-10-04:94226b2f-ea65-4acb-962e-a5173bbe4b5d</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Analysis Services" />
		<updated>2007-10-04T08:15:14Z</updated>
		<published>2007-10-04T08:06:00Z</published>
		<content type="html"><![CDATA[<DIV>Another session I did at PASS addressed data mining. Here are the steps I followed during the demonstration and the view I added to the AdventureWorksDW database: <A href="http://datainspirations.com/uploads/dataminingsamples.zip" target=_blank>Data Mining for the Rest of Us</A>. You will need access to Analysis Services 2005 (either on your own machine or on your network) and you will need to install the free Office Add-Ins which you can download <A HREF="/Microsoft" target=_blank ?LinkID="82754" fwlink go.microsoft.com Office, Microsoft for Add-Ins Mining Data 2005 Server SQL>here</A>.</DIV>]]></content>
	</entry>
	<entry>
		<title>Searching BI Data in MOSS</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/10/01/searching-bi-data-in-moss.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-10-01:c434d39e-1a06-453f-9969-23e0e445ec10</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Reporting Services" />
		<category term="Office SharePoint Server 2007" />
		<category term="Analysis Services" />
		<updated>2007-10-01T19:09:19Z</updated>
		<published>2007-10-01T09:26:00Z</published>
		<content type="html"><![CDATA[<DIV>A couple of weeks ago, I delivered a presentation at PASS 2007 entitled "Searching Business Intelligence Data in Microsoft Office SharePoint Server 2007." The steps to configure the environment correctly are considerable and difficult to represent with enough detail in PowerPoint slides, so I promised the audience not to sweat the details in note-taking and await the step-by-step instructions to be posted on this site. At last, I've finalized the notes. Microsoft has a white paper, Extending Enterprise Search Capabilities to Your BI Applications (<A href="http://download.microsoft.com/download/7/2/a/72ae11fe-564d-4756-a878-eccb2e0692d7/BI%20Search%20Technical%20White%20Paper.doc">http://download.microsoft.com/download/7/2/a/72ae11fe-564d-4756-a878-eccb2e0692d7/BI%20Search%20Technical%20White%20Paper.doc</A>), &nbsp;and samples for download (<A href="http://download.microsoft.com/download/7/2/a/72ae11fe-564d-4756-a878-eccb2e0692d7/BI%20Search%20Technical%20White%20Paper%20Support%20Contents.zip">http://download.microsoft.com/download/7/2/a/72ae11fe-564d-4756-a878-eccb2e0692d7/BI%20Search%20Technical%20White%20Paper%20Support%20Contents.zip</A>), but I found that these instructions assume you know a lot about MOSS already and I found a couple of errors. I've provided more detailed (and hopefully, error-free) instructions and some additional sample content here:&nbsp;<A href="http://www.datainspirations.com/uploads/moss_search_samples.zip" target=_blank>MOSS BI Search Step by Step</A>. <BR><BR>Because most people that I've talked to are not implementing Kerberos yet (although I highly recommend you reconsider it as it makes security implementation easier!), I've written these instructions under the assumption that NTLM authentication is being used and hard-coded credentials in Excel and/or SSRS are being used to authenticate the user for the reports' data sources. <BR><BR>This particular example I've developed&nbsp;assumes one Analysis Services source - for Excel reporting - and one SQL Server source - for SSRS, but you shouldn't assume this means that you can't use SQL Server as a source for Excel reports or SSAS as a source for SSRS. You just need to create the Business Data Catalog (BDC) as appropriate for your source and associate it with Web part pages as an action. The key difference between the two sources for the BDC is how you pass parameter values to the Web part page.<BR><BR>Here are thumbnails linked to the full images...<BR><BR>First, the results of a search with the two links&nbsp;that I show later highlighted here in red:<BR><IMG src="http://blog.datainspirations.com/images/35546-33075/th_bi_search.jpg" width=100 border=0><BR><A href="http://datainspirations.com/uploads/bi_search.gif" target=_blank>Link to full-size image</A><BR><BR>Here is the link to an Excel Web part page:<BR><IMG src="http://blog.datainspirations.com/images/35546-33075/th_bi_search_result_1.jpg" width=100 border=0><BR><A href="http://datainspirations.com/uploads/bi_search_result_1.gif" target=_blank>Link to full-size image</A><BR><BR>And finally the link to an SSRS Web part page:<BR><IMG src="http://blog.datainspirations.com/images/35546-33075/th_bi_search_result_2.jpg" width=100 border=0><BR><A href="http://datainspirations.com/uploads/bi_search_result_2.gif" target=_blank>Link to full-size image</A></DIV>]]></content>
	</entry>
	<entry>
		<title>Showing Server Aggregations in Reporting Services</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/04/04/showing-server-aggregations-in-reporting-services.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-04-04:ac3c1e32-e39a-4512-ac24-bfc88ddaf353</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Reporting Services" />
		<updated>2007-04-04T07:28:00Z</updated>
		<published>2007-04-04T07:28:00Z</published>
		<content type="html"><![CDATA[<P>Based on verbal feedback I got at the SQL Server Connections following my session, "Creating Reports with Reporting Services 2005 and Analysis Services 2005," one of the most popular topics I covered was the use of server aggregations in a report. My friend Reed Jacobson touched on this on the <A class="" href="http://sqljunkies.com/WebLog/hitachiconsulting/archive/2006/12/18/26168.aspx" target=_blank>Hitachi Consulting BI Blog</A>, but he didn't spell out the details there. Books Online doesn't provide many clues either, nor can I find anyone else writing about the topic - my apologies if I missed something somewhere. Consequently, I thought it would be helpful to explain what the Show Aggregates button does in the MDX query designer and how to get server aggregates from the cube.<BR><BR><STRONG>Why Use Server Aggregates?</STRONG><BR><BR>First - why would you care about getting cube aggregates? Can't you just use the Reporting Services aggregate functions (sum, min, max, count, etc.) to do the necessary calculations? Yes and no. The built-in aggregate functions in SSRS work just fine if your measures are all additive. But you run into a problem with semi-additive measures - like inventory counts or general ledger balances that add up nicely across products or accounts, respectively, but not across time. That is, you don't add the inventory you had on the last day of January to the count you had on the last day of February (and any days in between if you track&nbsp;inventory more frequently)&nbsp;to determine your total inventory for March 1. <BR><BR>You also have a problem with non-additive measures, like ratios, because you can't add up the ratios for each member of a dimension to determine the total for the dimension. For example, if you calculate a gross margin percent for each product sold as (Sales - Cost)/Sales, the gross margin percent calculation for all products is not the sum of each product's individual gross margin. You must calculate total sales, subtract total costs, and then divide the result by total sales to get the correct value. <BR><BR>In both examples, the correct answer is obtained only by using server aggregations. After all, one of the key reasons to use a cube is to get aggregated values computed correctly no matter what type of measure it is: additive, semi-additive, or non-additive. <BR><BR><STRONG>How to Define the Report Layout to Use Server Aggregates<BR></STRONG><BR>The Show Server Aggregates button on the Data tab - using the MDX Query designer - is tempting, but it doesn't appear to do anything. It's job is simply to show you what server aggregates are available to the report, but it doesn't tell SSRS to get them. Instead, all the work is done in the report layout which seems a bit counterintuitive to me. After all, the purpose of a dataset is to get data and the purpose of layout is to define where that data goes. In this case, the layout affects the MDX query in the dataset - an interesting way to go about it, but workable nonetheless. <BR><BR>The secret to accessing server aggregates is to use the SSRS Aggregate function in the report layout and to define a grouping in the data region. So, using the AdventureWorksDW sample cube that ships with SSRS, let's start with a simply query with the following attributes: Sales Channel, Date.Calendar Year, Sales Territory Group. Add the Gross Profit Margin measure. Now add a table to the report layout and drag Sales Territory Group from the Datasets window&nbsp;to the detail row in the first column and drag Gross Profit Margin to the detail row in the second column and also in the table footer row. By default, the Sum aggregate function is applied, which will yield an incorrect result. But that's okay for now. Let's look at the MDX at this point. Switch back to the Data tab and click the Design Mode button to see the following query:<BR><BR><FONT color=#0000ff size=2>SELECT</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>NON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>EMPTY</FONT><FONT size=2> { [Measures].[Gross Profit Margin] } </FONT><FONT color=#0000ff size=2>ON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>COLUMNS</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>NON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>EMPTY</FONT><FONT size=2> { ([Sales Channel].[Sales Channel].[Sales Channel].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * [Date].[Calendar Year].[Calendar Year].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * [Sales Territory].[Sales Territory Group].[Sales Territory Group].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> ) } </FONT><FONT color=#0000ff size=2>DIMENSION</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>PROPERTIES</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>MEMBER_CAPTION</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>MEMBER_UNIQUE_NAME</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>ON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>ROWS</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>FROM</FONT><FONT size=2> [Adventure Works] </FONT><FONT color=#0000ff size=2>CELL</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>PROPERTIES</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>VALUE</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>BACK_COLOR</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FORE_COLOR</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FORMATTED_VALUE</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FORMAT_STRING</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FONT_NAME</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FONT_SIZE</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FONT_FLAGS</P>
<P></FONT>The query returns values for each combination of Sales Channel, Calendar Year, and Sales Territory. In other words, the All member for each dimension is excluded from the query - no server aggregations are returned.<BR><BR>Now let's get some aggregate action going. Switch to the Layout tab, and insert two groups into the table. In the first group, set the expression as =Fields!Sale_Channel.Value and set the second group's expression as =Fields!Calendar_Year.Value. For this demonstration, I like to keep the layout simple, so keep only the group header or the group footer selected, but not both. Be sure to add the fields to the respective rows in column one to show the data in the report. Now drag Gross Profit Margin into the second column of each group row.<BR><BR>Does adding groups change the MDX query? Let's see. Switch back to the Data tab. Nope - nothing's changed. Switch back to the Layout tab for the final step. Change the Sum function to Aggregate in the group rows and the table footer row such that the expression now reads as follows: =Aggregate(Fields!Gross_Profit_Margin.Value). You might want to set formatting styles on the group rows to&nbsp;make them easier to identify and set the formatting on the gross profit margin column to p2 to make the values easier to read. When you're ready, preview the report. If the final row in the report shows 11.43%, then you know the correct value is being retrieved from the cube. <BR><BR>If you were to use SQL Server Profiler to capture the query, you'd see a different MDX query than we see in the dataset. Switch back to Data and you can see the query hasn't changed. Even if you click the Design Mode button to toggle back to the graphical query designer and then click it again to return to the generic query designer, you won't see a change here. It all happens under the covers - the grouping and the Aggregate function tell Reporting Services that the MDX needs to be altered to get the aggregates from the cube. <BR><BR>Does this mean you can only see what's happening if you use SQL Server Profiler? No. Now let's try the Show Aggregages button. You need to toggle to the graphical query designer if it's not visible on the Data tab. Then click the Show Aggregates button. The aggregates appear as shown here:<BR><BR><IMG src="http://blog.datainspirations.com/images/35546-33075/dataset.jpg"><BR>The null values really represent the All member for the attribute represented in that column. So the very first line should read Internet | All Periods | All Sales Territories | 0.4114... if the name of the All member were retrieved. If you now switch to the generic query designer (click the Design Mode button), you can see the MDX query has changed:<BR><BR><FONT color=#0000ff size=2>SELECT</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>NON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>EMPTY</FONT><FONT size=2> { [Measures].[Gross Profit Margin] } </FONT><FONT color=#0000ff size=2>ON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>COLUMNS</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>NON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>EMPTY</FONT><FONT size=2> {[Sales Channel].[Sales Channel].[Sales Channel].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * {[Date].[Calendar Year].[All Periods]} * {[Sales Territory].[Sales Territory Group].[All Sales Territories]}, [Sales Channel].[Sales Channel].[Sales Channel].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * [Date].[Calendar Year].[Calendar Year].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * {[Sales Territory].[Sales Territory Group].[All Sales Territories]}, ([Sales Channel].[Sales Channel].[Sales Channel].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * [Date].[Calendar Year].[Calendar Year].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> * [Sales Territory].[Sales Territory Group].[Sales Territory Group].</FONT><FONT color=#800000 size=2>ALLMEMBERS</FONT><FONT size=2> ) } </FONT><FONT color=#0000ff size=2>DIMENSION</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>PROPERTIES</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>MEMBER_CAPTION</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>MEMBER_UNIQUE_NAME</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>ON</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>ROWS</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>FROM</FONT><FONT size=2> [Adventure Works] </FONT><FONT color=#0000ff size=2>CELL</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>PROPERTIES</FONT><FONT size=2> </FONT><FONT color=#0000ff size=2>VALUE</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>BACK_COLOR</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FORE_COLOR</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FORMATTED_VALUE</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FORMAT_STRING</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FONT_NAME</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FONT_SIZE</FONT><FONT size=2>, </FONT><FONT color=#0000ff size=2>FONT_FLAGS</FONT><BR><BR>The query now includes the All members - All Periods, All Sales Territories - for the attributes that are used in the grouping of the table. You don't need to follow these steps to get the query right in the dataset before you deploy. Reporting Services knows what to do when it sees the grouping and the Aggregate function. However, as the report developer, you may want to see the query generated to retrieve server aggregates and make modifications to suit your needs more specifically. </P>]]></content>
	</entry>
	<entry>
		<title>Let's Do The Time Warp Again...</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2007/03/21/lets-do-the-time-warp-again.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2007-03-21:04bd8e3c-6371-4dbd-9e0d-cff7ea95c324</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Miscellaneous" />
		<updated>2007-03-21T20:08:21Z</updated>
		<published>2007-03-21T19:30:00Z</published>
		<content type="html"><![CDATA[<P>Or not. Honestly, I don't know where the time goes. Back in October 2006, I expected to start settling down a bit and develop a better blogging routine. One or two time warps later, I find myself five months since the last post and knee-deep in a variety of time-consuming activities after which I expect to settle down. I have been ultra busy since October, and&nbsp;meanwhile friends and family just wink and nod when I say I'm going to slacken the pace a bit. One of these days. <BR><BR>After the conference season last November, I was looking forward to a nice quiet holiday season, but instead took on a book project. Subject: SQL Server 2005 Express Edition. More details forthcoming soon as it's due to be released in a couple more weeks. It's a beginner's book, so no one I know in the industry ought to be reading it. However, my daughter became a convert to database technology seemingly overnight after taking great pains to know as little as possible about computers as she could, so at least one reader has benefited from the effort!&nbsp;<BR><BR>As for conferences this year, I'll be in Orlando next week for <A href="http://www.devconnections.com/shows/SP2007SQL/default.asp?s=92">SQL Server Magazine Connections</A> presenting the following topics: <BR><STRONG><FONT size=2><BR>SBI305:&nbsp;Creating Reports with Reporting Services 2005 and Analysis Services 2005<BR></FONT></STRONG><BR>With the introduction of Reporting Services 2005, you now have a Query Designer to generate the MDX required to retrieve data from a cube as a great first step, but you can extend this query to satisfy more complex reporting requirements. In this session, you’ll learn several tips and tricks about working with Analysis Services 2005 as a source for your reports, including how to customize an MDX query, how to handle aggregate values, and how to implement cascading parameterized MDX queries. <BR><BR><STRONG><FONT size=2>SBI306:&nbsp;Integrating SQL Server 2005 Business Intelligence with Office SharePoint 2007<BR></FONT></STRONG>Office SharePoint Server 2007 enables consolidation of your business intelligence applications for easy access, analysis, and collaboration across the organization. Come to this session to learn how you can use Office SharePoint Server as a central location for administrators to organize and manage information assets and for information workers to locate, analyze, and personalize information available from Analysis Services, Reporting Services, and other sources. <BR><BR><STRONG><FONT size=2>SBI304:&nbsp;Putting Some Actions into Your Cube<BR></FONT></STRONG>Is your Analysis Services 2005 cube the last stop for users in their quest for information? It doesn’t have to be. In this session, you’ll learn how to add actions that take a cube beyond the basics by displaying transactional details with drillthrough and by linking to internal reports, applications, or external Web sites. <BR><BR>If you can't make it to Connections, I'll also be in Orlando again in June for <A class="" href="http://www.microsoft.com/events/teched2007/default.mspx" target=_blank>Tech-Ed 2007</A>&nbsp;with a reprisal of BI integration in Office SharePoint 2007. I hope to see some familiar faces at either of these events.<BR><BR>I've been teaching several BI Voyage classes, which was mentioned in my last post at which time we were conducting the beta delivery. It has turned out to be quite a popular class with many rave reviews. I'm pleased to have shared that experience with my friend Peter Myers who&nbsp;has finally allowed himself to take&nbsp;a well-deserved break as he performed the bulk of the deliveries around the globe. I primarily landed in Redmond to deliver the classes, which doesn't have quite the same ring as, say Paris, or Milan, or Seoul - destinations on Peter's itinerary. But the students in each of my classes are all amazing people that I'm glad I had the opportunity to meet and hope to cross paths with again someday. My international travel took me to Warsaw, Poland where I had the extra special treat of having a home-cooked Polish meal prepared for me while sharing great conversation with a group of&nbsp;students during what felt like the Great Hurricane of '07 that swept through Europe in mid-January. Of course, it wasn't really a hurricane, but it was quite the storm. <BR><BR>A by-product of teaching the BI Voyage classes is the accumulation of a variety of future blog topics which I will start posting after I get back from Orlando next week. I've also been spending a lot of time working with SharePoint Server 2007 and PerformancePoint Server 2007 so will have some thoughts about these technologies to share. So with the first quarter of 2007 nearly over, thanks to that silly time warp, I have finally accumulated a variety of topics I feel are worthy enough to share and will get the blogs rolling soon. Stay tuned!</P>]]></content>
	</entry>
	<entry>
		<title>Happenings</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2006/10/31/happenings.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2006-10-31:a0db6791-5210-4fa5-94d1-eddbd4c1a2fe</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Miscellaneous" />
		<updated>2006-10-31T13:16:09Z</updated>
		<published>2006-10-31T12:53:00Z</published>
		<content type="html"><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><FONT size=2>My silence since September results from the fact that I have been incredibly busy of late. In addition to some training and consulting engagements, I've been collaborating with Peter Myers (who will be blogging soon </FONT><A class="" href="http://petermyers.blogspot.com/" target=_blank><FONT size=2>here</FONT></A><FONT size=2>) to develop a course for Microsoft targeted for application developers. The course is called </FONT><A class="" href="http://blogs.msdn.com/rdoherty/archive/2006/06/30/651948.aspx" target=_blank><FONT size=2>BI Voyage</FONT></A><FONT size=2> and covers the spectrum of the Microsoft BI platform, including Integration Services, Analysis Services, Reporting Services, Office 2007 BI functionality in Visio and Excel, BI features in Microsoft Office SharePoint 2007, and PerformancePoint 2007. Peter and I, as well as other Solid Quality Mentors, will be delivering this course worldwide to Microsoft partners over the next several months. This is a great collection of technologies for business intelligence solutions - I will be sharing my experiences working with them in this blog soon. <BR><BR>I don't have anything technical to contribute today, but thought I'd take this opportunity to let you know about some upcoming events in November.<BR><BR>I will be at </FONT><A class="" href="http://www.devconnections.com/shows/SQLFall2006/default.asp?s=84" target=_blank><FONT size=2>SQL Connections</FONT></A><FONT size=2> in <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:City w:st="on">Las Vegas</st1:City>, <st1:State w:st="on">NV</st1:State></st1:place> the week of November 6 with three presentations on the following topics:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p><FONT size=2>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT size=2><FONT face=Verdana><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Inside the Report Model</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">: Using the Report Model Wizard, you can generate a reasonable report model that delivers ad-hoc reporting capabilities to your end users through Report Builder, but what additional tuning is required to get the most benefit? In this session, we review how report model objects are generated and how to fine-tune the model by changing properties for entities, attributes, and roles and by working with collections to take your report models to the next level.<o:p></o:p></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT size=2><FONT face=Verdana><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Introducing MDX Scripts</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">: A new concept in Analysis Services 2005 is the MDX script, which is used to calculate cell values for a cube. In this session, we review the fundamental concepts of the MDX script, explore some new functions and statements you can use to add calculations to a cube, and use the debugging capabilities in the development environment to see how cube values are modified by the MDX script.<o:p></o:p></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT size=2><FONT face=Verdana><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Proactive Caching in Analysis Services</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">: With SQL Server 2005 Analysis Services, you can choose to process a cube only when the data changes rather than process on a fixed schedule. In this session, we will take a look at the available options for configuring proactive caching and monitor the effect of changing data at the source on the initiation of cube processing and the response to user queries while the cube is processing. With an understanding of how proactive caching works, you will be able to minimize data latency and reduce the administrative overhead of keeping cubes up-to-date.<o:p></o:p></SPAN></FONT></FONT></P>
<P><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><BR><FONT size=2>I will next be at </FONT><A href="http://www.sqlpass.org/"><FONT size=2>PASS</FONT></A><FONT size=2> in <st1:place w:st="on"><st1:City w:st="on">Seattle</st1:City>, <st1:State w:st="on">WA</st1:State></st1:place> to deliver a preconference sesssion on November 13: Then I will be generally hanging out the rest of the week to see some friends do their presentations. My session is:<o:p></o:p></FONT></SPAN></P>
<P><STRONG><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana; mso-bidi-font-family: Arial"><FONT size=2>M4: Microsoft Business Intelligence: Tools and Applications – Building on the BI Platform </FONT></SPAN></STRONG><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><BR></SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><FONT size=2>Microsoft has delivered great BI functionality for many years in its industry leading BI platform, SQL Server. Microsoft has been expanding its BI investments in recent years in the analytic client and application space through product investment and acquisition. Come to this Pre-Conference seminar to learn about Microsoft’s end-user tools and application offering and how you can benefit from these investments.&nbsp; We’ll cover Business Scorecard Manager 2005, ProClarity and the upcoming BI investments in the 2007 Office system (primarily Excel 2007 and Office SharePoint Server 2007). Additionally, we will share plans around the next generation performance management application, Office PerformancePoint Server. This Pre-Conference seminar will be packed with information that will show you how you can start leveraging your investments in SQL Server 2005 in a new, value added way. <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><BR><BR><FONT size=2>If you are at either event, please be sure to say hello. <BR><BR>Finally, this past year I co-authored <SPAN style="COLOR: #003366"><A href="http://www.microsoft.com/MSPress/books/6793.asp">Microsoft® SQL Server™ 2005 Administrator's Companion</A> </SPAN><SPAN style="COLOR: black">with Edward Whalen, Marcilina Garcia, Burzin Patel, and Victor Isakov. This book will finally be released on November 15. This book is a great resource for the SQL Server 2005 platform, including an introduction to the BI features. Only one chapter was devoted to SSIS, SSAS, and SSRS respectively and one chapter combined Notification Services and Services Broker, so these are not comprehensive resources for these technologies. But if you're a DBA that's not had much exposure yet to any of these technologies that are bundled with SQL Server 2005,&nbsp;I hope you'll find these chapters a great way to get familiar with the basics. Each of these chapters also contains references to other resources for learning more.</SPAN></FONT></SPAN></P>]]></content>
	</entry>
	<entry>
		<title>Non-Aggregating Facts</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2006/09/17/nonaggregating-facts.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2006-09-17:0c6edcf5-bb38-4cbe-a87f-8f953d8774d1</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Analysis Services" />
		<updated>2006-09-17T05:14:39Z</updated>
		<published>2006-09-17T04:39:00Z</published>
		<content type="html"><![CDATA[<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in; mso-list: l6 level1 lfo16"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><SPAN style="mso-list: Ignore">Q.<FONT face="Times New Roman" size=1><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></FONT></SPAN></SPAN></FONT><SPAN dir=ltr><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">Is it possible to load ratios at each level of a dimension and avoid cube aggregations? In this case, the components of the ratios are unknown and cannot be decomposed, but the ratios at each level are known.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></SPAN></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in; mso-list: l18 level1 lfo13"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><SPAN style="mso-list: Ignore">A.<FONT face="Times New Roman" size=1><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></FONT></SPAN></SPAN></FONT><SPAN dir=ltr><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">Take a look at Richard Tkachuk’s article at <A href="http://sqlserveranalysisservices.com/OLAPPapers/Loading%20Aggregate%20Data%20in%20AS2005v2.htm">http://sqlserveranalysisservices.com/OLAPPapers/Loading%20Aggregate%20Data%20in%20AS2005v2.htm</A>. The first part of this article explains the process for parent-child hierarchies. Look for the section titled “Without Parent-Child Hierarchies” for an explanation of how to solve this problem for a user hierarchy. This article is focused entirely on the dimension design, however. Let’s consider how you combine this technique with fact table and cube design. I’ll extend Richard’s example by using a similar Geography dimension. <o:p></o:p></SPAN></FONT></SPAN></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p>&nbsp;</o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.5in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">Here are the tables used to create the dimension:<BR><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p><BR>
<TABLE style="WIDTH: 330pt; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=440 border=0 x:str>
<COLGROUP>
<COL style="WIDTH: 35pt; mso-width-source: userset; mso-width-alt: 1718" width=47>
<COL style="WIDTH: 40pt; mso-width-source: userset; mso-width-alt: 1938" width=53>
<COL style="WIDTH: 63pt; mso-width-source: userset; mso-width-alt: 3072" width=84>
<COL style="WIDTH: 48pt" span=4 width=64>
<TBODY>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: silver" width=47 height=17><FONT size=2><STRONG>CityKey</STRONG></FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: silver" width=53><FONT size=2><STRONG>StateKey</STRONG></FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: silver" width=84><FONT size=2><STRONG>CityName</STRONG></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; WIDTH: 48pt; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=64><FONT size=2><STRONG></STRONG></FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: silver" width=64><FONT size=2><STRONG>StateKey</STRONG></FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: silver" width=64><FONT size=2><STRONG>CountryKey</STRONG></FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: silver" width=64><STRONG><FONT size=2>StateName</FONT></STRONG></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Seattle</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>WA</FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>2</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Tacoma</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>2</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>OR</FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>3</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>2</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Portland</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>3</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>CA</FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>4</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>2</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Salem</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>4</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>NV</FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>5</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>3</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Los Angeles</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>5</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=64 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>USA</FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>6</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>3</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>San Francisco</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>7</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>4</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Las Vegas</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>8</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>4</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>Reno</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>9</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>1</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>WA</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>10</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>2</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>OR</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>11</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>3</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>CA</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>12</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>4</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>NV</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>13</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>5</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>USA</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"><FONT size=2></FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 35pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=47 height=17 x:num><FONT size=2>14</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 40pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right width=53 x:num><FONT size=2>5</FONT></TD>
<TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 63pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=84><FONT size=2>All</FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"></TD>
<TD class=xl24 style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent"></TD></TR></TBODY></TABLE>&nbsp;</o:p></SPAN></FONT><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><BR>
<TABLE style="WIDTH: 96pt; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=128 border=0 x:str>
<COLGROUP>
<COL style="WIDTH: 48pt" span=2 width=64>
<TBODY>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: silver" width=64 height=17><FONT size=2><STRONG>CountryKey</STRONG></FONT></TD>
<TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: silver" width=64><STRONG><FONT size=2>Country</FONT></STRONG></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=64 height=17 x:num><FONT size=2>1</FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>USA</FONT></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right width=64 height=17 x:num><FONT size=2>2</FONT></TD>
<TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64><FONT size=2>Canada</FONT></TD></TR></TBODY></TABLE><BR><BR>After creating the dimension by using these tables, I opened the dimension designer to create a user hierarchy: City, State, Country (bottom to top). Then, on the Dimension Structure tab, I changed the <I><SPAN style="FONT-STYLE: italic">HideMemberIf</SPAN></I> property for the city and state levels in the user hierarchy to <B><SPAN style="FONT-WEIGHT: bold">ParentName </SPAN></B>to hide WA, OR, and CA from the City level and <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:country-region w:st="on"><st1:place w:st="on">USA</st1:place></st1:country-region> from the State level. The dimension now looks like this after deploying the project and processing the dimension:<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.5in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p>&nbsp;<SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <IMG src="http://blog.datainspirations.com/images/35546-33075/AS_1.bmp"></v:shapetype></SPAN></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.5in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">The fact table uses only keys in the City table, like this:<o:p></o:p></SPAN></FONT></P>
<TABLE class=MsoNormalTable style="MARGIN-LEFT: 66.2pt; WIDTH: 81.55pt; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=109 border=0>
<TBODY>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: silver; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom noWrap width=55 bgColor=silver height=17>
<P class=MsoNormal><B><FONT face=Calibri size=2><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Calibri">CityKey<o:p></o:p></SPAN></FONT></B></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: silver; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom noWrap width=53 bgColor=silver height=17>
<P class=MsoNormal><B><FONT face=Calibri size=2><SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Calibri">Ratio<o:p></o:p></SPAN></FONT></B></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">1<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.200<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">2<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.320<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">3<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.11235955056179775">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.112<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">4<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.7078651685393258">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.708<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">5<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.35714285714285715">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.357<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">6<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.40476190476190477">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.405<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">7<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.81132075471698117">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.811<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">8<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="5.6603773584905662E-2">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.057<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">9<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.260<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">10<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.4101123595505618">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.410<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">11<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.38095238095238093">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.381<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">12<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.1553398058252427">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.155<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">13<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.3923444976076555">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.392<o:p></o:p></SPAN></FONT></P></TD></TR>
<TR style="HEIGHT: 12.75pt" height=17>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: windowtext 1pt solid; WIDTH: 41.55pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=55 height=17 x:num>
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">14<o:p></o:p></SPAN></FONT></P></TD>
<TD style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 40pt; PADDING-TOP: 0in; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 12.75pt" vAlign=bottom width=53 height=17 x:num="0.3923444976076555">
<P class=MsoNormal style="TEXT-ALIGN: right" align=right><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri">0.392<o:p></o:p></SPAN></FONT></P></TD></TR></TBODY></TABLE>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">&nbsp;<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">After creating a cube from a measure group based on this fact table, I opened the Calculation tab of the cube designer, clicked the Script View button on the designer toolbar, and added the following code below the CALCULATE; command:<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face="Courier New" color=blue size=2><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">this</SPAN></FONT><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> = <FONT color=maroon><SPAN style="COLOR: maroon">STRTOMEMBER</SPAN></FONT>(<FONT color=maroon><SPAN style="COLOR: maroon">"[Geography].[Geography].[City].["</SPAN></FONT> + [Geography].[Geography].<FONT color=maroon><SPAN style="COLOR: maroon">CurrentMember</SPAN></FONT>.<FONT color=blue><SPAN style="COLOR: blue">Name</SPAN></FONT> + <FONT color=maroon><SPAN style="COLOR: maroon">"]"</SPAN></FONT>);<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p>&nbsp;</o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri">I deployed the project and browsed the cube as shown below. Note the values at the state, country, and All level do not aggregate the value on the city level, but use the values provided in the fact table.<o:p></o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.25in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p><IMG src="http://blog.datainspirations.com/images/35546-33075/AS_2.bmp">&nbsp;</o:p></SPAN></FONT></P>
<P style="MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0.5in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 0in"><FONT face=Calibri size=2><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri"><o:p></o:p></SPAN></FONT></P>]]></content>
	</entry>
	<entry>
		<title>Monitoring Report Execution Performance with Execution Logs</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2006/09/06/monitoring-report-execution-performance-with-execution-logs.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2006-09-06:d53769ab-5917-4dca-9eee-8210256d8814</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Reporting Services" />
		<updated>2006-09-06T08:56:00Z</updated>
		<published>2006-09-06T08:56:00Z</published>
		<content type="html"><![CDATA[Last month, Microsoft posted an excerpt&nbsp;from from the book, <A href="http://www.microsoft.com/MSPress/books/9153.asp">Microsoft SQL Server 2005 Reporting Services Step by Step</A>&nbsp;on the MSDN site. In this excerpt, you learn how to use Integration Services to extract data from the Reporting Services database to analyze performance data, such as processing and rendering times for reports. This excerpt expands upon the samples shipped with the product by showing you step by step how to set up and use the execution logging system. Links are provided to download the sample database and a sample solution with the Integration Services package and Reporting Services reports to get started. You can view the excerpt by clicking <A class="" href="http://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsql90/html/RSMnRptExPf.asp" target=_blank>here</A>. Enjoy!]]></content>
	</entry>
	<entry>
		<title>Using a Single Package Configurations Table to Manage Package Execution on Multiple Servers</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2006/08/28/using-a-single-package-configurations-table-to-manage-package-execution-on-multiple-servers-2.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2006-08-28:106b3408-3073-490c-be83-3f6c2662dbb7</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Integration Services" />
		<updated>2006-08-28T23:23:42Z</updated>
		<published>2006-08-28T22:00:00Z</published>
		<content type="html"><![CDATA[<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">A question was asked in a recent class about whether a single configuration table could be used to hold settings for a package that is copied to multiple servers. In the particular example we discussed in class, the package executes on these separate servers and also happens to extract from and/or load to databases on the same servers. The student asking the question indicated there were many servers in the work environment hosting identical databases containing different data and was curious if the process of maintaining configurations could be simplified by using one table. I have seen several ways to approach configuration table management in blogs and forums, but for the benefit of my class, I'm including the following notes as a more polished version of the specific discussion we had. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><U><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">The Situation<o:p></o:p></SPAN></U></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">There are three database servers, each of which host a common database (i.e. same name, structure, different data). For this example, let's identify these servers as Server_A, Server_B, and Server_C. The database on each of these servers is MyDatabase.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>A separate database server, Server_ITMgmt, hosts a configuration table to store settings for any server on which SSIS packages execute. <o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">The final configuration is shown in the following illustration. You can read the details about how we implemented the design in class below. <BR><o:p><BR><IMG src="http://blog.datainspirations.com/images/35546-33075/Pkg_Config_0.JPG"><BR><BR><BR></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><U><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">The Objective<o:p></o:p></SPAN></U></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Execute MyPackage to extract data from MyDatabase on each of the three servers. During development of the package, you define a connection to a single server; let's assume Server_A for this example. However, you can easily use this same package to connect to databases on other servers by using a package configuration to change the server named in the connection string at runtime. Even though the same package is subsequently deployed to separate servers, all configuration settings for each server are defined in a single table. Let's say this table is MyConfigurations in the MySSISConfigurations<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>database on Server_ITMgmt. <o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Beyond the placement of the package on all servers and the need to connect to a different server at runtime, the purpose of this package isn't particularly relevant. If I define a specific scenario, there are likely to be other ways to tackle the problem while the goal of this discussion is to focus on one approach to using package configurations. That's my story and I'm sticking to it. <o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><U><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">The Steps - An Overview<o:p></o:p></SPAN></U></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">First, let's review the steps to perform at a high level so you can see where we're heading and have the main steps available as a quick reference. In the next section, I'll break down each step in greater detail.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<OL>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Create environment variables on each server to identify the location of the XML configuration file and the filter used to locate values in the configuration table.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Add a Connection Manager to define the connection string to the configuration database.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Create an XML configuration file (.dtsConfig) to define a direct connection to the configuration table.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Copy the XML configuration file to the other servers and then edit the file to update the server name in the connection string.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Create a direct SQL Server configuration to connect to the configuration database.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Replace the direct configurations with indirect configurations.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Populate the configuration table with values for the remaining servers. <o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Test the package configurations by executing the package on each server.<o:p></o:p></SPAN></DIV></LI></OL>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><U><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">The Steps - In Detail<o:p></o:p></SPAN></U></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; TEXT-INDENT: -0.25in; mso-outline-level: 1; mso-list: l0 level1 lfo1; tab-stops: list 0in"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana; mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN></SPAN></B><SPAN dir=ltr><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">1. Create environment variables on each server to identify the location of the XML configuration file and the filter used to locate values in the configuration table.</SPAN></B></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Environment variables are useful when you plan to execute the same package on more than one server and need a common location to store information for package configurations. On each server, you can create system environment variables as shown below. <o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><BR></P><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">Server A</SPAN></B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">PKG_CONFIG_LOCATION<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">C:\ETL\ConfigurationConnection.dtsConfig<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">PKG_CONFIG_FILTER<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">"Server_ITMgmt.MySSISConfigurations";"[dbo].[MyConfigurations]";"Server_A";<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></SPAN></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">Server B</SPAN></B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">PKG_CONFIG_LOCATION<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">C:\ETL\ConfigurationConnection.dtsConfig<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">PKG_CONFIG_FILTER<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">"Server_ITMgmt.MySSISConfigurations";"[dbo].[MyConfigurations]";"Server_B";<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></SPAN></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">Server C</SPAN></B><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">PKG_CONFIG_LOCATION<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">C:\ETL\ConfigurationConnection.dtsConfig<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">PKG_CONFIG_FILTER<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Verdana">"Server_ITMgmt.MySSISConfigurations";"[dbo].[MyConfigurations]";"Server_C";<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"></o:p></SPAN><BR></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">As you'll see in later steps, the value of PKG_CONFIG_LOCATION identifies the dtsConfig file, an XML configuration file containing the connection string to the MySSISConfigurations database. It doesn't matter whether the name of the dtsConfig file on each server is the same or different or whether they are stored in a consistent location, although it's easier to manage if you maintain some sort of consistency. The key here is the difference in the file contents which you'll define in step 3.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><STRONG><BR>2. </STRONG></SPAN><SPAN dir=ltr><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><STRONG>Add a Connection Manager to define the connection string to the configuration database</STRONG></SPAN></SPAN></P>
<UL>
<LI>
<DIV style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Open the package in Business Intelligence Development Studio.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Connection Managers tray at the bottom of the package designer, right-click and then click New OLE DB Connection on the context menu.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Configure OLE DB Connection Manager dialog box, select an existing data connection if you have one already for the database to host the configuration table, or click New to create a new data connection. If you create a new data connection, you'll need to specify the server name, authentication method, and database. Once created, you can select the new data connection. Click OK to close the dialog box.</SPAN></DIV></LI></UL>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">The connection manager appears in the format ServerName.Database name in the Connection Managers tray. You might consider renaming the connection manager to make it more generic for use across many servers. I named mine Configuration.<BR></SPAN></P></BLOCKQUOTE>
<UL><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Save the package, but keep the package designer open.<o:p></o:p></SPAN></DIV></LI></UL>
<P dir=ltr style="MARGIN-RIGHT: 0px"></o:p></SPAN><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">3. Create an XML configuration to define a direct configuration to the configuration table.</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">A two-part approach to package configurations is recommended to accommodate relocation of the configuration table in the future: an XML configuration and a SQL Server configuration. The XML configuration file contains the connection string to the table in a SQL Server database. The table, in turn, contains connection strings to use for the multiple servers.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>You can't very well have the package configuration connect to the table without having defined the connection string first. Also, if you move the table to another location, it's very easy to modify the dtsConfig file using a text editor. <BR><BR></P>
<UL dir=ltr style="MARGIN-RIGHT: 0px">
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">On the SSIS menu, click Package Configurations.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Select the Enable Package Configurations check box, and then click Add.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">On the Welcome page of the Package Configuration Wizard, click Next (unless you have already disabled this page, in which case you can skip this step).<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">On the Select Configuration Type page of the Package Configuration Wizard, keep the default selection for Configuration Type:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>XML Configuration File.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Type a name and location for the file (consistent with the values used for the environment variable PKG_CONFIG_LOCATION in the previous step) in the Configuration File Name box: <B>C:\etl\ConfigurationConnection.dtsConfig</B>, and then click Next. </SPAN>At this point, the file doesn't exist, but the wizard will create it. We will eventually change the configuration to look at the environment variable to find the configuration file. </o:p></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Optionally, you can replace the default name, Configuration 1, with an alternate name, such as <B>Configuration Table Connection</B>.</SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Finish, and leave the Package Configurations Organizer open.</SPAN></DIV></LI></UL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><BR></SPAN><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">4. Copy the XML configuration file to the other servers.</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<BR><BR></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Using your preferred method, copy the ConfigurationConnection.dtsConfig file from the C:\etl folder on Server_A to the same folder on Server_B and Server_C. <BR><BR></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">5. Create an direct SQL Server configuration to connect to the configuration database.</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">This step builds the table and populates with initial values, but you'll replace this configuration with an indirect configuration in the next step. It's just much easier to let the wizard do the bulk of the work for you.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.25in; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<UL dir=ltr style="MARGIN-RIGHT: 0px">
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Switch to Business Intelligence Development Studio, and then, in the Package Configurations Organizer, click Open. (If you closed the dialog box, you can access it again on the SSIS menu by clicking Package Configurations.)<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Add, and click Next if you see the Welcome page of the wizard.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">On the Select Configuration Type page of the wizard, in the Configuration Type drop-down list, select SQL Server.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Connection drop-down list, select the connection manager you created in Step 2. <o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">To the right of the Configuration Table drop-down list, click New.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Optionally, change the name of the table. For my scenario, I used MyConfigurations. Click OK to execute the script creating the table.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Configuration Filter drop-down list, type <B>Server_A</B>. </SPAN></DIV><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></LI></UL>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">You can use any string for a configuration filter. When the package executes using this configuration, all rows with this string will be selected from the configuration table, and the configuration settings will be applied to the package. If the table already exists, you can select any existing filter in the drop-down list.<BR><o:p></P></BLOCKQUOTE>
<UL dir=ltr style="MARGIN-RIGHT: 0px">
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Next.</SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">On the Select Properties To Export page of the wizard, scroll (up, usually) to locate the Connection Managers folder, expand the connection manager for the database on Server_A from which your package extracts data, expand the Properties folder, select the ConnectionString check box, and then click Next.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Optionally, you can replace the default name, Configuration 1, with an alternate name, such as <B>Source Database Connection</B>.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Finish, and leave the Package Configurations Organizer open.<o:p></o:p></SPAN></DIV></LI></UL>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><IMG src="http://blog.datainspirations.com/images/35546-33075/Pkg_Confg_1.JPG"><BR><BR></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">At this point, you have two configurations. The XML configuration points directly to a physical location on the file system and the SQL Server configuration points directly to a table in a specific SQL Server database.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>By creating the direct connections first, you have a dtsConfig file and a configuration table that are properly structured. Next, you'll replace the direct configurations with indirect configurations that use the environment variable values to locate the values for the two configurations.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Hint: Take a good look at the Configuration String for the SQL Server configuration type. You'll need to use a similarly constructed string in the environment variable for the indirect SQL Server configuration.<o:p></o:p></SPAN></I></P></BLOCKQUOTE>
<P dir=ltr style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><BR></P><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">6. Replace the direct configurations with indirect configurations.</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1">&nbsp;<o:p></o:p></SPAN></P>
<UL>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Package Configurations Organizer, select the XML configuration, and then click Edit.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Next to bypass the Welcome page if necessary, and then, on the Select Configuration Type page, select the Configuration Location Is Stored In An Environment Variable radio button.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Environment Variable drop-down list, select PKG_CONNECTION_LOCATION, click Next, and then click Finish.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Select the SQL Server configuration, and then click Edit.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Next to bypass the Welcome page if necessary, and then, on the Select Configuration Type page, select the Configuration Location Is Stored In An Environment Variable radio button.<o:p></o:p></SPAN></DIV>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Environment Variable drop-down list, select PKG_CONFIG_FILTER, click Next, and then click Finish.<o:p></o:p></SPAN></DIV></SPAN></LI></UL>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><IMG src="http://blog.datainspirations.com/images/35546-33075/Pkg_Confg_2.JPG"><BR><BR><BR><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></P>
<UL dir=ltr style="MARGIN-RIGHT: 0px">
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt -0.25in; VERTICAL-ALIGN: middle; mso-outline-level: 1">Click Close to close the Package Configurations Organizer.</DIV></LI></UL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">7. Populate the configuration table with values for the remaining servers.</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">At this point, the configuration table contains values only for Server_A based on the selection of the ConnectionString property when creating the direct configuration. Now you'll add rows for Server_B and Server_C.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Since the table is small and since I have only two rows to add, I am going to do the horror of horrors and manually key in values. To be more precise, since I'm loathe to type more than I must, I actually copied the first row and pasted into a new row, changing values in the ConfigurationFilter and ConfiguredValue columns to point to the proper server. If your conscience moves you to do otherwise, set up a script to insert the necessary values. <o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Using SQL Server Management Studio (or your favorite method), insert values into the configuration table,&nbsp;so the first two columns in the table looks similar to the image bloew&nbsp;and the third column contains \PackageConnections[Source_DB].Properties[ConnectionString] (space doesn't permit a full image - sorry):<BR></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><BR><IMG src="http://blog.datainspirations.com/images/35546-33075/Pkg_Confg_4.JPG"><BR></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">8. Test the package configurations by executing the package on each server.</SPAN></B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Just as there are many ways to configure a package to use different values at runtime, there are many ways to execute a package. For this example, I'll assume that each package is copied to the file system of each server. The simplest way to execute a package on the file system is to use the DTEXECUI utility.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<UL>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Start, click Run, type <B>dtexecui </B>in the Run dialog box, and then click OK.<o:p></o:p></SPAN></DIV></LI>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">In the Execute Package Utility dialog box, in the Package Source drop-down list, select File System.<o:p></o:p></SPAN></DIV></LI>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click the ellipsis button to the right of the Package box, navigate to your package file, and double-click to select it.<o:p></o:p></SPAN></DIV></LI>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt; VERTICAL-ALIGN: middle; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Click Execute.<o:p></o:p></SPAN></DIV></LI></UL>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Note: If you don't configure the environment variables, the package will run without error or warning using the properties defined in the package. If the package doesn't produce the results you expect from the revised configuration, try the following steps:<o:p></o:p></SPAN></I></P>
<UL>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt 9pt; VERTICAL-ALIGN: middle; mso-outline-level: 2"><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Double-check the values in the XML file.</SPAN></I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></DIV></LI>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt 9pt; VERTICAL-ALIGN: middle; mso-outline-level: 2"><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Make sure the environment variables are configured properly. </SPAN></I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></LI>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt 9pt; VERTICAL-ALIGN: middle; mso-outline-level: 2"><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Verify the values in each column of the configuration table are correct.</SPAN></I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></DIV></LI>
<LI>
<DIV class=MsoNormal style="MARGIN: 0in 0in 0pt 9pt; VERTICAL-ALIGN: middle; mso-outline-level: 2"><I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Open the package on the alternate server using Business Intelligence Development Studio and check the configuration settings. </SPAN></I><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p></o:p></SPAN></DIV></LI></UL>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">&nbsp;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><B><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Summary<o:p></o:p></SPAN></B></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">With Integration Services, you can devise many different solutions for modifying the behavior of a package at runtime. There are other configuration types you could use, such as registry entries or parent package variables. You can refer to different configuration files at runtime or even set different properties when using the execution utilities.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Of course, you could also separate packages from the database servers and use a single SSIS server to execute one package against multiple servers. The point of our discussions was not to explore all possible ways to design a package for reuse, but specifically to build one configuration table to be used by all servers running SSIS packages. Specifically, one environment variable identifies the location of the XML file pointing to the configuration table and another environment variable provides the information needed to select the applicable rows from that configuration table. Thus, one possible approach is to copy a package from server to server and then use the server-specific settings to modify the package behavior at run-time. Package configurations provide endless flexibility for modifying package execution.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt; mso-outline-level: 1"></SPAN></P></o:p></SPAN></o:p></SPAN></o:p></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN>]]></content>
	</entry>
	<entry>
		<title>Integration Services Miscellany</title>
		<link rel="alternate" href="http://blog.datainspirations.com/2006/08/14/integration-services-miscellany.aspx?ref=rss" />
		<id>tag:blog.datainspirations.com,2006-08-14:3697a2fa-cd98-4def-9d8e-ca09147b07c9</id>
		<author>
			<name>Stacia Misner</name>
		</author>
		<category term="Integration Services" />
		<updated>2006-08-14T21:08:00Z</updated>
		<published>2006-08-14T21:08:00Z</published>
		<content type="html"><![CDATA[With so many bloggers out there already, I thought&nbsp;I had little to add&nbsp;to the variety of conversations occuring regularly in blogs devoted to Microsoft BI technology stack. However, after teaching a class recently for <A class="" href="http://www.sqlu.com/" target="">Solid Quality Learning University</A>, I was encouraged by the students to establish a blog for the purpose of sharing information that we&nbsp;didn't get a chance to explore further in class or&nbsp;providing a written record of topics that we did discuss that were outside the scope of the course materials.&nbsp;<BR><BR>Some caveats -&nbsp;I probably won't limit myself to classroom topics and I probably won't maintain a regular schedule of blogging. On that note, I'm plunging forward with my first blog today and hope the subject matter in this and future blogs will be useful to someone out there. If you have something to add as a point of clarification or an alternate solution, I welcome your comments. And, of course, if something I write leads to more questions, I'm happy to answer if I can. <BR><BR>Today I'm posting&nbsp;responses to&nbsp;some specific questions I received. <BR><BR><STRONG>SSIS and Lotus Notes<BR></STRONG>Q. Is there a data source adapter for Lotus Notes that can be acquired for use in SSIS?<BR><BR>A.&nbsp; One&nbsp;appears be in the works, although no timeline for availability is evident. There is a <A class="" href="http://www.persistentsys.com/media/pdf/pressrelease2006/persistent_microsoft_ssis_connector_factory.pdf" target="">press release</A> describing the relationship between Microsoft and Persistent Systems Pvt. Ltd. The press release includes Lotus Notes as one of many connectors to be created. However, the <A class="" href="http://www.persistentsys.com/techareas/connectors.htm" target="">Persistent Systems&nbsp;web site listing connectors </A>doesn't list Lotus Notes at this time. If it's available, the company isn't making that fact very clear. <BR><BR><BR><STRONG>DTS Migration Case Study</STRONG><BR>Q. Are any case studies available for using the Package Migration Wizard to convert DTS packages to SSIS packages?<BR><BR>A. The only one I've seen is the one that describes <A class="" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/SQL05InSrREAL.asp" target="">lessons learned from Project REAL</A>. There is a lot of good information here above and beyond the wizard.<BR><BR><STRONG>Package Ownership<BR></STRONG>Q. Who "owns" a package once it is deployed to the Integra