<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.adatis.co.uk/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'SQL Server'</title><link>http://blogs.adatis.co.uk/search/SearchResults.aspx?o=DateDescending&amp;tag=SQL+Server&amp;orTags=0</link><description>Search results matching tag 'SQL Server'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Master Data Services Training in the UK</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2011/11/01/sql-server-training-in-london.aspx</link><pubDate>Tue, 01 Nov 2011 23:33:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:9986</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;This is just a quick post to announce a range of SQL Server training courses, organised (and in some cases delivered) by &lt;a href="http://cwebbbi.wordpress.com/" target="_blank"&gt;Chris Webb&lt;/a&gt;. To start off there’s a SQL Server course delivered by Christian Bolton in December, followed by an Analysis Services course delivered by Chris in February. I’ll be delivering a Master Data Services course in February, before Chris delivers an MDX course in March.&lt;/p&gt;  &lt;p&gt;The details for all the courses are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;SQL Server Internals and Troubleshooting Workshop - Christian Bolton – 6th – 7th December 2011&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;The Advanced Troubleshooting Workshop for SQL Server 2005, 2008 and R2 provides attendees with SQL Server internals knowledge, practical troubleshooting skills and a proven methodical approach to problem solving. The workshop will enable attendees to tackle complex SQL Server problems with confidence.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Full details and registration &lt;a href="http://www.regonline.co.uk/Register/Checkin.aspx?EventID=1016921&amp;amp;trackingcode=ADT" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Real World Cube Design and Performance Tuning with Analysis Services – Chris Webb – February 2012&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;A two day course that takes real world experience in showing you how to build a best practice Analysis Services cube, covering design issues such as data warehouse design and complex cube modelling. Day two then covers performance optimisation for Analysis Services, including MDX optimisation and cube processing.&lt;/p&gt;    &lt;p&gt;Full details and registration &lt;a href="http://www.regonline.co.uk/Register/Checkin.aspx?EventID=1028948&amp;amp;trackingcode=ADT" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Introduction to Master Data Services with Jeremy Kashel – February 2012&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;An end to end look inside Master Data Services, this full day course will begin with a synopsis of Master Data Management before moving on to an overview of Microsoft SQL Server 2008 R2 Master Data Services (MDS). The remainder of the course will cover the major MDS topics, such as modelling and business rules, which will include a number of practical exercises.&lt;/p&gt;    &lt;p&gt;More details and registration for &lt;a href="http://www.regonline.co.uk/Register/Checkin.aspx?EventID=1028960&amp;amp;trackingcode=ADT" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Introduction to MDX with Chris Webb – March 2012&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;The Introduction to MDX course aims to take you from the point of being a complete beginner with no previous knowledge of MDX up to the point where you can write 90% of the MDX calculations and queries you’ll ever need to write. The three day course covers the basics, such as sets, tuples, members to more advanced concepts such as scoped assignments and performance tuning.&lt;/p&gt;    &lt;p&gt;Full details and registration &lt;a href="http://www.regonline.co.uk/Register/Checkin.aspx?EventID=1026958&amp;amp;trackingcode=ADT" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>A Pattern To Load Data to Master Data Services via SSIS–Part 2</title><link>http://blogs.adatis.co.uk/blogs/neil/archive/2011/08/18/a-pattern-to-load-data-to-master-data-services-via-ssis-part-2.aspx</link><pubDate>Thu, 18 Aug 2011 16:26:30 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:9616</guid><dc:creator>Neil Dobner</dc:creator><description>&lt;h5&gt;Introduction&lt;/h5&gt;  &lt;p&gt;This is the second part of a series of blog posts intended to show a way to load data in to MDS via SSIS. In &lt;a href="http://blogs.adatis.co.uk/blogs/neil/archive/2011/07/14/a-pattern-to-load-data-to-master-data-services-via-ssis.aspx"&gt;part 1&lt;/a&gt; we have loaded the staging tables with new members and attributes for several entities. In this blog post we are going to extend the SSIS package with tasks to move the data from the staging tables into the MDS Product model and validate these newly inserted members.&lt;/p&gt;  &lt;h5&gt;Completing The Solution&lt;/h5&gt;  &lt;p&gt;We need to move the data from the staging tables into the model. This is carried out by executing the MDS staging sweep process. To achieve this we need to add an Execute SQL Task to the control flow of our package. Rename the task – I’ve called mine ‘SQL – Sweep Stage’ and connect it up to the ‘DFL – Load Staging Tables’ task with a success constraint.&lt;/p&gt;  &lt;p&gt;On the General tab set the connection to MasterDataServices and the SQL Statement as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@ModelName   &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) = &lt;/span&gt;? 
&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@UserName    &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) = &lt;/span&gt;?
&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@User_ID     &lt;span style="color:blue;"&gt;INT 
DECLARE &lt;/span&gt;@Version_ID  &lt;span style="color:blue;"&gt;INT

SET &lt;/span&gt;@User_ID &lt;span style="color:gray;"&gt;=    (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;ID  
                   &lt;span style="color:blue;"&gt;FROM  &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;tblUser u 
                   &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;u&lt;span style="color:gray;"&gt;.&lt;/span&gt;UserName &lt;span style="color:gray;"&gt;= &lt;/span&gt;@UserName &lt;span style="color:gray;"&gt;) 

