<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6855339694180792214</atom:id><lastBuildDate>Fri, 10 Jul 2009 13:59:13 +0000</lastBuildDate><title>Jessica M. Moss</title><description>BI, SSIS, and other ABCs</description><link>http://jessicammoss.blogspot.com/</link><managingEditor>noreply@blogger.com (Jessica M. Moss)</managingEditor><generator>Blogger</generator><openSearch:totalResults>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JessicaMoss" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-324455589274768902</guid><pubDate>Thu, 09 Jul 2009 03:12:00 +0000</pubDate><atom:updated>2009-07-08T20:12:15.278-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Community</category><title>Sitting on the beach in Pensacola</title><description>&lt;p&gt;The &lt;a href="http://www.sqlsaturday.com/"&gt;SQLSaturday&lt;/a&gt; phenomenon is taking over the nation!&amp;#160; I was honored to be selected to give a presentation at the Pensacola event on June 6, 2009 on PerformancePoint Server 2007 M&amp;amp;A (I'm still waiting to hear more information about next version incorporated with SharePoint :))&amp;#160; I had a great time seeing the SQLSaturday crew, old friends, and meeting some new friends! &lt;/p&gt;  &lt;p&gt;While I was down in beautiful Pensacola, I was also thrilled to participate in the third episode of the &lt;a href="http://channel9.msdn.com/shows/toolshed/"&gt;It's All About The Tools TV Show&lt;/a&gt;!&amp;#160; I gave a demonstration on the SSIS 2008 data profiling tools - you can check it out here: &lt;a href="http://channel9.msdn.com/shows/toolshed/Show-Episode-3-Its-All-About-The-Tools-TV-Show/"&gt;http://channel9.msdn.com/shows/toolshed/Show-Episode-3-Its-All-About-The-Tools-TV-Show/&lt;/a&gt;.&amp;#160; &lt;a href="http://blogs.msdn.com/rfustino/"&gt;Russ Fustino&lt;/a&gt; and &lt;a href="http://www.vbnetexpert.com/"&gt;Stan Schultes&lt;/a&gt; put on a great show that I'm sure you're going to enjoy!&lt;/p&gt;  &lt;p&gt;I really enjoy speaking at events and sharing information on data warehousing and the Microsoft business intelligence suite.&amp;#160; I’ll warn you in advance that I prioritize engagements based on the shortest distance to water, sunshine, and community -- and not necessarily in that order :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-324455589274768902?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/JTJZtXuksfw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/JTJZtXuksfw/sitting-on-beach-in-pensacola.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/07/sitting-on-beach-in-pensacola.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-4399365323881238679</guid><pubDate>Tue, 19 May 2009 10:00:00 +0000</pubDate><atom:updated>2009-05-19T03:00:38.990-07:00</atom:updated><title>SQLTeach Vancouver 2009</title><description>&lt;p&gt;On June 8-12, I'll be attending and speaking for the &lt;a href="http://www.sqlteach.com/"&gt;DevTeach/SQLTeach Vancouver conference&lt;/a&gt;.  I've written about SQLTeach before, and I have to say that it's one of my favorite conferences.  It's a small group of attendees with speakers who are some of the biggest names in the field.  You really get a great opportunity to learn from and hobnob with speakers such as Peter DeBetta, Bill Graziano, Kevin Kline, Joe Webb, and more!  I know I'm looking forward to picking their brains on a few things. &lt;/p&gt;&lt;p&gt;A few highlights of the conference:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Monday night: Party with Vancouver IT community DevTeach Kickoff party &lt;/li&gt;&lt;li&gt;Weekend after: Alt.NET event - DevTeach attendees receive a special registration code &lt;/li&gt;&lt;li&gt;Preconferences: 3 preconferences on Silverlight, F#, and Agile Development &lt;/li&gt;&lt;li&gt;Keynote: Tim Huckaby will discuss "Your Development Happy Place" &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.sqlteach.com/Register.aspx"&gt;Register soon&lt;/a&gt; to get a great deal - the conference is right around the corner.  I look forward to seeing you there!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-4399365323881238679?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/zHdFfb-ZuH0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/zHdFfb-ZuH0/sqlteach-vancouver-2009.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/05/sqlteach-vancouver-2009.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-8563170357837943138</guid><pubDate>Thu, 14 May 2009 05:24:00 +0000</pubDate><atom:updated>2009-05-13T22:32:45.142-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSIS</category><title>Dimension ETL from One Source Table</title><description>&lt;p&gt;In an ideal world, the source system of your data warehouse has the exact information that you need to populate all of the fields in your dimensions.&amp;#160; In a less than ideal world (also known as the real world), we need to cobble pieces of data together.&amp;#160; You may come across one scenario where all of your dimension and fact information is in one large table.&amp;#160; How do we handle this ETL in SQL Server Integration Services?&lt;/p&gt;  &lt;p&gt;It is possible to load new records into your dimensions while loading your fact.&amp;#160; One way would be to use a Lookup transformation to check for existence, and if the business key doesn't yet exist, insert that value, return the surrogate key, and go along your merry way.&amp;#160; On the other hand, if you need to use those dimensions for other fact tables, you may decide to load only your dimensions first.&lt;/p&gt;  &lt;p&gt;To load all dimensions from one table, we can utilize the Aggregate transformation in SSIS, which provides the capability to perform aggregations on columns in your data flow.&amp;#160; The aggregations that are available to you include: Count, Count distinct, Sum, Average, Minimum, and Maximum.&amp;#160; You also include a column to group the data.&amp;#160; For the output that you're setting up, you can add as many columns to aggregate or group by that you need.&amp;#160; For those of you familiar with T-SQL, this concept should be very similar to the GROUP BY clause.&lt;/p&gt;  &lt;p&gt;When we're working with aggregations in SSIS, there are a few other things we should mention.&amp;#160; The aggregate transformation will not pass through all input columns, only the columns that you specify in your settings.&amp;#160; You can set comparison flags on your grouping columns on how to group the data together.&amp;#160; I also use the &amp;quot;Ignore case&amp;quot; option to help get a list of case insensitive distinct values from the column.&lt;/p&gt;  &lt;p&gt;Initially opening up the Aggregate transformation allows you to set up the columns you want aggregated and what you want to group by.&amp;#160; In this scenario, we will use the Group By function for each column to get a distinct list of values; however, if we put all of them on this screen, we will still end up with duplicate values.&amp;#160; Instead, we want to create multiple outputs that each contain a single Group By on the appropriate column.&lt;/p&gt;  &lt;p&gt;There's a sneaky little button at the top of the designer window that toggles between &lt;strong&gt;Advanced &lt;/strong&gt;and &lt;strong&gt;Basic &lt;/strong&gt;modes.&amp;#160; It defaults to &lt;strong&gt;Basic&lt;/strong&gt;, which is why you only see one list right now.&amp;#160; Push that button to toggle to &lt;strong&gt;Advanced&lt;/strong&gt; and create a different output for each dimension you need to populate.&amp;#160; Once you have a different output, you can perform a lookup against that dimension and only insert records that do not exist.&amp;#160; We end up with a package that looks similar to this to load all of our dimensions:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img src="http://www.jessicammoss.com/images/AggregateBlog.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;The aggregate transformation has a little bit of a bad reputation, as well it should.&amp;#160; It is an asynchronous component, so it creates a new buffer set when it runs, uses a huge amount of memory, and slows down your package execution time.&amp;#160; See Kirk's great article about performance tuning SSIS (the aggregate transformation notes are applicable to both 2005 and 2008) for more information: &lt;a href="http://www.simple-talk.com/sql/sql-server-2005/sql-server-2005-ssis-tuning-the-dataflow-task/"&gt;http://www.simple-talk.com/sql/sql-server-2005/sql-server-2005-ssis-tuning-the-dataflow-task/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This method may not be the best for your situation.&amp;#160; It will load the source data twice and doesn’t take into account any slowly changing attributes.&amp;#160; This should only be used if the situation calls for it.&amp;#160; Hopefully, this will help you if you do fall into that situation!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Version used: SSIS 2008 SP1&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-8563170357837943138?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/wlr-a7Lq7fs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/wlr-a7Lq7fs/dimension-etl-from-one-source-table.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/05/dimension-etl-from-one-source-table.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-6007692275121771595</guid><pubDate>Thu, 26 Feb 2009 21:51:00 +0000</pubDate><atom:updated>2009-02-26T13:54:01.593-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSIS</category><title>SSIS Insert Statement Using an OLE DB Destination</title><description>&lt;p&gt;When building a SQL Server Integration Services package, many business scenarios call for inserting a record into a table if it doesn't already exist.  The most commonly used database destination, the OLE DB destination, looks as though it can handle this through the &lt;strong&gt;SQL command&lt;/strong&gt; Data access mode.  Unfortunately, SSIS appearances can be deceiving... &lt;/p&gt;&lt;p&gt;In the OLE DB Destination, setting the Data access mode to &lt;strong&gt;SQL command&lt;/strong&gt; causes a SQL command text window to appear.  You can perform typical SSIS SQL statement actions, such as building the query through the Graphical Query Designer, importing the SQL from an external file, or parsing the query.  Note that there is no option to specify query parameters on this display.   You will not need to set query parameters because the OLE DB Destination uses this SQL statement to find the metadata of the desired insertion table.  Even adding a WHERE clause to filter the data will not change the outcome of the result.  All rows passed through the Data Flow pipeline are inserted into the destination table. &lt;/p&gt;&lt;p&gt;The SSIS OLE DB Destination uses the OLE DB Provider specified in the connection manager associated with that destination.  The resulting SQL statements from the OLE DB Provider set to use the &lt;strong&gt;SQL command&lt;/strong&gt; resemble the SQL statements from the &lt;strong&gt;Table or view&lt;/strong&gt; Data access mode.  I created an SSIS packages that inserts data into the AdventureWorksDW DimProductCategory table using both destination data access modes.  The insert portions (taken from SQL Profiler) both match this code:&lt;/p&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;span style="color:#0000ff;"&gt;exec&lt;/span&gt; sp_cursor 180150003,4,0,N&lt;span style="color:#006080;"&gt;'[DimProductCategory]'&lt;/span&gt;,@ProductCategoryAlternateKey=9,@EnglishProductCategoryName=N&lt;span style="color:#006080;"&gt;'Bikes'&lt;/span&gt;,@SpanishProductCategoryName=N&lt;span style="color:#006080;"&gt;'Bicicleta'&lt;/span&gt;,@FrenchProductCategoryName=N&lt;span style="color:#006080;"&gt;'Vélo'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;exec&lt;/span&gt; sp_cursor 180150003,4,0,N&lt;span style="color:#006080;"&gt;'[DimProductCategory]'&lt;/span&gt;,@ProductCategoryAlternateKey=10,@EnglishProductCategoryName=N&lt;span style="color:#006080;"&gt;'Components'&lt;/span&gt;,@SpanishProductCategoryName=N&lt;span style="color:#006080;"&gt;'Componente'&lt;/span&gt;,@FrenchProductCategoryName=N&lt;span style="color:#006080;"&gt;'Composant'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;go&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Note that sp_cursor, an internal API server cursor call that the OLE DB Provider uses, performs the insert. &lt;/p&gt;&lt;p&gt;The difference in these two methods is in the set up of the initial cursor.  The &lt;strong&gt;SQL command&lt;/strong&gt; method uses two statements:&lt;/p&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p1 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p1=1073741825&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p5 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p5=229378&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p6 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p6=294916&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;exec&lt;/span&gt; sp_cursorprepare @p1 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,&lt;span style="color:#0000ff;"&gt;NULL&lt;/span&gt;,N&lt;span style="color:#006080;"&gt;'SELECT  ProductCategoryKey&lt;br /&gt;    ,ProductCategoryAlternateKey&lt;br /&gt;    ,EnglishProductCategoryName&lt;br /&gt;    ,SpanishProductCategoryName&lt;br /&gt;    ,FrenchProductCategoryName&lt;br /&gt;FROM    DimProductCategory&lt;br /&gt;WHERE   ProductCategoryKey &amp;lt;&amp;gt; 1'&lt;/span&gt;,1,@p5 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,@p6 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; @p1, @p5, @p6&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p2 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p2=180150003&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p3 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p3=2&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p4 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p4=4&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p5 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p5=-1&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;exec&lt;/span&gt; sp_cursorexecute 1073741825,@p2 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,@p3 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,@p4 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,@p5 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; @p2, @p3, @p4, @p5&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;go&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;While the &lt;strong&gt;Table or view&lt;/strong&gt; method uses just one:&lt;br /&gt;&lt;br /&gt;&lt;pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"   &gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p1 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p1=180150003&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p3 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p3=2&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p4 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p4=4&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;declare&lt;/span&gt; @p5 &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; @p5=-1&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;exec&lt;/span&gt; sp_cursoropen @p1 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,N&lt;span style="color:#006080;"&gt;'select * from [dbo].[DimProductCategory]'&lt;/span&gt;,@p3 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,@p4 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;,@p5 &lt;span style="color:#0000ff;"&gt;output&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; @p1, @p3, @p4, @p5&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You can solve the original business problem of only inserting records if it doesn't already exist by performing a lookup against your destination table, redirecting the rows that do not match, and inserting those rows using the OLE DB Destination.  Depending on your particular scenario, other methods also exist that do not use a lookup.  Whichever method you use, know that it will not entail a hand-written insert statement from an OLE DB Destination.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Version used: SQL Server 2005&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-6007692275121771595?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/P1JPREnjqyI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/P1JPREnjqyI/ssis-insert-statement-using-ole-db.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/02/ssis-insert-statement-using-ole-db.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-5080327924482965158</guid><pubDate>Fri, 13 Feb 2009 05:14:00 +0000</pubDate><atom:updated>2009-02-12T21:14:57.123-08:00</atom:updated><title>SQL Down Under</title><description>&lt;p&gt;I had the honor of being invited to join &lt;a href="http://sqlblog.com/blogs/greg_low/default.aspx"&gt;Greg Low&lt;/a&gt;, fellow &lt;a href="http://www.solidq.com"&gt;Solid Quality&lt;/a&gt; mentor, on an episode of &lt;a href="http://www.sqldownunder.com/"&gt;SQL Down Under&lt;/a&gt;.&amp;#160; On last week’s episode, we discussed the new features of SQL Server Reporting Services 2008 and best practices for all versions of Reporting Services.&amp;#160; You can check out the &lt;a href="http://www.sqldownunder.com/PreviousShows/tabid/98/Default.aspx"&gt;episode here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;During the episode, Greg and I talked about reports that can be used to monitor Reporting Services.&amp;#160; You can find these reports on &lt;a href="http://www.codeplex.com/MSFTRSProdSamples/Wiki/View.aspx?title=SS2005%21Server%20Management%20Sample%20Reports&amp;amp;referringTitle=Home"&gt;CodePlex&lt;/a&gt;.&amp;#160; Also, the design book that I mentioned is called &lt;a href="http://www.amazon.com/Information-Dashboard-Design-Effective-Communication/dp/0596100167/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234501948&amp;amp;sr=8-1"&gt;Information Dashboard Design&lt;/a&gt;.&amp;#160; I hope you enjoy the episode and these resources!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-5080327924482965158?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/CcdCcA81KPE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/CcdCcA81KPE/sql-down-under.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/02/sql-down-under.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-5205261378951810175</guid><pubDate>Tue, 27 Jan 2009 05:02:00 +0000</pubDate><atom:updated>2009-01-26T21:02:41.992-08:00</atom:updated><title>Analysis Services MDX Templates Exploration</title><description>&lt;p&gt;While looking in SQL Server Management Studio for something else entirely, I stumbled upon the Template Explorer.&amp;#160; This window provides Analysis Services templates for querying data mining structures (DMX), querying cubes (MDX), and performing DDL (XMLA).&amp;#160; I took a deeper look into the “MDX Queries” templates.&lt;/p&gt;  &lt;p&gt;To view the Template Explorer, select the &lt;strong&gt;View&lt;/strong&gt; menu &amp;gt; &lt;strong&gt;Template Explorer&lt;/strong&gt; option.&amp;#160; To see the Analysis Services template, select the Analysis Services cube option at the top of the window.&amp;#160; Double-clicking any of the templates listed will then open a new query window containing the selected query.&amp;#160; For example, the Basic Query will show the following:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;row_axis, mdx_set,&amp;gt; &lt;font color="#0000ff"&gt;on Columns&lt;/font&gt;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;column_axis, mdx_set,&amp;gt; &lt;font color="#0000ff"&gt;on Rows&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff"&gt;From&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;from_clause, mdx_name,&amp;gt;       &lt;br /&gt;&lt;font color="#0000ff"&gt;Where&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;where_clause, mdx_set,&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;You have two choices at this point in time: selecting the &lt;strong&gt;Query&lt;/strong&gt; menu &amp;gt; &lt;strong&gt;Specify Values for Template Parameters&lt;/strong&gt; option or replacing the phrases enclosed by angle brackets manually.&amp;#160; The former choice opens a dialog box with all parameters listed to allow you to fill in the correct value; however, you will need to type in the full hierarchical structure by hand.&amp;#160; If you’re anything like me, this is bound to cause a typo and a few frustrating minutes of letter-by-letter comparison.&amp;#160; I prefer to modify the query directly by dragging the measure or dimensional attribute/hierarchy to my query window.&amp;#160; Then I don’t need to worry about mistyping anything.&lt;/p&gt;  &lt;p&gt;While these templates will not teach you how to write MDX, they are an easy way to save yourself some typing or looking up a particular keyword that you have forgotten.&amp;#160; Looking over the XMLA queries, they appear to be more useful, as I am forever looking up the exact syntax for a particular XMLA query.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Versions: SQL Server 2005/2008&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-5205261378951810175?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/vyWAMbH8_zY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/vyWAMbH8_zY/analysis-services-mdx-templates.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/01/analysis-services-mdx-templates.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-2905198326026308111</guid><pubDate>Fri, 09 Jan 2009 00:35:00 +0000</pubDate><atom:updated>2009-01-08T16:48:16.324-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSIS</category><title>SSIS Designer Tip</title><description>&lt;p&gt;When designing a SQL Server Integration Services package, it can seem tedious to drag over each and every task and component from the toolbox to your Control Flow and Data Flow and connect all of the precedence constraints and pipelines. You can alleviate some of this by modifying the default Business Intelligence options within Business Intelligence Development Studio (BIDS).&lt;br /&gt;&lt;br /&gt;Under the default settings, you can double-click any toolbox item and it will show up in your package designer with no connectors or specific place. To improve this, open up the Tools &gt; Options... menu in BIDS. Then expand Business Intelligence Designers and Integration Services Designers. You will see Control Flow Auto Connect and Data Flow Auto Connect. If you check the option to "Connect a new shape to the selected shape by default", the drop down lists for specifying connector type and location are enabled in each menu. I prefer to use a Success constraint and add the new shape to the right of the selected shape, but you have a few options based on your design predilection.&lt;br /&gt;&lt;br /&gt;Once these options are checked, double-clicking a toolbox item will add that item to the designer, using the options specified in the drop downs. You can of course change the type of constraint or move the item once it has been generated for you. Hopefully, this will save you a little bit of time when designing!&lt;br /&gt;&lt;br /&gt;[Hat tip] I read about this option from Donald Farmer's great &lt;a href="http://www.amazon.com/Rational-Guide-Extending-Script-Guides/dp/1932577254"&gt;SSIS Scripting book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Versions: Visual Studio 2005, Visual Studio 2008&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-2905198326026308111?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/u2Gx7fHJXiE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/u2Gx7fHJXiE/ssis-designer-tip.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/01/ssis-designer-tip.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-3702903310189337822</guid><pubDate>Mon, 05 Jan 2009 23:02:00 +0000</pubDate><atom:updated>2009-01-05T15:09:31.582-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Conference</category><category domain="http://www.blogger.com/atom/ns#">Community</category><title>Presentation References</title><description>Over the past two months, I had the honor of presenting at many user groups and conferences. I wanted to put together some information for those who attended (and for those who were unable to attend!).&lt;br /&gt;&lt;br /&gt;If you saw either "Building Reports in SQL Server Reporting Services 2008" or "New Features of SQL Server Integration Services 2008" and are excited to get your hands on a SQL Server 2008 instance, but your company won't upgrade... you can download a &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/try-it.aspx"&gt;free trial/evaluation&lt;/a&gt; version from Microsoft. Maybe you can even show your boss some of the things you learned from my presentation!&lt;br /&gt;&lt;br /&gt;@AndyLeonard: “You got your SSIS in my Twitter!”&lt;br /&gt;@JessicaMMoss: “You got your Twitter in my SSIS!”&lt;br /&gt;&lt;tab&gt;[Previous dialogue shamelessly stolen from &lt;a href="http://www.brentozar.com/"&gt;Brent Ozar's blog&lt;/a&gt; because it's a perfect lead-in to...]&lt;br /&gt;&lt;br /&gt;For those of you who are not familiar with &lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt;, it's a micro-blogging tool / social network platform that has completely taken off over the past year. &lt;a href="http://sqlblog.com/blogs/andy_leonard"&gt;Andy Leonard&lt;/a&gt; invited me to join in his &lt;a href="http://sqlblog.com/blogs/andy_leonard/archive/2008/11/10/pass-summit-2008-ssis-scripting.aspx"&gt;"once-a-decade" great idea&lt;/a&gt;, using SSIS to write to Twitter! You can download the current version of the &lt;a href="http://www.codeplex.com/SSISTwitterSuite"&gt;SSISTwitterSuite&lt;/a&gt; from &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sqlpass.org/"&gt;PASS&lt;/a&gt; puts on the largest SQL Server and Business Intelligence conference. If you attended, you can download the slides for both "SSIS Scripting" and "Building an SSIS Management Framework" (which I co-presented with Rushabh Mehta) by logging into the &lt;a href="http://summit2008.sqlpass.org/"&gt;summit site&lt;/a&gt;. As an attendee, you can also &lt;a href="http://www.softconference.com/pass/GENERIC.ASP?ID=3349"&gt;purchase a DVD&lt;/a&gt; of all of the sessions. If you are interested in the SSIS Framework discussed during the presentation, contact &lt;a href="http://www.solidq.com/na/NewsDetail.aspx?Id=2106"&gt;Solid Quality Mentors&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This was my second time speaking at the &lt;a href="http://www.sqlteach.com/"&gt;DevTeach/SQLTeach conference&lt;/a&gt; in Canada, and I was thrilled to speak on SSIS, SSRS, and Data Mining in Office 2007! If you attended the conference, you can sign in and download the slides and custom component code. If you have an inkling to work with the data mining tools, check out &lt;a href="http://www.sqlserverdatamining.com/"&gt;http://www.sqlserverdatamining.com/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally, the SQLPASS BI SIG Data Mining webcast was recorded. Once it is available, you should be able to listen to it at:&lt;br /&gt;&lt;a href="http://www.sqlpass.org/Community/SIGs/BusinessIntelligenceSIG/tabid/82/Default.aspx"&gt;http://www.sqlpass.org/Community/SIGs/BusinessIntelligenceSIG/tabid/82/Default.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I look forward to speaking at more events in the future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-3702903310189337822?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/peOT63ATIF4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/peOT63ATIF4/presentation-references.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2009/01/presentation-references.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-1768633563091879718</guid><pubDate>Sun, 02 Nov 2008 23:23:00 +0000</pubDate><atom:updated>2008-11-02T15:26:47.863-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Community</category><title>Jessica's BI Tour</title><description>I'll be flying up and down the east coast over the next two weeks, sharing information about the SQL Server Business Intelligence suite. I do hope you can make it to one of the sessions!&lt;br /&gt;&lt;br /&gt;11/3 - &lt;a href="http://tampabaybi.sqlpass.org/"&gt;Tampa Bay SQL Server Business Intelligence User Group&lt;/a&gt; - SSRS 2008&lt;br /&gt;11/6 - &lt;a href="http://sarasota.sqlpass.org/"&gt;Sarasota SQL Server Users Group&lt;/a&gt; - SSIS 2008&lt;br /&gt;11/11 - &lt;a href="http://opass.org/"&gt;Orlando PASS&lt;/a&gt; - SSRS 2008&lt;br /&gt;11/13 - &lt;a href="http://richmondsql.org/"&gt;Richmond SQL Server Users Group&lt;/a&gt; - SSRS 2008&lt;br /&gt;11/15 - &lt;a href="http://www.codecamp.org/"&gt;Raleigh Code Camp&lt;/a&gt; - SSRS 2008&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-1768633563091879718?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/LBfrc0yTRJA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/LBfrc0yTRJA/jessicas-bi-tour.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/11/jessicas-bi-tour.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-7312776357804196474</guid><pubDate>Tue, 21 Oct 2008 08:11:00 +0000</pubDate><atom:updated>2008-11-11T21:12:02.156-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSIS</category><title>Manipulating Excel Spreadsheets in SSIS</title><description>Tom, an attendee at last weekend’s &lt;a href="http://www.sqlsaturday.com/"&gt;SQLSaturday Olympia&lt;/a&gt;, asked me how to refresh a spreadsheet from within SQL Server Integration Services. My first thought was to turn on the connection’s “Refresh data when opening the file” option in the spreadsheet itself and avoid the situation entirely; however, this may not always be a viable solution. Here are the steps to perform the refresh from within an SSIS package.&lt;br /&gt;&lt;br /&gt;First, ensure that Microsoft.Office.Interop.Excel is registered in the GAC. If not, install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59daebaa-bed4-4282-a28c-b864d8bfa513&amp;amp;displaylang=en"&gt;2007 Microsoft Office system Primary Interop Assemblies&lt;/a&gt;. This will need to be done on any machine where you plan on running this package.&lt;br /&gt;&lt;br /&gt;Next, create a script task in your SSIS package that contains the following code (include your spreadsheet name):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Imports&lt;/span&gt; System&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Imports&lt;/span&gt; System.Data&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Imports&lt;/span&gt; System.Math&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Imports&lt;/span&gt; Microsoft.SqlServer.Dts.Runtime&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Imports&lt;/span&gt; Microsoft.Office.Interop.Excel&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Public Class&lt;/span&gt; ScriptMain&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Public Sub&lt;/span&gt; Main()&lt;br /&gt;Dts.TaskResult = Dts.Results.Success&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; excel &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; Microsoft.Office.Interop.Excel.Application&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; wb &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; Microsoft.Office.Interop.Excel.Workbook&lt;br /&gt;&lt;br /&gt;wb = excel.Workbooks.Open(&lt;span style="color:#990000;"&gt;"C:\\TestExcelSS.xlsx"&lt;/span&gt;)&lt;br /&gt;wb.RefreshAll()&lt;br /&gt;wb.Save()&lt;br /&gt;wb.Close()&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;excel.Quit()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Runtime.InteropServices.Marshal.ReleaseComObject(excel)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End Class&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You'll see error squiggles, but don't worry about them because they will disappear in just a minute. Save and close your package. In your Solution Explorer, right click on the package and select ‘View Code’.&lt;br /&gt;&lt;br /&gt;In the resulting XML, change the Build Settings ReferencePath property to:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;"C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.ScriptTask\9.0.242.0__89845dcd8080cc91\;C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\9.0.242.0__89845dcd8080cc91\;C:\Windows\assembly\GAC\Microsoft.Office.Interop.Excel\12.0.0.0__71e9bce111e9429c\"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also change the Build References to include:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;Reference&lt;br /&gt;Name = "Microsoft.Office.Interop.Excel"&lt;br /&gt;AssemblyName = "Microsoft.Office.Interop.Excel"&lt;br /&gt;/&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Save the XML, and reopen the package. Open the script task and select ‘Save’. This will compile the code, and now you can run your package.&lt;br /&gt;&lt;br /&gt;When working with COM references, you can use the script task GUI to add the reference by adding the desired component to the .NET framework folder. I could not find Microsoft.Office.Interop.Excel.dll on my machine to move to the framework folder, which is why we added the reference through the XML.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/06/21/excel-in-integration-services-part-3-of-3-issues-and-alternatives.aspx"&gt;Douglas Laudenschlager notes&lt;/a&gt;, writing server-side code to access client-side Office is &lt;a href="http://support.microsoft.com/kb/257757"&gt;unsupported&lt;/a&gt;. Please take these possible problems under advisement and code as necessary. You have been warned. :)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Update (11/12/08): Added last two lines to code to stop Excel process.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Versions: Microsoft Office 2007, SQL Server 2005 SP2&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-7312776357804196474?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/n47AvDcv4h4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/n47AvDcv4h4/manipulating-excel-spreadsheets-in-ssis.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">14</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/10/manipulating-excel-spreadsheets-in-ssis.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-8152345886413128188</guid><pubDate>Mon, 13 Oct 2008 05:28:00 +0000</pubDate><atom:updated>2008-10-12T22:30:57.090-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSRS</category><title>IIS 7.0 Role Service SSRS Requirements</title><description>Using the default IIS 7.0 installation on Windows Server 2008 does not include all of the role services necessary to install SQL Server Reporting Services 2005.  I found this command in an online forum when looking for a list of all the needed role services.  (By the way, I apologize, but I can no longer find the post to link back to.  If it was you who wrote it, please post a comment with a link back to that post!)&lt;br /&gt;&lt;br /&gt;Here is the command.  I hope it helps you as much as it helped me!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;ServerManagerCmd.exe -i Web-Server Web-Asp-Net Web-Http-Redirect Web-Windows-Auth Web-Metabase Web-WMI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Version: SQL Server 2005&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-8152345886413128188?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/DySK2b2WqK8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/DySK2b2WqK8/iis-70-role-service-ssrs-requirements.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/10/iis-70-role-service-ssrs-requirements.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-7248206604448599213</guid><pubDate>Thu, 09 Oct 2008 05:31:00 +0000</pubDate><atom:updated>2008-10-08T22:33:31.688-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">MVP</category><category domain="http://www.blogger.com/atom/ns#">Community</category><title>Microsoft MVP</title><description>&lt;p&gt;On October 1, 2008, I received notification that I was awarded as a &lt;a href="http://mvp.support.microsoft.com/"&gt;Microsoft Most Valuable Professional&lt;/a&gt;.  According to Microsoft, MVPs are "exceptional technical community leaders from around the world who are awarded for voluntarily sharing their high quality, real world expertise in offline and online technical communities" and quite a few other comments that make me blush.  It's always nice to be rewarded for doing what you love to do.&lt;/p&gt;&lt;p&gt;MVPs are awarded for their past contributions, but the benefits are applied to the upcoming year.  These benefits include access to technical resources and the opportunity to learn from and offer thoughts to Microsoft.  I believe the information I provide will be best if it comes from everyone, so I ask you to let me know if you're having any issues or concerns with SQL Server.  On a final note, if you have a user group that would enjoy learning about SQL Server BI, or if you have a technical question, or if you just feel like geeking out about SQL Server, please contact me at jmoss at solidq dot com.&lt;/p&gt;&lt;p&gt;Thank you.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-7248206604448599213?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/UYWlED9IY8o" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/UYWlED9IY8o/microsoft-mvp.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/10/microsoft-mvp.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-2811784767470105485</guid><pubDate>Fri, 03 Oct 2008 12:28:00 +0000</pubDate><atom:updated>2008-10-03T05:38:35.731-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Community</category><title>Richmond and Olympia</title><description>&lt;p&gt;That would be Richmond in Virginia and Olympia in Washington. :)&lt;/p&gt;&lt;p&gt;I'll be speaking at the &lt;a href="http://www.richmondcodecamp.org/"&gt;Richmond Code Camp 2008.2&lt;/a&gt; on October 4 about custom code in Reporting Services.  Richmond is my local user community, and I can't say enough good things about the crew that organizes and speaks in that area.  I hope to see some familiar faces during the day.&lt;/p&gt;&lt;p&gt;The following Saturday (October 11), I'll be presenting at &lt;a href="http://www.sqlsaturday.com/eventhome.aspx?eventid=7"&gt;Olympia SQLSaturday&lt;/a&gt; about Reporting Services 2008.  I enjoy SQLSaturday events because they are all about SQL Server!  This one includes talks on Business Intelligence, TSQL, and internals.&lt;/p&gt;&lt;p&gt;Both events have a great speaker lineup and should be a lot of fun.  Hope to see you there!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-2811784767470105485?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/Ic7XDZ43Icw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/Ic7XDZ43Icw/richmond-and-olympia.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/10/richmond-and-olympia.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-1929937267504410166</guid><pubDate>Mon, 29 Sep 2008 09:08:00 +0000</pubDate><atom:updated>2008-09-29T02:20:58.209-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSAS</category><title>MDX Query Returns Duplicate Values</title><description>&lt;div&gt;When someone is querying a new Analysis Services cube, there is one mistake that I often see made: trying to use a dimension that does not relate to the desired measure group. For example, when looking at the Adventure Works cube, if you try to use any of the Reseller measures with the Customer dimension, you will receive the same value across the Customer members. Because there is no relationship defined in the cube, the MDX query will use the default member for that particular attribute, which, in this case, is the ‘All’ member. It would look something like this:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5251368452996793746" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_4GhzvKYm7Zg/SOCbyPmRBZI/AAAAAAAAABo/0gnBnq-tE6Q/s320/MDXDupValues.jpg" border="0" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;This type of situation typically goes away once a user has learned the new data model, but Management Studio 2008 provides a neat dropdown list to help initially avoid the rogue query. On the Metadata tab, under the label Measure Group, you can select the measure group you are targeting. The GUI refreshes to only show the dimensions and measures that are associated with that measure group. If we select the ‘Reseller Sales’ measure group, we can see the way the new display looks, including no Customer dimension!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5251368887819599426" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_4GhzvKYm7Zg/SOCcLjcGfkI/AAAAAAAAABw/sKp-plmFgN8/s400/SSMSGUI.jpg" border="0" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;A user can still use the inappropriate dimension, but hopefully this will prevent the issue right from the start.  Happy querying!&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Version: SQL Server 2008 RTM&lt;/em&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-1929937267504410166?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/lF0IeSIig1k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/lF0IeSIig1k/mdx-query-returns-duplicate-values.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_4GhzvKYm7Zg/SOCbyPmRBZI/AAAAAAAAABo/0gnBnq-tE6Q/s72-c/MDXDupValues.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/09/mdx-query-returns-duplicate-values.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-326398516763470982</guid><pubDate>Fri, 26 Sep 2008 05:54:00 +0000</pubDate><atom:updated>2008-09-25T23:01:43.537-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Conference</category><title>PASS Community Summit 2008</title><description>This will be my first year attending the &lt;a href="http://summit2008.sqlpass.org/"&gt;PASS Summit&lt;/a&gt; as a speaker rather than an attendee.  I will be joining &lt;a href="http://sqlblog.com/blogs/rushabh_mehta/"&gt;Rushabh Mehta&lt;/a&gt; to present a spotlight session entitled "Building an SSIS Management Framework".  The PASS Summit is a great conference that focuses on SQL Server and Business Intelligence.  Because it is in Seattle, there will be a ton of people from the SQL Server Developer Team and SQLCAT.  If you have any questions about SQL Server, this is the place to be.&lt;br /&gt;&lt;br /&gt;You still have a few weeks left to sign up.  &lt;a href="http://www.solidq.com/"&gt;Solid Quality Mentors&lt;/a&gt; is also offering a discount code applicable to the cost of the conference.  You can get that code from here: &lt;a href="http://www.solidq.com/na/pass.aspx"&gt;http://www.solidq.com/na/pass.aspx&lt;/a&gt;.  So now you have no excuse left to not sign up!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-326398516763470982?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/IlphAAhofhg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/IlphAAhofhg/pass-community-summit-2008.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/09/pass-community-summit-2008.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-4700826910707223214</guid><pubDate>Mon, 15 Sep 2008 06:23:00 +0000</pubDate><atom:updated>2008-09-14T23:38:48.740-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSRS</category><title>Display Top N Rows - Alternate Method</title><description>&lt;div&gt;In a &lt;a href="http://jessicammoss.blogspot.com/2008/08/display-top-n-rows.html"&gt;previous post&lt;/a&gt;, I showed how to dynamically limit the number of rows shown in a table or matrix. This methodology used a filter on the table to only show the desired number of rows. The disadvantage with this method is that all rows are returned, even if only a small subset of rows is actually desired.&lt;br /&gt;&lt;br /&gt;To alleviate this problem, you can use a query parameter to restrict the number of rows returned at the query level. This does introduce a different problem. Every time the report is run with a different Top N parameter, the query will be rerun to bring back the correct number of rows. You will need to determine which method is optimal for your situation.&lt;br /&gt;&lt;br /&gt;Here are the steps to create a sample report to show this new method.&lt;br /&gt;&lt;br /&gt;1. Add a report parameter named “NumberPpl” of data type integer.&lt;br /&gt;&lt;br /&gt;2. Create a DataSource connecting to the AdventureWorksDW database and a DataSet with the following query:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SELECT TOP(cast(@TopN as int)) DimEmployee.FirstName, DimEmployee.LastName, SUM(FactResellerSales.SalesAmount) AS SalesAmount&lt;br /&gt;FROM DimEmployee INNER JOIN&lt;br /&gt;FactResellerSales ON DimEmployee.EmployeeKey = FactResellerSales.EmployeeKey&lt;br /&gt;WHERE (FactResellerSales.OrderDateKey = 20011001)&lt;br /&gt;GROUP BY DimEmployee.FirstName, DimEmployee.LastName&lt;br /&gt;ORDER BY SUM(FactResellerSales.SalesAmount) DESC&lt;br /&gt;&lt;/span&gt;Assign the @TopN query parameter to use the @NumberPpl report parameter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;em&gt;Note that this differs from the original query in two ways:&lt;br /&gt;&lt;/em&gt;A. Includes the TOP clause to restrict the rows&lt;br /&gt;B. Includes a descending order by for the SalesAmount to ensure the highest SalesAmounts are shown&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Also note that the TopN query parameter is cast to an integer. This is because all query parameters are created as string and the TOP clause expects an integer.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;3. Add a table to the body of the report with the data fields of FirstName, LastName, and SalesAmount. Sort by the column SalesAmount from ‘Z to A’. This sort is now only for display purposes and is not necessary to return the correct data.&lt;br /&gt;&lt;br /&gt;4. Preview the report, modifying the value for the parameter NumberPpl to see the number of rows change. It should look similar to the report below and the reports using the first method.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5246131573024979650" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_4GhzvKYm7Zg/SM4A3tcdesI/AAAAAAAAABg/HODIqpU59iU/s320/Top5.jpg" border="0" /&gt;&lt;em&gt;Version: SQL Server 2008 RTM&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-4700826910707223214?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/HF7U0JyYk4U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/HF7U0JyYk4U/display-top-n-rows-alternate-method.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_4GhzvKYm7Zg/SM4A3tcdesI/AAAAAAAAABg/HODIqpU59iU/s72-c/Top5.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/09/display-top-n-rows-alternate-method.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-4313522135736945373</guid><pubDate>Tue, 09 Sep 2008 20:06:00 +0000</pubDate><atom:updated>2008-09-09T13:06:00.245-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WIT</category><category domain="http://www.blogger.com/atom/ns#">Community</category><title>Upcoming Events</title><description>&lt;p&gt;I have an exciting week coming up!  On Wednesday evening, I will be speaking at the &lt;a href="http://www.rocknug.com/"&gt;Rockville .NET User Group&lt;/a&gt; on SSIS Tips &amp;amp; Tricks for both SQL Server 2005 and 2008.  If you're in the area, I hope you'll stop by.&lt;/p&gt;&lt;p&gt;On Friday night, the &lt;a href="http://www.novagirlgeekdinner.com/"&gt;Northern Virginia Girl Geek Dinner&lt;/a&gt; is having their inaugural dinner.  Hosting by &lt;a href="http://www.viget.com/"&gt;Viget Labs&lt;/a&gt;, sponsorship by &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt;, and a presentation by Dr. Joanne McGrath Cohoon will make for a great evening!  I will be there, helping to ensure everything runs smoothly.  The sign up deadline was just extended through Wednesday, so sign up now at &lt;a href="http://novagirlgeekdinner.eventbrite.com/"&gt;http://novagirlgeekdinner.eventbrite.com/&lt;/a&gt;!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-4313522135736945373?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/c0csOhi5b6c" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/c0csOhi5b6c/upcoming-events.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/09/upcoming-events.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-9055512291103755014</guid><pubDate>Mon, 18 Aug 2008 04:12:00 +0000</pubDate><atom:updated>2008-08-17T21:16:04.469-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSIS</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><category domain="http://www.blogger.com/atom/ns#">SSRS</category><title>SnippetCompiler</title><description>Extensibility in SQL Server Integration Services and SQL Server Reporting Services is achieved by writing custom code inside your package or report.  SSIS provides a great interface by using Visual Studio for Applications (2005) or Visual Studio Tools for Applications (2008), lightweight versions of the Visual Studio IDE.  When you create a script task or component, you can write code using intellisense and error squiggles.  SSRS, on the other hand, does not provide any IDE for writing custom code.  If you want to create VB functions, you have a notepad-like window without colors, intellisense, or any error handling.&lt;br /&gt;&lt;br /&gt;In comes SnippetCompiler, an application that allows you to write and compile snippets of code.  You can download the executable here: &lt;a href="http://www.sliver.com/dotnet/SnippetCompiler/"&gt;http://www.sliver.com/dotnet/SnippetCompiler/&lt;/a&gt;.  The current version allows code in both VB.NET 2.0 and C# 2.0.  A .NET 3.5 version is in Alpha release and can be downloaded from the same location.  Keep in mind that if you minimize the application, it becomes an icon in the system tray instead of showing up on the task bar.&lt;br /&gt;&lt;br /&gt;I use this application when I write all of my custom code, especially in Reporting Services.  It allows me to ensure my syntax is correct, as well as keep consistent formatting before copying the code into my package or report.  I hope you find this tool useful as well!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-9055512291103755014?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/hF4zotRxJio" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/hF4zotRxJio/snippetcompiler.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/08/snippetcompiler.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-1959247257436850210</guid><pubDate>Thu, 14 Aug 2008 07:44:00 +0000</pubDate><atom:updated>2008-08-14T00:59:12.332-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSRS</category><title>Display Top N Rows</title><description>&lt;div&gt;In SQL Server Reporting Services, you can dynamically limit the number of rows that are displayed in a table or a matrix. Here are the steps to create a sample report showing this.&lt;br /&gt;&lt;br /&gt;1. Create a DataSource connecting to the AdventureWorksDW database and a DataSet with the following query:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SELECT DimEmployee.FirstName, DimEmployee.LastName, SUM(FactResellerSales.SalesAmount) AS SalesAmount&lt;br /&gt;FROM DimEmployee INNER JOIN&lt;br /&gt;FactResellerSales ON DimEmployee.EmployeeKey = FactResellerSales.EmployeeKey&lt;br /&gt;WHERE (FactResellerSales.OrderDateKey = 20011001)&lt;br /&gt;GROUP BY DimEmployee.FirstName, DimEmployee.LastName&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;2. Add a report parameter named “NumberPpl” of data type integer.&lt;br /&gt;&lt;br /&gt;3. Add a table to the body of the report with the data fields of firstName, lastName, and salesAmount. Sort by the column salesAmount from ‘Z to A’.&lt;br /&gt;&lt;br /&gt;4. Set the Filters option of the table as shown below. (This is where the real work is happening!)&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5234277686210765858" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_4GhzvKYm7Zg/SKPj0r5YpCI/AAAAAAAAABA/PKPc3rg0cuY/s400/TopN-Filters.jpg" border="1" /&gt;&lt;/p&gt;&lt;p&gt;5. Preview the report, modifying the value for the parameter NumberPpl to see the number of rows change. It should look similar to the reports below.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5234277994677131458" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_4GhzvKYm7Zg/SKPkGpBf2MI/AAAAAAAAABI/M2WyXiwTfYg/s400/TopN-ReportTop2.jpg" border="1" /&gt; &lt;img id="BLOGGER_PHOTO_ID_5234278686573989234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_4GhzvKYm7Zg/SKPku6ikDXI/AAAAAAAAABY/XDu92R1pNEg/s400/TopN-ReportTop5.jpg" border="1" /&gt;&lt;br /&gt;&lt;em&gt;Version: SQL Server 2008 RC0&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-1959247257436850210?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/EvtFlKtV4Ao" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/EvtFlKtV4Ao/display-top-n-rows.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_4GhzvKYm7Zg/SKPj0r5YpCI/AAAAAAAAABA/PKPc3rg0cuY/s72-c/TopN-Filters.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/08/display-top-n-rows.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-4483064329720092062</guid><pubDate>Fri, 08 Aug 2008 07:08:00 +0000</pubDate><atom:updated>2008-08-08T00:10:43.487-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blogging</category><title>WorldMaps</title><description>Those of you who visit my blog directly may notice a new image labeled "WorldMaps" on my right-hand side bar.  &lt;a href="http://www.structuretoobig.com/development/worldmaps.aspx"&gt;WorldMaps&lt;/a&gt;, introduced to me by &lt;a href="http://blogs.msdn.com/gduthie"&gt;Andrew Duthie&lt;/a&gt;, stores statistics about visitors to any website.  By signing up for an account and adding the tracking device on your page, you can keep track of the number of hits, different IP addresses, visitor locations, and more.  For an example of what WorldMaps can provide, click on my world image, which will link to a page with my statistics.&lt;br /&gt;&lt;br /&gt;For other statistics of interest, I also use &lt;a href="http://www.feedburner.com/"&gt;Feedburner&lt;/a&gt;.  While I'm happy with the information they've provided, there is something about seeing my visitors’ locations visually that speaks to my Business Intelligence side ;)  I definitely recommend you take a look at WorldMaps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-4483064329720092062?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/ErUpeVYsuCo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/ErUpeVYsuCo/worldmaps.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/08/worldmaps.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-1241352142341039337</guid><pubDate>Wed, 06 Aug 2008 08:45:00 +0000</pubDate><atom:updated>2008-08-06T01:49:25.695-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSRS</category><title>Overlapping SSRS Report Items</title><description>After converting your SQL Server Reporting Services reports from 2005 to 2008, you may notice a difference in the way the report looks.  One possible reason for this difference is the change in the way overlapping report items are rendered.&lt;br /&gt;&lt;br /&gt;In both SSRS versions, the message in the Output window is similar to: "[rsOverlappingReportItems] The text box ‘Textbox2’ and the text box ‘Textbox1’ overlap. Overlapping report items are not supported in all renderers."  In Reporting Services 2005, these textboxes would display in an overlapped fashion, often causing the text within both textboxes to be unreadable.  In Reporting Services 2008, however, the second textbox shifts, so that it appears the textboxes are vertically next to each other.  This allows you to always read the text in both textboxes.&lt;br /&gt;&lt;br /&gt;The new overlap rendering functionality is included in the "Soft Page-Break Renderers", including the Report Preview window, HTML, MHTML, Word, and Excel.  Taking a look at the report in the Report Preview pane will give you a pretty good idea of how the report will look in HTML.  I did not find this to be the case for the "Hard Page-Break Renderers", including Acrobat (PDF) format.&lt;br /&gt;&lt;br /&gt;If you do have overlapping report items, the item to the "front" of the report will be rendered above the item to the "back" of the report.  You can take advantage of this by right-clicking on the item and selecting either the option "Bring to Front" or "Send to Back" for the desired result.&lt;br /&gt;&lt;br /&gt;For more information on how rendering works in SSRS 2008, I would recommend visiting this page: &lt;a href="http://technet.microsoft.com/en-us/library/bb677573(SQL.100).aspx"&gt;http://technet.microsoft.com/en-us/library/bb677573(SQL.100).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Versions: SQL Server 2005 SP2, SQL Server 2008 RC0&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-1241352142341039337?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/v3dU7o9Zv9U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/v3dU7o9Zv9U/overlapping-ssrs-report-items.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/08/overlapping-ssrs-report-items.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-3752127317600592384</guid><pubDate>Thu, 31 Jul 2008 07:32:00 +0000</pubDate><atom:updated>2008-07-31T00:38:33.719-07:00</atom:updated><title>Reporting Services 2008 Configuration Mistake</title><description>To start working with the management side of SQL Server Reporting Services 2008, I decided to set up a report server and report manager.  Unfortunately, I made a mistake while setting up my configuration that left me a little perplexed.  Here are the steps I took to cause, track down, and solve the issue.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Problem:&lt;/em&gt;&lt;br /&gt;I began by opening the Reporting Services Configuration Manager from the Start Menu.  I clicked through each of the menu options and accepted the defaults for any question with a warning symbol, since warning symbol typically designate an action item.  After two minutes, all of the warning symbols had disappeared, and I was ready to begin managing my report server.  Unfortunately, opening up a browser and trying to open up the report manager resulted in the dreaded "&lt;span style="font-family:courier new;font-size:85%;"&gt;The report server has encountered a configuration error. (rsServerConfigurationError)&lt;/span&gt;" message.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sherlock-ing it:&lt;br /&gt;&lt;/em&gt;I put on my sleuthing hat and went to the log file directory: C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\LogFiles.  Under the latest ReportServerService*.log, there was the following error: "&lt;span style="font-family:courier new;font-size:85%;"&gt;Message: No DSN present in configuration file&lt;/span&gt;".  Looking at the file: C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config proved the error message true, as right at the top of my log file was the empty Dsn tag.&lt;br /&gt;&lt;br /&gt;Looking in Books Online under the RSReportServer Configuration article, I discovered that the Dsn property contains a connection to the report server database.  That's odd, I don't remember creating that connection...&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Solution:&lt;br /&gt;&lt;/em&gt;I returned to the scene of the crime, the Configuration Manager.  Sure enough, the third warning-less menu option allows you to set up the connection to either an existing report server database or create a new one for this instance.  I filled in the appropriate information, and took a look back at the configuration file.  This time, the Dsn tag contains a beautifully encrypted blob of information.  The report manager works, and I am ready to manage my reports!  The moral of this story is to read the directions before clicking through configuration managers, don't trust warning icons or lack thereof, and don't forget that Reporting Services needs to know what database to use. :)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Version: SQL Server 2008 RC0&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-3752127317600592384?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/HidPO6GRl5Y" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/HidPO6GRl5Y/reporting-services-2008-configuration.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/07/reporting-services-2008-configuration.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-6322920488894306832</guid><pubDate>Mon, 21 Jul 2008 09:32:00 +0000</pubDate><atom:updated>2008-07-21T02:35:06.922-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSRS</category><title>Where is my Data Tab?</title><description>I’ve recently had the pleasure of diving into Reporting Services 2008 RC0, and I’m amazed at the difference in the design environment from SSRS 2000/2005!  To give a comparison of the designer, I took a look at the BIDS Reporting Services project.  Overall, I think this version is more slick and more user-friendly (once I find everything again :) ) than its predecessor.&lt;br /&gt;&lt;br /&gt;To begin, there is no longer a Data tab in the main frame of the design environment.  You can find your DataSets and Fields on the “Report Data” window on the left side of your designer.  If you lose your Report Data window, click the View menu &gt; Report Data, or just select Ctrl-Alt-D.  Also joining the new Report Data family are Report Parameters, originally found on the Report menu, and Fields, originally on its own window.&lt;br /&gt;&lt;br /&gt;A look at the new RS would be remiss without mentioning the new Tablix control.  From the toolbox, you still select a Table, Matrix, or List control, but these are templates for the Tablix control that provide you with the expected layout.  As soon as that control has landed on your Design window, the properties and group menus look the same.  In fact, the menu option to view properties is labeled “Tablix Properties…”.  It is easy to see how the rows and columns are utilized from the icons displayed to the left or top of the textboxes.&lt;br /&gt;&lt;br /&gt;Instead of Groups being included in the properties window of each control, they are now displayed on the report itself.  This option can be toggled by right-clicking on the report and selecting View &gt; Grouping.  By selecting the desired control in your design window, you can immediately see the groups for that control.&lt;br /&gt;&lt;br /&gt;All of the property windows have been overhauled.  Is it just me, or do the new property windows remind you of the Dundas Controls property windows?&lt;br /&gt;&lt;br /&gt;I’ll be posting more thoughts and trials on Reporting Services 2008 as I dig deeper into the new system!&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Version: SQL Server 2008 RC0&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-6322920488894306832?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/IptZM5tHa8s" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/IptZM5tHa8s/where-is-my-data-tab.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/07/where-is-my-data-tab.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-4243825139681499840</guid><pubDate>Wed, 09 Jul 2008 05:05:00 +0000</pubDate><atom:updated>2008-07-08T22:20:48.358-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Fun</category><title>Software Development Meme</title><description>&lt;p&gt;I've been tagged with the Software Development meme, courtesy of &lt;a href="http://sqlblog.com/blogs/andy_leonard/archive/2008/06/30/software-development-meme.aspx"&gt;Andy Leonard&lt;/a&gt;.  And, we're off!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How old were you when you first started programming?&lt;/strong&gt;&lt;br /&gt;I was 13 years old in the eighth grade.  I took an Introduction to Programming class with an amazing teacher.  Thanks to Mr. Creasy, I've been hooked ever since.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How did you get started in programming?&lt;br /&gt;&lt;/strong&gt;My father was a computer programmer, so I guess I come by it naturally.  I used to help my teachers work their classroom computers in elementary school, and then tried my hand at programming in middle school.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What was your first language?&lt;br /&gt;&lt;/strong&gt;BASIC.  Not VB.Net.  Not Visual Basic.  Just BASIC.  How many Millennials can say that? ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What was the first real program you wrote?&lt;br /&gt;&lt;/strong&gt;Hello world...  Or something along those lines that was pretty simple.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What languages have you used since you started programming?&lt;br /&gt;&lt;/strong&gt;BASIC, C++, Java, C#, VB.NET, ASP.NET, T-SQL, MDX... others I'm sure...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What was your first professional programming gig?&lt;br /&gt;&lt;/strong&gt;My first job was a consultant at a custom software development firm.  I was fortunate enough to dabble in all sorts of different languages, but the first project that was entirely my own was creating Reporting Services reports to analyze sales data.  Do you think they knew something about where I'd end up? ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;If you knew then what you know now, would you have started programming?&lt;br /&gt;&lt;/strong&gt;Definitely.  I originally fell in love with programming because of the logic.  A + B = C and such...  With time, I realized that programming is more of an art.  Who knows what my next revelation on programming will be?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;br /&gt;&lt;/strong&gt;You can't know everything.  Always learn and always ask questions.  If you think you know everything and you have nothing left to learn, find another job.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What’s the most fun you’ve ever had ... programming?&lt;br /&gt;&lt;/strong&gt;Hmm… college all nighters with copious amounts of mountain dew and loud music… Working on teams of people where everyone just meshes and the final program is just beautiful…  That final “Ah ha” moment when something just clicks…  Oh, I can’t decide!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Who are you calling out?&lt;br /&gt;&lt;/strong&gt;Trying to find people on my blog list that haven't yet been tagged!&lt;/p&gt;&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/rushabh_mehta/default.aspx"&gt;Rushabh Mehta&lt;/a&gt;&lt;br /&gt;&lt;a href="http://thedamndata.blogspot.com/"&gt;Wes Dumey&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.sqlservercentral.com/andy_warren/default.aspx"&gt;Andy Warren&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-4243825139681499840?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/3H8ifPUTmak" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/3H8ifPUTmak/software-development-meme.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/07/software-development-meme.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6855339694180792214.post-580852602299198589</guid><pubDate>Tue, 24 Jun 2008 05:19:00 +0000</pubDate><atom:updated>2008-06-23T22:19:01.074-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mentoring</category><title>Thoughts on Mentoring</title><description>I just finished the book &lt;a href="http://www.amazon.com/Elements-Mentoring-W-Brad-Johnson/dp/1403964017/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1207494108&amp;amp;sr=1-1"&gt;The Elements of Mentoring&lt;/a&gt; by W. Brad Johnson and Charles R. Ridley at the suggestion of &lt;a href="http://blogs.sqlservercentral.com/andy_warren/default.aspx"&gt;Andy Warren&lt;/a&gt; in his &lt;a href="http://blogs.sqlservercentral.com/andy_warren/archive/2008/04/14/thoughts-on-mentoring-part-1.aspx"&gt;blog series on mentoring&lt;/a&gt;.  While I’ve been fortunate enough in my career to have many people have advised, taught, and coached me, I’ve never been involved in a formal mentor-protégé relationship.  After reading all of the work involved, I’m surprised anyone would want to!  That statement is partly tongue-in-cheek because it is apparent after reading this book that a successful pairing can be mutually beneficial.  Here are just a few thoughts on the book.&lt;br /&gt;&lt;br /&gt;The Elements of Mentoring starts by discussing how to be a good mentor, namely that it is important to have both the right personality and the right skill set.  It struck me as I read that for most of the advice, I could replace mentor/protégé with any relationship pair, i.e. parent/child, person/spouse, etc.  For example, the important of bolstering the protégé’s confidence is a pillar of good parenting.  The next sections of TEoM show all phases of a mentoring relationship from picking the protégé/mentor through ending the mentorship.  One recurring theme in this section is to ensure that both parties are fully aware of what they are agreeing to by entering into this relationship.  I would recommend that both people start out by reading this book.  It would provide a common base from which to build schedules, expectations, and timelines.&lt;br /&gt;&lt;br /&gt;As expressed in TEoM, I think it’s important to realize that being involved in a mentoring relationship is not for everyone.  Just because someone is intelligent and well-respected in their field does not mean they will make a good mentor.  Just because they are a good mentor does not mean they will be compatible with every protégé’s goals and personality.  Just because a mentoring relationship starts out well does not mean that it will end well.  Barring the difficulties in making a successful match, if it can be done, mentoring or being mentored is definitely worth it.  Getting involved in a mentoring relationship from either the protégé or mentor side can be a very fulfilling role and can create a relationship that will last long past the end of the mentorship.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6855339694180792214-580852602299198589?l=jessicammoss.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JessicaMoss/~4/dSgyFThWD8o" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/JessicaMoss/~3/dSgyFThWD8o/thoughts-on-mentoring.html</link><author>noreply@blogger.com (Jessica M. Moss)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://jessicammoss.blogspot.com/2008/06/thoughts-on-mentoring.html</feedburner:origLink></item></channel></rss>