&lt;/span&gt;&lt;span style="color:blue;"&gt;SET &lt;/span&gt;@Version_ID &lt;span style="color:gray;"&gt;= (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;)  
                   &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;viw_SYSTEM_SCHEMA_VERSION  
                   &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;Model_Name &lt;span style="color:gray;"&gt;= &lt;/span&gt;@ModelName&lt;span style="color:gray;"&gt;)
                   

&lt;/span&gt;&lt;span style="color:blue;"&gt;EXECUTE &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;udpStagingSweep @User_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;@Version_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;1&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then add the Parameter mapping as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_7ECDD3A5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_73A4495B.png" width="463" height="395" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s all there is to do to get our data into the model. However this process is asynchronous and before we can validate the model we need to know when the staging sweep has finished. &lt;/p&gt;

&lt;p&gt;Add a For Loop Container task to the control flow of the package and connect it up to the ‘SQL – Sweep Stage’ task with a success constraint. Rename the task – I’ve called mine ‘FLC – Wait Until Batch Completes’. Add an Execute SQL Task inside the loop container task and rename it. Mine is called ‘SQL – Get Staging Batch Status’. Change the connection to MasterDataServices, change the ResultSet property to ‘Single row’ and then add the following SQL script to the SQLStatement property:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@Version_ID &lt;span style="color:blue;"&gt;INT

SET &lt;/span&gt;@Version_ID &lt;span style="color:gray;"&gt;= (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;)  
                   &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;viw_SYSTEM_SCHEMA_VERSION  
                   &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;Model_Name &lt;span style="color:gray;"&gt;= &lt;/span&gt;?&lt;span style="color:gray;"&gt;)

&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT TOP    &lt;/span&gt;1 Status_ID 
&lt;span style="color:blue;"&gt;FROM          &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;tblStgBatch 
&lt;span style="color:blue;"&gt;WHERE         &lt;/span&gt;Version_ID &lt;span style="color:gray;"&gt;= &lt;/span&gt;@Version_ID
&lt;span style="color:blue;"&gt;ORDER BY      &lt;/span&gt;ID &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Add the parameter mapping as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_0CA019A1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_77AE972D.png" width="469" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the Result Set as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_53893C9E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_3E97BA2B.png" width="482" height="410" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add three more parameters to the package as shown in the table below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_0580DD29.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_336E2FE1.png" width="627" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next configure the For Loop Properties as shown in the table below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_37787DB3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_6565D06B.png" width="627" height="61" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The InitExpression value sets the @dtMDSLoopTimer to the current time plus the interval set in our @intMDSTimeout variable. The EvalExpression checks if the @strMDSBatchStatus is either not equal to 2 (Success) or the timeout has expired.&lt;/p&gt;

&lt;p&gt;The For Loop Container can only succeed if the staging batch is successfully loaded.&lt;/p&gt;

&lt;p&gt;Now we can validate the model so add an Execute SQL Task to the control flow and connect it to the ‘FLC – Wait Until Batch Completes’ task with a success constraint. Rename the task - mine is called ‘SQL – Validate Model’. Change the connection to MasterDataServices and the SQLStatement as follows:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@ModelName    &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) = &lt;/span&gt;?
&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@UserName     &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) = &lt;/span&gt;?
&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@User_ID      &lt;span style="color:blue;"&gt;INT 
DECLARE &lt;/span&gt;@Version_ID   &lt;span style="color:blue;"&gt;INT
DECLARE &lt;/span&gt;@Model_id     &lt;span style="color:blue;"&gt;INT 


SET &lt;/span&gt;@User_ID &lt;span style="color:gray;"&gt;=        (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;ID  
                       &lt;span style="color:blue;"&gt;FROM  &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;tblUser u 
                       &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;u&lt;span style="color:gray;"&gt;.&lt;/span&gt;UserName &lt;span style="color:gray;"&gt;= &lt;/span&gt;@UserName &lt;span style="color:gray;"&gt;) 

&lt;/span&gt;&lt;span style="color:blue;"&gt;SET &lt;/span&gt;@Version_ID &lt;span style="color:gray;"&gt;=     (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;ID&lt;span style="color:gray;"&gt;)  
                       &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;viw_SYSTEM_SCHEMA_VERSION  
                       &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;Model_Name &lt;span style="color:gray;"&gt;= &lt;/span&gt;@ModelName&lt;span style="color:gray;"&gt;)
                   
&lt;/span&gt;&lt;span style="color:blue;"&gt;SET &lt;/span&gt;@Model_ID &lt;span style="color:gray;"&gt;=       (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;Model_ID 
                       &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;viw_SYSTEM_SCHEMA_VERSION 
                       &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;Model_Name &lt;span style="color:gray;"&gt;= &lt;/span&gt;@ModelName&lt;span style="color:gray;"&gt;) 


&lt;/span&gt;&lt;span style="color:blue;"&gt;EXECUTE &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;udpValidateModel @User_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;@Model_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;@Version_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;1&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Set the parameter mapping as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_13532324.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_7E61A0B0.png" width="540" height="457" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost done. Just to finish it off lets add a script task to the control flow and connect it to the ‘FLC – Wait Until Batch Completes’ task with a completion constraint. Change the Evaluation Operation of the constraint to ‘Expression and Constraint’ and set the Expression to ‘@strMDSBatchStatus != 2’. Edit the script and add the following line of code under&amp;#160;&amp;#160; // TODO: Add your code here:&lt;/p&gt;

&lt;pre class="code"&gt;Dts.Events.FireError(0, &lt;span style="color:#a31515;"&gt;&amp;quot;SCR - Fire Error&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;MDS Timeout Occurred&amp;quot;&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Empty, 0);&lt;/pre&gt;

&lt;p&gt;This task will fire an error event if the MDS staging batch does not complete successfully.&lt;/p&gt;

&lt;p&gt;The finished package control flow should look similar to the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_175D70F6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_454AC3AE.png" width="524" height="575" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Execute this package and then check the Product entity in MDS. It should look something like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_5E4693F3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_6C18D9EE.png" width="644" height="482" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking at the other entities you will see that we have added members to three entities and validated all these new members. &lt;/p&gt;

&lt;h5&gt;Summary&lt;/h5&gt;

&lt;p&gt;Over the last two blog posts I have shown a way of automating the loading of data to Master Data Services via SSIS. This pattern can be used to cater for most of your loading requirements. &lt;/p&gt;

&lt;p&gt;That’s it, the completed Integration Services project source code and MDS Model can be downloaded from &lt;a href="http://blogs.adatis.co.uk/files"&gt;here&lt;/a&gt; – (You will need to create a login first).&lt;/p&gt;

&lt;p&gt;Your comments are very welcome.&lt;/p&gt;</description></item><item><title>A Pattern To Load Data to Master Data Services via SSIS</title><link>http://blogs.adatis.co.uk/blogs/neil/archive/2011/07/14/a-pattern-to-load-data-to-master-data-services-via-ssis.aspx</link><pubDate>Thu, 14 Jul 2011 15:37:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:9298</guid><dc:creator>Neil Dobner</dc:creator><description>&lt;h2&gt;&lt;/h2&gt;  &lt;h5&gt;Part 1&lt;/h5&gt;  &lt;h5&gt;Introduction&lt;/h5&gt;  &lt;p&gt;Loading new members to a MDS entity will be a common requirement in all MDS implementations. In these blog posts I am going to walk you through building an SSIS package that performs the following processes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Load new members and attributes to several entities via staging tables &lt;/li&gt;    &lt;li&gt;Validate the MDS model that contains the entities &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In part one we will load the MDS staging tables ready to take our new members and attributes into our MDS model. For a thorough understanding of the staging process in MDS please see the Master Data Services Team blog post on &lt;a href="http://sqlblog.com/blogs/mds_team/archive/2010/02/10/Importing-Data-by-Using-the-Staging-Process.aspx"&gt;Importing Data by Using the Staging Process&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;A pre-requisite is to have the AdventureWorks2008R2 database samples installed on the same instance of SQL Server as Master Data Services.&lt;/p&gt;  &lt;p&gt;In MDS I have created a model named ‘Product’ with an entity of the same name. The product entity has the following attributes which are set to the default type and length unless specified:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Name &lt;/li&gt;    &lt;li&gt;Code &lt;/li&gt;    &lt;li&gt;Model (Domain Attribute) &lt;/li&gt;    &lt;li&gt;Culture (Domain Attribute) &lt;/li&gt;    &lt;li&gt;Description (Text, 500) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We are going to load this entity with Product data from the AdventureWorks2008R2 database using a SSIS package. &lt;/p&gt;  &lt;p&gt;In addition to this there are two further entities in the Product model:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Culture &lt;/li&gt;    &lt;li&gt;Model &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These entities have just the code and name attributes and are set to the default type and length. &lt;/p&gt;  &lt;p&gt;The MDS model and Integration Services project source code can be downloaded from &lt;a href="http://blogs.adatis.co.uk/files"&gt;here&lt;/a&gt; – (You will need to create a login first).&lt;/p&gt;  &lt;h5&gt;Building The Solution&lt;/h5&gt;  &lt;p&gt;OK enough of the intro let’s get on and build the package.&lt;/p&gt;  &lt;p&gt;Start a new Visual Studio Integration Services Project and save the default package to a more suitable name. I’ve called mine ‘LoadMDS.dtsx’.&lt;/p&gt;  &lt;p&gt;Create the following connection managers as shown below remembering to replace the Server and MDS database names. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_09161AF0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_2211EB35.png" width="347" height="354" /&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_68FB0E32.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_16E860EB.png" width="345" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Rename the connection managers to ‘AdventureWorks’ and ‘MasterDataServices’ respectively.&lt;/p&gt;  &lt;p&gt;Now we need to create some variables so go ahead and create the variables shown in the table below: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_5F871BC5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_7882EC0A.png" width="601" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We are now ready to put our first task into our package. This task will optionally clear the staging tables of all successfully loaded members, attributes and relationships prior to loading, based on the value of the blnClearStage parameter.&lt;/p&gt;  &lt;p&gt;Add an Execute SQL Task to the control flow of your package and rename it - I’ve called mine ‘SQL – Clear Staging Tables’.&lt;/p&gt;  &lt;p&gt;On the General tab set the connection to MasterDataServices and the SQL Statement as follows:&lt;/p&gt;  &lt;div&gt;   &lt;blockquote&gt;     &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@ModelName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) = &lt;/span&gt;? 
&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@UserName  &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) = &lt;/span&gt;? 
&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@User_ID   &lt;span style="color:blue;"&gt;INT

SET &lt;/span&gt;@User_ID &lt;span style="color:gray;"&gt;=    (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;ID  
                   &lt;span style="color:blue;"&gt;FROM  &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;tblUser u 
                   &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;u&lt;span style="color:gray;"&gt;.&lt;/span&gt;UserName &lt;span style="color:gray;"&gt;= &lt;/span&gt;@UserName &lt;span style="color:gray;"&gt;) 

&lt;/span&gt;&lt;span style="color:blue;"&gt;IF &lt;/span&gt;? &lt;span style="color:gray;"&gt;= &lt;/span&gt;1 
    &lt;span style="color:blue;"&gt;EXECUTE &lt;/span&gt;mdm&lt;span style="color:gray;"&gt;.&lt;/span&gt;udpStagingClear @User_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;4&lt;span style="color:gray;"&gt;, &lt;/span&gt;1&lt;span style="color:gray;"&gt;, &lt;/span&gt;@ModelName&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:blue;"&gt;DEFAULT 
ELSE 
    SELECT &lt;/span&gt;1 &lt;span style="color:blue;"&gt;AS &lt;/span&gt;A&lt;/pre&gt;
  &lt;/blockquote&gt;
On the Parameter Mapping tab add the variables exactly as shown below:&lt;/div&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_2FE43130.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_76CD542D.png" width="455" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add a Data Flow task to the control flow of the package and connect it to the ‘SQL – Clear Staging Tables’ task with a success constraint. Rename the task to ‘DFL – Load Staging Tables’.&lt;/p&gt;

&lt;p&gt;Add three further variables to our package as follows: &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_0041C13C.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_4B35320B.png" width="710" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the data flow of our package add an OLEDB data source task, set the connection to AdventureWorks and the Data Access Mode to SQL Command. Add the following SQL to the SQL command text window:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductID &lt;span style="color:blue;"&gt;AS VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;)) + &lt;/span&gt;pmx&lt;span style="color:gray;"&gt;.&lt;/span&gt;CultureID            &lt;span style="color:blue;"&gt;AS &lt;/span&gt;ProductCode
    &lt;span style="color:gray;"&gt;,&lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;Name            
    &lt;span style="color:gray;"&gt;,&lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModelID
    &lt;span style="color:gray;"&gt;,&lt;/span&gt;pm&lt;span style="color:gray;"&gt;.&lt;/span&gt;Name                                                    &lt;span style="color:blue;"&gt;AS &lt;/span&gt;ProductModelName
    &lt;span style="color:gray;"&gt;,&lt;/span&gt;pmx&lt;span style="color:gray;"&gt;.&lt;/span&gt;CultureID
    &lt;span style="color:gray;"&gt;,&lt;/span&gt;c&lt;span style="color:gray;"&gt;.&lt;/span&gt;Name                                                     &lt;span style="color:blue;"&gt;AS &lt;/span&gt;CultureName
    &lt;span style="color:gray;"&gt;,&lt;/span&gt;pd&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;Description
FROM &lt;/span&gt;Production&lt;span style="color:gray;"&gt;.&lt;/span&gt;Product                                         p 
  &lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;Production&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModel                            pm 
    &lt;span style="color:blue;"&gt;ON &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModelID &lt;span style="color:gray;"&gt;= &lt;/span&gt;pm&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModelID 
  &lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;Production&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModelProductDescriptionCulture   pmx 
    &lt;span style="color:blue;"&gt;ON &lt;/span&gt;pm&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModelID &lt;span style="color:gray;"&gt;= &lt;/span&gt;pmx&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductModelID
  &lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;Production&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductDescription                      pd 
    &lt;span style="color:blue;"&gt;ON &lt;/span&gt;pmx&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductDescriptionID &lt;span style="color:gray;"&gt;= &lt;/span&gt;pd&lt;span style="color:gray;"&gt;.&lt;/span&gt;ProductDescriptionID
  &lt;span style="color:gray;"&gt;INNER JOIN &lt;/span&gt;Production&lt;span style="color:gray;"&gt;.&lt;/span&gt;Culture                                 c
    &lt;span style="color:blue;"&gt;ON &lt;/span&gt;pmx&lt;span style="color:gray;"&gt;.&lt;/span&gt;CultureID &lt;span style="color:gray;"&gt;= &lt;/span&gt;c&lt;span style="color:gray;"&gt;.&lt;/span&gt;CultureID&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don’t worry if the formatting turns ugly, that’s just what happens. Press the Preview button and you will see that this query will return us the following columns to our data flow:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ProductCode &lt;/li&gt;

  &lt;li&gt;Name &lt;/li&gt;

  &lt;li&gt;ProductModelID &lt;/li&gt;

  &lt;li&gt;ProductModelName &lt;/li&gt;

  &lt;li&gt;CultureID &lt;/li&gt;

  &lt;li&gt;CultureName &lt;/li&gt;

  &lt;li&gt;Description &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We need two more columns in our data flow and to get them we will use a Derived Column transformation task so drag one on to the data flow from the toolbox and connect it up to the data source. Add the columns as shown in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_0FC92473.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_56B24770.png" width="528" height="436" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next the data flow needs to be duplicated into multiple streams so that the different members and attributes can be loaded to the staging tables. This is achieved by adding a Multicast transformation task to our data flow. This task does not require any configuration. There will be six outputs from the Multicast task and these will be used to load the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Product Members &lt;/li&gt;

  &lt;li&gt;Model Members &lt;/li&gt;

  &lt;li&gt;Culture Members &lt;/li&gt;

  &lt;li&gt;Product Model Attributes &lt;/li&gt;

  &lt;li&gt;Product Culture Attributes &lt;/li&gt;

  &lt;li&gt;Product Description Attributes &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these outputs needs to be tailored as to whether they will be loading a member or an attribute and also which member or attribute they are loading. Add six Derived Column transformation tasks to the data flow and connect them to the Multicast transformation. At this point our data flow should look similar to the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_41C0C4FD.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_1D9B6A6E.png" width="729" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For each of the Derived Column transformations add the additional columns as specified below: &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_7163AF92.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_1F51024B.png" width="734" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OK now we have got all the information we need in our data flows to start loading to the staging tables but before we do that there is one more thing to do. As we are loading new members to the Model and Culture entities as well as Product we need to ensure that we have only distinct values for our member codes to prevent staging errors. To achieve this we add and connect Aggregate transformation shapes to the data flows underneath the ‘Add Culture Member Information’ and ‘Add Model Member Information’ shapes. The images below show how to configure these aggregate transformation shapes:&lt;/p&gt;

&lt;p&gt;Group By Culture&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Group By Model&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_08A9E7FB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_4F930AF8.png" width="342" height="310" /&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_7D805DB0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_167C2DF6.png" width="340" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are now ready to load the data to the MDS staging tables. Add six OLE DB destination shapes to the dataflow. Three of the destinations will be to load new entity members and the other three will be to load attributes for these new members. Configure the Connection Manager properties of the destinations as follows:&lt;/p&gt;

&lt;p&gt;Members&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Attributes&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_018AAB83.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_5D6550F3.png" width="327" height="284" /&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_4873CE80.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_0F5CF17E.png" width="328" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect the first destination shape to the ‘Add Product Member Information’ shape and configure it as a member destination. Click the Mappings tab and set the Input and Destination column mappings as shown below: &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_663A2548.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_5148A2D5.png" width="340" height="259" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect the second destination shape to the ‘Group By Culture’ shape and configure it as a Member destination. The column mappings will be the same as above except for the MemberName and MemberCode columns and these will be set to CultureName and CultureID respectively.&lt;/p&gt;

&lt;p&gt;Connect the third destination shape to the ‘Group By Model’ shape and configure it as a Member destination. The column mappings will be the same as above except for the MemberName and MemberCode columns and these will be set to ProductModelName and ProductModelID respectively.&lt;/p&gt;

&lt;p&gt;Connect the fourth destination shape to the ‘Add Culture Attribute Information’ shape and configure it as an Attribute destination. The column mappings will be as follows: &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_7F35F58D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_1831C5D3.png" width="347" height="286" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure the next two destinations as Attribute destinations and map the columns as the other Attribute destination replacing the AttributeValue mapping with ProductModelID and Description respectively. Now our completed dataflow should look similar to the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/neil/image_3D4A4436.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/neil/image_thumb_5646147B.png" width="614" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you execute the package you will see that we have inserted 1764 Product member rows, 6 Culture member rows and 118 Model member rows into the mdm.tblStgMember table and 1764 attribute rows for each of the Culture, Model and Description attributes into the mdm.tblStgMemberAttribute table in your MDS database. It is worth noting that the data has now been staged only and we will not see it in our MDS entities yet.&lt;/p&gt;

&lt;p&gt;OK that’s as far as we are going to go in part one. In part two we will extend the package to move the data from the staging tables into the MDS model and validate the newly inserted data.&lt;/p&gt;</description></item><item><title>Data Quality Services</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2011/07/13/data-quality-services.aspx</link><pubDate>Wed, 13 Jul 2011 12:40:17 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:9288</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;As I’m sure you’ve heard, CTP3 of SQL Server Denali was released yesterday, and can be downloaded &lt;a href="https://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/"&gt;here&lt;/a&gt;. Denali includes &lt;a href="http://msdn.microsoft.com/en-us/library/ff877917(v=sql.110).aspx"&gt;Data Quality Services&lt;/a&gt; (DQS), Microsoft’s new data cleansing and matching component that’s based on the Zoomix acquisition that occurred a couple of years back. Data Quality Services didn’t make it into the first CTP, but is now available, so I though it would be worth a quick blog post.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Installing Data Quality Services&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Data Quality Services is an option in the main install, but when you go to run the Data Quality Client, you’ll get a message stating that DQS is not installed. As far as I can tell, DQS needs to be installed manually, by running the DQSInstaller.exe, which you can find in the SQL Server Binn directory. This will create two SQL Server databases:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_7C6696E8.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_434FB9E6.png" width="348" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Data Quality Client&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once DQS is configured, you’ll be in a position to use the Data Quality Client, which is a windows application, available in 32 or 64 bit. Once you connect, you’ll get the following screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_5C4B8A2B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_3C307D6E.png" width="527" height="329" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The knowledge base is the key to how DQS works, being utilised to determine the data quality of your source data. You can create your own knowledge base, using your own data, or even cloud-based data. For this example, I’m going to use the built in knowledge base called DQS Data.&lt;/p&gt;  &lt;p&gt;As an example, I’ve created some data that I want to cleanse. It’s adventure works country data that I’ve put into a separate table that I’ve called dbo.Country.&lt;/p&gt;  &lt;p&gt;My task now is is to clean this data, which I can do by creating a data quality project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_552C4DB3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_6E281DF8.png" width="296" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve called my project Countries, and I’ve picked the built-in DQS Data knowledge base, which I noticed contains reference data for countries. The activity that I’ve selected is Cleansing, and then I’ve clicked Create.&lt;/p&gt;  &lt;p&gt;DQS will then prompt for mapping the source data to one of the domains in the Knowledge Base. Here I’ve mapping my country name to the Country domain from the knowledge base:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1C1570B1.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_4A02C369.png" width="431" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After clicking the Start button on the next screen, the cleaning process starts, which gives the following results:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_351140F6.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_4E0D113B.png" width="642" height="248" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I put a couple of typos into my source data, such as changing Algeria to ‘Algerian’ and Albania to ‘Albana’. These were picked up by DQS, along with a few others, but a user has the opportunity to approve or reject, via the radio buttons shown above. I chose to approve the first two, and then clicked next. In the final screen, DQS allows you to output the cleaned data to a separate table, as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_7BFA63F3.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_29E7B6AC.png" width="464" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you go into the table that DQS has created, you will see that there is a Name_Status column, which holds the cleaning status on a per record basis:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_14F63439.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_42E386F1.png" width="451" height="155" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This can be used to update the source data, if required, and therefore address the data quality issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This has been a quick introduction to cleaning data with Data Quality Services. There’s plenty more to look at, and I hope to find time to do so at some point - In particular I’m keen to take a look at how DQS works with Master Data Services. I’ve noticed that there’s also a new MS DQS blog (&lt;a title="http://blogs.msdn.com/b/dqs/" href="http://blogs.msdn.com/b/dqs/"&gt;http://blogs.msdn.com/b/dqs/&lt;/a&gt;) – I’m sure that will be a great resource for DQS learning.&lt;/p&gt;</description></item><item><title>SQL Server Denali CTP 1 Released</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2010/11/09/sql-server-denali-ctp-1-released.aspx</link><pubDate>Tue, 09 Nov 2010 14:21:47 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7721</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;I’ve just found out that the first CTP for SQL Server codename Denali is now available for download. The link to get both the 32 and 64 bit versions is:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On a related note, Simon Sabin has recently posted &lt;a href="http://sqlblogcasts.com/blogs/simons/archive/2010/11/08/silverlight-reporting-coming-for-sql-server.aspx" target="_blank"&gt;here&lt;/a&gt; about the Tech-Ed Europe keynote that shows a glimpse of a new Silverlight reporting tool for SQL that’s part of Denali. Well worth watching the keynote video…&lt;/p&gt;</description></item><item><title>Master Data Services - Reversing Transactions</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2009/12/15/master-data-services-reversing-transactions.aspx</link><pubDate>Tue, 15 Dec 2009 22:17:41 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7559</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;MDM tools give the control of the enterprise master data over to the data stewards and power users, rather than relying on automated data integration alone.&lt;/p&gt;  &lt;p&gt;Master Data Services is no exception to the above. One of the ways that this is true for MDS is that it allows users to inspect the transactions that have occurred (either internal to MDS or from a source system) and choose if they want to reverse them.&lt;/p&gt;  &lt;p&gt;In order to achieve this MDS has a useful log of all transactions that&amp;#39;s viewable by users. Here&amp;#39;s an example of some transactions that have occurred in my test system - some are from data that I&amp;#39;ve loaded up via the staging tables, some are from manual member additions that I&amp;#39;ve carried out in the front end, and some are from business rules that have automatically run:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesReversingTransactions_DF9A/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="207" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesReversingTransactions_DF9A/image_thumb_1.png" width="732" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the model that this example is taken from, I&amp;#39;ve got some business rules that look to address data quality issues. Taking the Kimball view on data quality issues in a data warehousing context - many can, and should, be addressed in the source system, then re-loaded. That isn&amp;#39;t always possible, which is one of the reasons why we have business rules in MDS. However, as good any sort of automated rule is - there are always exceptions.&lt;/p&gt;  &lt;p&gt;In the transactions shown above, an automatic business rule has run that checks a Customer&amp;#39;s overdraft limit, then sets it to 10,000 if its over 10,000. Therefore, when a value of 50,000 was encountered for Member Code 10311, the MDS business rules kicked in and quite correctly did their job. This was not what I wanted in this particular case.&lt;/p&gt;  &lt;p&gt;Thankfully we can click on the undo button that&amp;#39;s shown above the grid, and reverse a chosen transaction, whether its come from a source system, a business rule or a manual edit. It doesn&amp;#39;t seem possible to reverse many transactions at once, but that may be just due to the CTP. In my example, by selecting the first transaction in the list, then clicking the undo button, I&amp;#39;ve reversed my automatic business rule. Therefore, the user Kaylee Adams (10311) shown below now has her original overdraft limit: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesReversingTransactions_DF9A/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="241" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesReversingTransactions_DF9A/image_thumb_3.png" width="750" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In conclusion, when some sort of manual intervention is needed to successfully manage master data, MDM tools allow that intervention to come from the power users, rather than having to wait for someone technical to address the issue.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ee7c53db-2095-4f6a-b98c-b131eb5b7027" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MDM" rel="tag"&gt;MDM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Master%20Data%20Services" rel="tag"&gt;Master Data Services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Kimball" rel="tag"&gt;Kimball&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data%20Warehousing" rel="tag"&gt;Data Warehousing&lt;/a&gt;&lt;/div&gt;</description></item><item><title>Master Data Services - Business Rules</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2009/11/15/master-data-services-business-rules.aspx</link><pubDate>Sun, 15 Nov 2009 20:28:13 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7549</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;I&amp;#39;ve been keeping an eye on the SQL Server 2008 R2 CTPs over the past few months, but have been compelled to start blogging again following the release of Master Data Services (MDS) in the November CTP.&lt;/p&gt;  &lt;p&gt;The idea of a Microsoft MDM tool first caught my attention with the acquisition of &lt;a href="http://www.stratature.com/" target="_blank"&gt;Stratature&lt;/a&gt;, and since then I&amp;#39;ve seen a few talks on the subject, such as &lt;a href="http://sqlblog.com/blogs/knightreign/" target="_blank"&gt;Kirk Haselden&amp;#39;s&lt;/a&gt; talk on the subject back at the BI Conference last year.&lt;/p&gt;  &lt;p&gt;Now that I&amp;#39;ve got my hands on it, I&amp;#39;ve decided to cover the set up of business rules in MDS. Business rules are key to an MDM solution. If we want to use MDM to load data from disparate source systems, we will definitely have to carry out a lot of cleansing and confirming in order to ensure that the end users only consume clean and accurate data.&lt;/p&gt;  &lt;p&gt;To set the scene a bit, I&amp;#39;ve created several entities in my MDM model, namely Customer, Country and City. These could form a Customer Geography hierarchy for example, but for the moment I&amp;#39;m going to focus on Customer. The following shows the Customers that I&amp;#39;ve entered manually:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="185" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_thumb_1.png" width="740" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When I add a Customer (via the button that is circled) or when I edit a customer, the third column of the grid for the relevant member will change from a tick to a question mark, indicating that data validation has not taken place.&lt;/p&gt;  &lt;p&gt;For this example, what I want to happen is for the Overdraft Limit attribute to validate that it is within normal boundaries that have been set by the business, e.g. a bank. To do this, I&amp;#39;m going to set up a simple business rule.&lt;/p&gt;  &lt;p&gt;Selecting Manage-&amp;gt;Business Rules will take you to the Business Rules Maintenance screen, where the &amp;#39;plus&amp;#39; icon will create you a new business rule. Editing the new blank rule will give a screen with a basic IF....THEN GUI to produce a basic business rule. On the IF part you pick conditions such as greater than, less than etc, alongside an all important dimension attribute. You do this by dragging and dropping conditions, in the screen below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="198" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_thumb_2.png" width="563" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In my case I&amp;#39;ve picked that the overdraft limit can&amp;#39;t be greater than &amp;#163;10,000, and if it is greater, then set it back to &amp;#163;10,000. This will do for now, but I could have prevented validation from succeeding, or caused MDM workflow to start. Clicking the MDS back button will take us back to the business rules maintenance screen, where the rule is not active until we publish it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_8.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="75" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_thumb_3.png" width="730" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once we do publish the rule, it will kick in whenever validation runs or when you manually run the business rules. In my grid of Customers above, I have an overdraft which is a mistake. When I validate the Customer entity, the 5555555 for the second customer automatically reverts to &amp;#163;10,000, as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_12.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="183" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/MasterDataServicesBusinessRules_1107A/image_thumb_5.png" width="731" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is quite a simple example of course, and via manual editing. The real power of these business rules will come when loading masses of data from source systems, with the added power of workflow to prompt business users to deal with the validation issues that may occur. I&amp;#39;ll aim to post about integrating from other systems via my next post in due course....&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3946bf8a-54e6-409d-bf6b-34991c682e63" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MDM" rel="tag"&gt;MDM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MDS" rel="tag"&gt;MDS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Master%20Data%20Services" rel="tag"&gt;Master Data Services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL%20Server" rel="tag"&gt;SQL Server&lt;/a&gt;&lt;/div&gt;</description></item><item><title>BI for IT Professionals using PerformancePoint</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2008/09/30/bi-for-it-professionals-using-performancepoint.aspx</link><pubDate>Tue, 30 Sep 2008 21:07:18 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:7417</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;The &lt;a href="http://www.microsoft.com/business/performancepoint/downloads/default.aspx" target="_blank"&gt;PerformancePoint downloads page&lt;/a&gt; has been recently updated to include a framework on how BI can provided to the IT Department.&lt;/p&gt;  &lt;p&gt;Normally the IT Department would be helping out with supporting BI solutions, not actually being end users themselves - but it makes sense when you consider the kind of information that &lt;a href="http://www.microsoft.com/systemcenter/operationsmanager/en/us/default.aspx" target="_blank"&gt;Operations Manager&lt;/a&gt; captures.&lt;/p&gt;  &lt;p align="left"&gt;As &lt;a href="http://edge.technet.com/Media/Business-Intelligence-for-the-IT-Pro/" target="_blank"&gt;this video&lt;/a&gt; explains, the end goal is to create solutions that will allow effective monitoring the IT infrastructure. An example of the kind of the kind of dashboards that can be produced is shown below:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/BIfortheITProfessionalsusingPerformanceP_12619/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="390" alt="Dashboard" src="http://blogs.adatis.co.uk/blogs/jeremykashel/WindowsLiveWriter/BIfortheITProfessionalsusingPerformanceP_12619/image_thumb_1.png" width="644" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There is &lt;a href="http://download.microsoft.com/download/0/a/3/0a3988d3-a847-4e72-ad17-0381bc5eda41/IT_Operations_Scorecards_and_Dashboards.doc" target="_blank"&gt;white paper&lt;/a&gt; and also a &lt;a href="http://download.microsoft.com/download/4/e/2/4e26e51d-e9ef-4dd5-8194-fe95e228335e/new%20IT%20Operations%20Scorecards%20and%20Dashboards%20Sample.zip" target="_blank"&gt;sample solution&lt;/a&gt; available for download to learn more.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7c9e135e-1089-4363-976d-ee284abbcaf9" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PerformancePoint" rel="tag"&gt;PerformancePoint&lt;/a&gt;,&lt;a href="http://technorati.com/tags/System%20Center" rel="tag"&gt;System Center&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dashboards" rel="tag"&gt;Dashboards&lt;/a&gt;&lt;/div&gt;</description></item><item><title>SQL Server 2005 Cumulative Update 8 for Service Pack 2</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2008/06/19/sql-server-2005-cumulative-update-8-for-service-pack-2.aspx</link><pubDate>Thu, 19 Jun 2008 08:04:36 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:6526</guid><dc:creator>Jeremy Kashel</dc:creator><description>&lt;p&gt;Microsoft have just released Cumulative Update 8 for SQL Server 2005 Service Pack 2.&lt;/p&gt;  &lt;p&gt;Amongst the changes are a few fixes for small problems in Analysis Services, such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Infinite recursion occurs in the CalculationPassValue function in SQL Server 2005 Analysis Services;&lt;/li&gt;    &lt;li&gt;A data source view that connects to an Oracle database generates incorrect relationships when you develop a Microsoft SQL Server 2005 Analysis Services project by using BIDS;&lt;/li&gt;    &lt;li&gt;The MeasureGroupMeasures function does not work correctly in SQL Server 2005 Analysis Services;&lt;/li&gt;    &lt;li&gt;All the MDX queries that are running on an instance of SQL Server 2005 Analysis Services are canceled when you start or stop a SQL Server Profiler trace for the instance.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Details the above fixes and many more can be found &lt;a href="http://support.microsoft.com/kb/951217/en-us" target="_blank"&gt;here&lt;/a&gt;, as well as details of how to download the update. As usual, you can only apply the hotfix if you have Service Pack 2 installed.&lt;/p&gt;  &lt;p&gt;Details of all SQL Server 2005 builds released after Service Pack 2 can be found &lt;a href="http://support.microsoft.com/kb/937137/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54322ff3-a90a-4485-914d-1ad43bc591f7" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SQL%20Server%202005" rel="tag"&gt;SQL Server 2005&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Analysis%20Services" rel="tag"&gt;Analysis Services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Service%20Pack%202" rel="tag"&gt;Service Pack 2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cumulative%20Update%208" rel="tag"&gt;Cumulative Update 8&lt;/a&gt;&lt;/div&gt;</description></item><item><title>Microsoft MDM Technology Preview</title><link>http://blogs.adatis.co.uk/blogs/timkent/archive/2007/11/21/microsoft-mdm-technology-preview.aspx</link><pubDate>Wed, 21 Nov 2007 12:00:33 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:676</guid><dc:creator>Tim Kent</dc:creator><description>&lt;p&gt;Microsoft&amp;#39;s first Technology preview of their upcoming MDM product will be available from tomorrow.&amp;nbsp; More details on how to participate can be found in &lt;a href="http://blogs.msdn.com/knight_reign/archive/2007/11/21/surprise-mdm-technology-preview-available-tomorrow.aspx" target="_blank"&gt;Kirk Hasselden&amp;#39;s blog&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Rumours are it&amp;#39;s all going to be based around SharePoint...&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/knight_reign/archive/2007/11/21/surprise-mdm-technology-preview-available-tomorrow.aspx" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>