<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>MCS UK Data Platform and Business Intelligence Team</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/mcsukbi/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/mcsukbi/feed.xml</link>
    <description>The blog of the Microsoft Consulting Services (UK) Data Platform and Business Analytics Team.</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:48:54 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>"There's nothing wrong with the SAN!"</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/theres-nothing-wrong-with-the-san</link>
      <pubDate>Thu, 22 Aug 2013 03:01:42 GMT</pubDate>
      <dc:creator><![CDATA[superlatch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2013/08/22/theres-nothing-wrong-with-the-san/</guid>
      <description><![CDATA[Author: David Williams (Microsoft)    Contributor &amp; Technical Reviewer: Matthew Robertshaw...]]></description>
      <content:encoded><![CDATA[<p>Author: David Williams (Microsoft)    <br />Contributor &amp; Technical Reviewer: Matthew Robertshaw (Microsoft)</p>  <p>How many times have you heard the above from the Storage team, having looked at SQL's wait types and seen PAGEIOLATCH_*?</p>  <p>You <b>know</b> there's something gone wrong with your disks, because SQL's telling you so. But the guy/gal in the disk team isn't having any of it.</p>  <p>What next? How do you tell who's right? This is an amazingly common scenario, one which I've seen a hundred times (and have become embroiled in most of them). </p>  <p>This blog post will show you how to go about figuring out, from a SQL Server perspective, whether the disks really are at fault or if there's something important you've missed. This is going to be a pretty long haul but it's worth it, so get a cup of tea/coffee/local equivalent and get comfy.</p>  <p>First off we need to make some clarifications on terminology. This may seem academic to start with, but it's really important to get specific with your definitions. You'll see why shortly.</p>  <p>SQL's telling you PAGEIOLATCH_* is the major wait type. What does this really mean? It means the query tried to read a row from a page which was trying to do some physical IO (either reading or writing), and you had to wait on the latch to get to the page.</p>  <p>Note at this point; you're waiting for I/O to happen. The I/O stack in SQL is pretty shallow because we farm out IO requests to Windows, which in turn farms it out to the Kernel, which pushes it through a driver, which goes through the HBA (or equivalent), through the fibre, onto a SAN (probably), then through the various levels in the SAN, until it hits one or more spindles.</p>  <p>Hopefully at this point you're beginning to think: &quot;Wow, that's a lot of things that can go wrong!&quot;. Indeed it is - each one of these layers can experience issues or contention. So rather than thinking &quot;It's the disks!&quot;, we need to start thinking &quot;It's the physical IO stack!&quot;. </p>  <p>Ok, so, we've got &quot;physical IO contention&quot;. How does this redefinition help?</p>  <p>We can now approach troubleshooting the <i>stack</i> (rather than the disks) to see where the contention/problem lies. First off we need to figure out whether we're driving the stack too hard. The back end has a limit to the amount of data it can shift and at what latency, so let's make sure we're not pushing it too hard.</p>  <p>How hard is &quot;too hard&quot;? The answer may not be as simple as it first appears. </p>  <p>When one configures a SAN for SQL it's a good idea to run SQLIO to gauge what the physical IO stack is capable of doing in that configuration, to determine if that suits the database activity that will be occurring. If we're running a Data Warehouse we'll want to do lots of parallel scan operations on the data<ins datetime="2013-08-10T13:50" cite="mailto:Matthew%20Robertshaw"> </ins>files (probably reads) and a fair amount of sequential writes on the logs. If we're <ins datetime="2013-08-12T09:57" cite="mailto:David%20Williams%20(SQL)">ru</ins>nning OLTP then we're likely doing lots of short, serial, random IO on the datafiles (reads and writes), and lots of short sequential writes to the logfiles. Same goes for TempDB.</p>  <p>So once the back end is correctly configured for the activity type and SQLIO has been run to check performance, we know at what throughput &amp;/ latency the configuration tops out at.</p>  <p>If we ran SQLIO on the new system, and kept the output files and PerfMon output handy, we can refer to this data to find out the configuration’s maximum capabilities. We can then compare it to the current response patterns to see if the disks are being driven close to their known maximum. If we didn’t run SQLIO, then we need to just look at how the system is responding now, and judge if the system is overstressed.</p>  <p>PerfMon shows how the physical IO stack is responding. But what counters are best? For a start, NEVER use the Physical Disk counter unless we're connecting directly to physical disks. If a single drive in Windows maps to multiple disks then use Logical Disk. The reason for this is that many SANs hide the true number of physical disks from you, which makes conclusions confusing or downright incorrect.</p>  <p>These counters are your new Best Friends:</p>  <p><b>Logical Disk :: %Idle Time</b></p>  <p><b>Logical Disk :: Avg. Disk sec/Read</b></p>  <p><b>Logical Disk :: Avg. Disk sec/Write</b></p>  <p><b>Logical Disk :: Disk Read Bytes/sec</b></p>  <p><b>Logical Disk :: Disk Write Bytes/sec</b></p>  <p><b>SQL Server:Buffer Manager :: Page Life Expectancy</b></p>  <p>These counters should be captured over at least 20 minutes with 1 second interval for each disk, when the disks are under their peak load. I would normally expect to see a separate drive letter/mount point for System Databases, tempdb, Data<ins datetime="2013-08-10T13:54" cite="mailto:Matthew%20Robertshaw"> </ins>files, Log<ins datetime="2013-08-10T13:54" cite="mailto:Matthew%20Robertshaw"> </ins>files, and Backups. Each of these may have to have a different configuration to handle the differing file activity types<ins datetime="2013-08-21T15:01" cite="mailto:David%20Williams%20(SQL)"> (there’s a blog post coming up on this soon!)</ins>.<ins datetime="2013-08-10T14:19" cite="mailto:Matthew%20Robertshaw"></ins></p>  <p>&quot;% Idle Time&quot; tells us how hard the drive is working. If this counter is reading under 80% average or spiking under 40% (min) then the underlying disks are working too hard.</p>  <p>&quot;Avg. Disk sec/Read&quot; tells us the read latency for the drive. For the data<ins datetime="2013-08-10T13:54" cite="mailto:Matthew%20Robertshaw"> </ins>file drive this should average under 17ms with no spikes over 25ms, for the TempDB drive it should average under 10ms with no spikes over 10ms.</p>  <p>&quot;Avg. Disk sec/Write&quot; tells us the write latency for the drive. For the datafile drive this should average under 17ms with no spikes over 25ms, for the TempDB and logfile drives it should average under 10ms with no spikes over 10ms.</p>  <p>&quot;Disk Read Bytes/sec&quot; gives us context for the above counters - it tells us the volume of reads happening on the drive. There is no &quot;correct&quot; value for this, but note that drives tuned for OLTP may not be able to provide high volume throughput.</p>  <p>&quot;Disk Write Bytes/sec&quot; gives us context for the above counters - it tells us the volume of writes happening on the drive. There is no &quot;correct&quot; value for this, but note that drives tuned for OLTP may not be able to provide high volume throughput.</p>  <p>&quot;Page Life Expectancy&quot; tells us how volatile the Buffer Pool is. If this is below threshold then we're probably doing too much reading and stressing the physical IO stack. See my previous blog on how to calculate PLE (<a href="https://blogs.msdn.com/b/mcsukbi/archive/2013/04/12/sql-server-page-life-expectancy.aspx">https://blogs.msdn.com/b/mcsukbi/archive/2013/04/12/sql-server-page-life-expectancy.aspx</a>).</p>  <p>Armed with the above counters we can tell if the issue that is happening can be dealt with by the SQL team, or by someone else.</p>  <p>If we have low idle time, high latency, and low throughput then the back end may be saturated with other people's activity, or incorrectly configured for the load type we're placing it under. We're not asking much of our drive but it's not responding as we'd expect. Check Page Life Expectancy (PLE) to see if the system needs tuning.</p>  <p>If we have high idle time, low latency, and high <ins datetime="2013-08-12T09:59" cite="mailto:David%20Williams%20(SQL)">read/</ins>write throughput, we're doing a lot of work but the stack can cope. The PLE will likely be low but we need to find out what's running to cause such a large amount of write activity.</p>  <p>If we have high idle time, high latency, and low throughput, we're bottlenecking outside the disks. We need to check the driver levels and the HBA configuration. If these are good<ins datetime="2013-08-12T10:11" cite="mailto:David%20Williams%20(SQL)">,</ins> check SAN fabric/node saturation levels.</p>  <p><a><font color="#000000">There are too many specific combinations to cover here, but by now you should be getting the picture.</font></a></p>  <p>So in summary – if we suspect that the physical IO stack isn’t responding as we’d expect, make sure that the issue doesn’t lie a little closer to home.</p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Server Page Life Expectancy</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/sql-server-page-life-expectancy</link>
      <pubDate>Thu, 11 Apr 2013 23:11:01 GMT</pubDate>
      <dc:creator><![CDATA[superlatch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2013/04/11/sql-server-page-life-expectancy/</guid>
      <description><![CDATA[Author: David Williams (Microsoft)    Contributor &amp; Reviewer: Matthew Robertshaw (Microsoft)...]]></description>
      <content:encoded><![CDATA[<p>Author: David Williams (Microsoft)    <br />Contributor &amp; Reviewer: Matthew Robertshaw (Microsoft)</p> Ever wondered how volatile your Buffer Pool is? Keeping you awake at night?   <p>Page Life Expectancy (PLE) is the best indication of how volatile your Buffer Pool is (BP). It's a PerfMon counter, found in the SQL Server:Buffer Manager PerfMon object.&#160; Monitor it every 3-5 seconds or so. There is also the Buffer Node:Page Life Expectancy counter which should be considered for NUMA systems, using the same logic per node as one would on a non-NUMA system.</p>  <p>Volatility is measured by taking the average &quot;life&quot; of a page within the Buffer Pool (in seconds). If a page is overwritten or aged out, it starts a whole new life. </p>  <p>So if lots of pages are being overwritten with new data very often, the average PLE will be low, and our BP volatility will be high.&#160;&#160; </p>  <p>Conversely if most pages in our BP remain there for a long time without being overwritten, the average PLE will be high, and the BP volatility will be low.</p>  <p>So why do we care about BP volatility and PLE? What can knowing the BP volatility do for us? What is a &quot;good&quot; and &quot;bad&quot; PLE figure?</p>  <p>PLE can be a measure of how much physical IO your SQL Server is doing. Hopefully I've got your attention, because physical IO is a major performance concern, both for reading and writing.</p>  <p>Let's say you're loading a large amount of data into SQL Server. You want this to get into SQL Server as quickly as possible, so you're using SSIS with lots of parallel threads, hash partitions on the table, no indexes, and all the other tricks described here: <a href="https://msdn.microsoft.com/en-us/library/dd537533(v=sql.100).aspx">https://msdn.microsoft.com/en-us/library/dd537533(v=sql.100).aspx</a>.</p>  <p>Because nothing goes onto the page without first going into the BP, your BP will be flooded with this new data. Your BP pages are being overwritten by as much physical IO as possible on the read, therefore your PLE dips sharply. If you're doing a big data load you want your PLE to be as low as possible, because this means the data load is going quickly.</p>  <p>Now let's say you're running a big report using Reporting Services. We don't want to do much physical IO (if any) because having to read data pages from disk will slow us down. In this case we want our BP volatility to be as low as possible, and our PLE to be as high as possible (or as high as necessary for the query to hit SLA, see future post on query SLA's).</p>  <p>So depending on the activity on the server, PLE can give us an indication of how efficient our physical IO/BP ratio is. </p>  <p>We therefore have to be aware of the dominant activity type on the server before we make a call on whether PLE is &quot;good&quot; or &quot;bad&quot;.</p>  <p>The old recommendation was that PLE should have a minimum of about 300 seconds. This was from the days when SQL's BP was around 4GB or so. This therefore meant that for a read-mostly activity such as a report a PLE of 300 meant that the SAN was reading 4GB over 5 minutes, which calculates to about 3.4MB/s.    <br /> These days we have BP's around the 64GB and above. So our 300 second threshold now means that the SAN would be reading about 218.5MB/s, which is a fair amount and likely to cause comment!</p>  <p>So what's a &quot;good&quot; PLE for a read-mostly operation like a report? Here's a handy formula I use to get a decent estimate:</p>  <p>PLE threshold = ((MAXBP(MB)/1024)/4)*300</p>  <p>Where MAXBP(MB) is the maximum amount of Buffer Pool memory (in MegaBytes) over the report run you're interested in. You can use PerfMon to trace the maximum value of SQL Server:Buffer Manager:Database Pages over your reporting run.</p>  <p>Take that number of pages and convert to MB: (pages*8)/1024 then substitute that for ‘MAXBP(MB)’ in the above formula to get your minimum PLE.</p>  <p>The above formula considers each 4GB of BP (per NUMA node or otherwise) to have it’s own 300 second PLE. Therefore the more BP you have allocated, the higher the PLE threshold.</p>  <p>If you want a &quot;quick and dirty&quot; way of calculating the PLE threshold then you can use the sp_configure &quot;max server memory (MB)&quot; value in the formula above, but this isn't really accurate because it doesn't account for stolen memory (memory taken from the BP, usually for plan caching, compilation, optimisation etc), and is even less accurate for SQL Server 2012 because we have lots of new stuff considered in the &quot;max server memory (MB)&quot; setting for 2012.</p>  <p>If you're reading this because you're just after a threshold for PLE and you either know how to investigate low PLE, or you don't care, you can stop reading now.</p>  <p>However if you're interested in what to do when PLE crashes, read on!</p>  <p>PLE is an amazing counter - you can use it to quickly direct you straight towards the problem areas if you know a few little tricks.</p>  <p>If PLE is low there must be a reason for this - knowing the reason is the key to investigating a performance problem through PLE.</p>  <p>If you're doing a big load, you want PLE to be low, so that's fine. If we're doing read-mostly activities and it's under the threshold, here's the top 3 reasons:</p>  <p>1) The queries being run have changed to look at data that they weren't before, hence we now read in this new data into the BP. Or you're reporting just after a data load of different data, or just a large data load. </p>  <p>2) The queries being run are inefficient, and are reading unnecessary data into the BP which is therefore being constantly turned over</p>  <p>3) There are large numbers of efficient queries (or a few very large efficient queries) which are saturating the BP</p>  <p>Here's what you do for each of these situations</p>  <p>1) This is normal, but it should be short-lived. You'd expect to see the PLE drop off a cliff, then build back up over the threshold and stay there until the next shift in data requirement. If it drops and stays there, you're probably in situation 2 or 3</p>  <p>2) You can find this out by looking at the top queries for physical IO usage and checking out the query plans. If you see lots of scans, there may be some tuning to be done! Since 80% of performance problems come down to poor T-SQL (which may therefore create inefficient Query Plans), consider this before you think you're in situation 3!</p>  <p>3) You've done your best, the queries are as efficient as they can get, but your PLE is still low. You can either spread out the queries (maybe running Agent Jobs one after the other instead of at the same time), or increase the amount of Buffer Pool memory. NEVER leave less than 1GB free for the OS, 2GB for servers with &gt;64GB RAM, 4GB for servers with &gt;128GB RAM. It's not that it's &quot;free&quot; and never used, the OS will use it and release it in much less than a second - less time than PerfMon or most tools' data gather interval, so it's being used but you don't get to see it. So if your PerfMon counter &quot;Memory:Available Memory in MB&quot; is under these thresholds and you're in situation 3, you need more physical memory so you can increase BP AND keep enough memory for the OS.</p>  <p>So there's PLE in a nutshell, look out for the next blog post on how to convince your Storage team that the Storage isn't working properly - I'll show you how to provide unequivocal proof, or how to tell if you're barking up the wrong tree!&#160; </p>]]></content:encoded>
    </item>
    <item>
      <title>Using PowerShell to deploy Windows Azure Virtual Machines and Windows Azure SQL Databases</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/using-powershell-to-deploy-windows-azure-virtual-machines-and-windows-azure-sql-databases</link>
      <pubDate>Thu, 21 Mar 2013 13:46:00 GMT</pubDate>
      <dc:creator><![CDATA[superlatch]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2013/03/21/using-powershell-to-deploy-windows-azure-virtual-machines-and-windows-azure-sql-databases/</guid>
      <description><![CDATA[Author: Benjamin Wright-Jones (Microsoft) Contributors: Karthika Raman (Microsoft) Technical...]]></description>
      <content:encoded><![CDATA[<p>Author: Benjamin Wright-Jones (Microsoft) <br />Contributors: Karthika Raman (Microsoft) <br />Technical Reviewers: Guy Bowerman (Microsoft), Sanjay Nagamangalam (Microsoft)</p>
<p>I have recently been exploring the use IaaS (Infrastructure as a Service) to provide cloud-based virtual machines (VM&rsquo;s) as opposed to laptop-based VM&rsquo;s and also PaaS (Platform as a Service) for SQL databases.&nbsp; I like the idea of carrying around a lighter more portable laptop and using cloud services to help me day to day, in contrast to carrying a heavy weight workstation for Hyper-v usage.</p>
<p>I know we can deploy VM&rsquo;s through the Azure Portal but I prefer an automated approach.&nbsp; Fortunately the new PowerShell cmdlets support Azure VM provisioning and also Azure SQL database provisioning (plus some other nice interfaces).&nbsp; This enables me to quickly spin up a SQL Server VM in Azure or SQL database in Azure.&nbsp;&nbsp; I am actually quite amazed what is possible with PowerShell and it is my new best friend.&nbsp; PowerShell ISE in Windows 8 is superb, I highly recommend this as a development environment due to the intellisense and cmdlets search pane integration.&nbsp;</p>
<p>Below is the PowerShell script I wrote to provision a VM.&nbsp; Unfortunately some manual steps are still required if you wish to manage the SQL Server instance remotely through Management Studio e.g. opening firewall ports, enabling TCP etc.&nbsp;&nbsp; This is all documented here <a title="https://www.windowsazure.com/en-us/manage/windows/common-tasks/sql-server-on-a-vm/" href="https://www.windowsazure.com/en-us/manage/windows/common-tasks/sql-server-on-a-vm/">https://www.windowsazure.com/en-us/manage/windows/common-tasks/sql-server-on-a-vm/</a>.&nbsp; Fortunately it is a lot easier to connect to an Azure SQL database and we can automate the registration of the provisioned instance in Management Studio.</p>
<h2>Azure VM Provisioning (SQL Server 2012 Evaluation Edition)</h2>
<h5>Step 1. Download and register the Azure publishing certificate (one time only event).&nbsp;</h5>
<p>In order to use PowerShell with the Azure VM and SQL Database services you will need to download and import the publishing file. Fortunately, this is a simple process.&nbsp; I also store my certificate on Skydrive so I can access it everywhere I go in case I need it again.</p>
<pre class="csharpcode">Get-AzurePublishSettingsFile
Import-AzurePublishSettingsFile C:\...</pre>
<p>If you don&rsquo;t import the publishing file then you may see an error similar to below when attempting to access the Azure services.</p>
<p><span style="color: #000000;">An error occurred <span class="kwrd"><span style="color: #000000;">while</span></span> making the HTTP request to </span><span style="color: #000000;"><a href="https://management.core">https:</a></span></p>
<pre class="csharpcode"><span style="color: #000000;"><a><span style="color: #000000;">//</span><span style="color: #000000;">management</span></a><a href="https://management.core"><span style="color: #000000;"><a href="https://management.core">.core</a><a>.<br /></a></span></a></span><span class="rem"><span style="color: #000000;">windows.net</span></span><span class="rem"><span style="color: #000000;">/ae81ecb1-a8af-4fb7-87c5-4418babb4ff2/services/sqlservers/servers<br /></span></span><span class="rem"><span style="color: #000000;">/&lt;server&gt;?op=ResetPassword. </span></span><span class="rem"><span style="color: #000000;">This could be due to the fact that the server <br /></span></span><span class="rem"><span style="color: #000000;">certificate is not configured properly with </span></span><span class="rem"><span style="color: #000000;">HTTP.SYS in the HTTPS case. This <br /></span></span><span class="rem"><span style="color: #000000;">could also be caused by a mismatch of the security binding </span></span><span class="rem"><span style="color: #000000;">between the client <br /></span></span><span class="rem"><span style="color: #000000;">and the server.</span></span>&nbsp;</pre>
<h5>Step 2. View available subscriptions and set the correct Subscription</h5>
<pre class="csharpcode">Get-AzureSubscription | Select SubscriptionName
Select-AzureSubscription &ndash;SubscriptionName</pre>
<p>Incidentally, you may also need to associate a specific Azure Storage Vault (ASV) Account with your subscription, for some reason the default value was null so I had to allocate a specific account.&nbsp; The Azure Storage account is required to host the VM disks which are provisioned during the creation of an Azure VM image.&nbsp;&nbsp;</p>
<pre class="csharpcode">Get-AzureStorageAccount | Select Label
Set-AzureSubscription -SubscriptionName <span class="str">"Windows Azure MSDN - Visual Studio Ultimate"</span> </pre>
<pre class="csharpcode">-CurrentStorageAccount <span class="str">"&lt;storageaccount&gt;"</span></pre>
<h5>Step 3. View the available Azure VM images and locations</h5>
<pre class="csharpcode">Get-AzureVMImage | Select ImageName
Get-AzureLocation | Select DisplayName</pre>
<h5>Step 4. Create an Azure VM</h5>
<p>I like my VM&rsquo;s big! ExtraLarge!&nbsp; You can use the New-AzureQuickVM syntax, New-AzureVM or New-AzureVMConfig syntax,&nbsp; The New-AzureQuickVM automatically creates and provisions the VM which does not require any additional steps.&nbsp;</p>
<pre class="csharpcode">New-AzureQuickVM -Windows -ServiceName <span class="str">"&lt;azureservice&gt;"</span> -Name <span class="str">"&lt;vmname&gt;"</span> <br />-ImageName <span class="str">"b83b3509582419d99629ce476bcb5c8__Microsoft-SQL-Server-2012-<br /></span><span class="str">Evaluation-CY13Feb-SQL11-SP1-CU2-11.0.3339.0"</span> &ndash;Password &lt;password&gt; -Location <span class="str">"North Europe" <br />&ndash;InstanceSize &ldquo;ExtraLarge&rdquo;</span>&nbsp;</pre>
<p>You should see something like this below.&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/metablogapi/4705.image_2A268D47.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37-metablogapi/4705.image_5F00_2A268D47.png"><img style="border-width: 0px; margin: 0px 5px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/metablogapi/5824.image_thumb_41055EC3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37-metablogapi/5824.image_5F00_thumb_5F00_41055EC3.png" alt="image" width="658" height="80" border="0" /></a></p>
<p>If you see a DNS error then you may be trying to provision a under a duplicate service name e.g. Error "DNS name already exists" is misleading as it refers to a duplicate service name so change this in the parameters. This servicename refers to the VM service by which you reference/connect e.g. &lt;vmservice&gt;.cloudapp.net</p>
<h5>Step 6. Start the Azure VM</h5>
<p>Start the Azure VM using the command below.</p>
<pre class="csharpcode">Start-AzureVM -ServiceName <span class="str">"&lt;servicename&gt;"</span> -Name <span class="str">"&lt;vmname&gt;"</span></pre>
<p>You can view the properties of your Azure VM&rsquo;s by using Get-AzureVM &ndash;ServiceName &lt;ServiceName&gt;.&nbsp; I would also add that additional data disks can be simply added using the Add-AzureDataDisk syntax providing the ability to simply increase the capacity of the provisioned Azure VM instance.</p>
<h5>Step 7. Download the&nbsp; remote desktop connection file to your local desktop!</h5>
<p>Another great feature is the ability to automatically download the remote desktop file for the provisioned Azure VM.&nbsp;</p>
<p><span style="font-family: Consolas;"><span style="font-size: x-small;">Get-AzureRemoteDesktopFile -ServiceName <span class="str">"&lt;ServiceName&gt;"</span> -name <span class="str">"&lt;vmname&gt;"</span> -LocalPath <span class="str">"$ENV:userprofile\Desktop\myVm01.rdp"</span></span></span></p>
<p>It is also possible to automatically launch and connect to your VM instance using the standard Remote Desktop client, mstsc.exe, which just eliminates another step in the process to connect to your Azure VM.&nbsp;</p>
<pre class="csharpcode">mstsc $ENV:userprofile\Desktop\myAzureVm1.rdp</pre>
<p>Of course you could parameterise all of this to make life even simpler.&nbsp;</p>
<h5>Step 8. Connect!</h5>
<p>Simply enter the username and password off you go, simple.&nbsp;&nbsp; You could create multiple PowerShell batch files for each Azure VM image type.&nbsp; I am sticking with the SQL Server 2012 instance for now.&nbsp;</p>
<h3>Teardown</h3>
<p>Cleaning up the environment is simple too, just a couple of PowerShell commands to stop and remove the provisioned VM.</p>
<h5>Step 9. Stop the Azure VM</h5>
<pre class="csharpcode">Stop-AzureVM  -ServiceName <span class="str">"&lt;ServiceName&gt;"</span> -Name <span class="str">"&lt;VmName&gt;"</span></pre>
<h5>Step 10. Remove/delete the Azure VM</h5>
<pre class="csharpcode">Remove-AzureVM -ServiceName <span class="str">"&lt;ServiceName&gt;"</span> -Name <span class="str">"&lt;VmName&gt;"</span></pre>
<h5>Step 11. Remove/delete the Azure VM disks</h5>
<p>The VHD&rsquo;s associated with the image are not automatically removed so you will need to issue the Remove-AzureDisk command.&nbsp; You can view the existing VHD&rsquo;s and the associated image and container using the Get-AzureDisk command as shown below.&nbsp; You will notice that I only have one disk (VHD) associated to an image.&nbsp; The other VHD&rsquo;s were from previous Azure VM deployments.&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/metablogapi/2870.image_5C0E0804.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37-metablogapi/2870.image_5F00_5C0E0804.png"><img style="border-width: 0px; margin: 0px 5px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/metablogapi/6354.image_thumb_56EB7EBB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37-metablogapi/6354.image_5F00_thumb_5F00_56EB7EBB.png" alt="image" width="697" height="148" border="0" /></a></p>
<p>Removing (deleting) the VHD is simple.&nbsp; The &ndash;DeleteVHD parameter is required if you wish to permanently delete the image from ASV so use with caution!</p>
<pre class="csharpcode">Remove-AzureDisk &ndash;DiskName &lt;diskname&gt; &ndash;DeleteVHD</pre>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/metablogapi/6403.image_710B9C45.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37-metablogapi/6403.image_5F00_710B9C45.png"><img style="border-width: 0px; margin: 0px 5px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/metablogapi/6428.image_thumb_0CECAB71.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37-metablogapi/6428.image_5F00_thumb_5F00_0CECAB71.png" alt="image" width="696" height="95" border="0" /></a></p>
<h5>Step 12. Remove the allocated cloud service</h5>
<pre class="csharpcode">Remove-AzureService -ServiceName <span class="str">"&lt;servicename&gt;"</span> </pre>
<h5>Step 13. Remember to save your PowerShell script and parameterise it for one-click deployment!</h5>
<h2>Azure SQL Database Provisioning</h2>
<p>On a related noted, it is also possible to provision a Windows Azure SQL Database using the new PowerShell cmdlets allowing me to rapidly deploy a cloud-based relational data store.&nbsp; You must register the Azure publishing certificate unless this has been done previously (as above in step 1.).</p>
<pre class="csharpcode">Import-AzurePublishSettingsFile C:\....
Set-AzureSqlDatabaseServer &ndash;ServerName &lt;server&gt; &ndash;AdminPassword &lt;password&gt;</pre>
<p>Creating a new Azure SQL Database instance is also easy, an example is provided below.&nbsp; I chose North Europe due to my geographical location.&nbsp;</p>
<pre class="csharpcode">New-AzureSqlDatabaseServer -location <span class="str">"North Europe"</span> -AdministratorLogin <span class="str">"&lt;login&gt;"</span> <br />-AdministratorLoginPassword "&lt;password&gt;&rdquo; </pre>
<p>You&rsquo;ll need to create a firewall rule so you can connect to the new Azure SQL Database instance:</p>
<pre class="csharpcode">New-AzureSqlDatabaseServerFirewallRule -ServerName <span class="str">&lt;server&gt;</span> &ndash;RuleName </pre>
<p><span style="color: #006080;">&lt;rulename&gt;</span></p>
<pre class="csharpcode"> <br />-StartIPAddress <span class="str">"0.0.0.0"</span> -EndIPAddress <span class="str">"222.222.222.222"</span></pre>
<p>As I was working through this, I discovered a VERY useful command which pops up a dialog with the help options for a specific command, an example is shown below.&nbsp; Omitting the &ndash;ShowWindow syntax will output the help details to the console window.</p>
<pre class="csharpcode">Get-Help Set-AzureSqlDatabase &ndash;ShowWindow</pre>
<p>The next step was to create a SQL Server authenticated connection to the server hosting the Windows Azure SQL Database.&nbsp; This is an important step as it establishes the context for the connection.&nbsp;</p>
<pre class="csharpcode">#specify sql auth credential
$servercredential = <span class="kwrd">new</span>-<span class="kwrd">object</span> System.Management.Automation.PSCredential(<span class="str">"&lt;username&gt;"</span>, <br />(<span class="str">"&lt;password&gt;"</span> | ConvertTo-SecureString -asPlainText -Force))

#create a connection context
$ctx = New-AzureSqlDatabaseServerContext &ndash;ServerName &lt;servername&gt; -Credential $serverCredential</pre>
<p>Incidentally, if you are wondering what is stored in the connection context then see below:</p>
<pre class="csharpcode">ServerName        : &lt;server&gt;
SessionActivityId : 850d5e6f-7201-4bad-8fd5-331086064d4a
ClientSessionId   : e8d82a6d-0ed2-4aa3-9c38-3c3da924ab6a-2013-03-13 15:49:35Z
ClientRequestId   : d2436b67-ecca-453d-8d7c-12619e599784-2013-03-13 16:02:36Z
Databases         : {master} </pre>
<p>Wondering what databases you can see?&nbsp; Easy.</p>
<pre class="csharpcode">Get-AzureSqlDatabase -Context $ctx</pre>
<p>Which returns all the databases deployed on the provisioned instance.&nbsp; In the case below, only the master database was listed as no other databases are currently deployed.</p>
<pre class="csharpcode">Name          : master
CollationName : SQL_Latin1_General_CP1_CI_AS
Edition       : Web
MaxSizeGB     : 5
CreationDate  : 12/03/2013 22:35:57</pre>
<p>Want a new database?&nbsp; Easy again.</p>
<pre class="csharpcode">New-AzureSqlDatabase -Context $ctx &ndash;DatabaseName &lt;databasename&gt;-Collation SQL_Latin1_General_CP1_CI_AS <br />-Edition Web -MaxSizeGB 5</pre>
<p>Interestingly, there are a host of DataServiceContext class options made available under the context of the connection such as ServerMetrics and DatabaseMetrics.&nbsp; This provides some interesting insight into the metadata for your Azure SQL database server such as throttled connections and failures.&nbsp;&nbsp; Unfortunately, the context commands are not documented right now so this is just exploratory and the exposed properties may be removed in the future.&nbsp;</p>
<pre class="csharpcode">$ctx.ServerMetrics.IncludeTotalCount()
$ctx.DatabaseMetrics.IncludeTotalCount()</pre>
<p>Beyond the ability to provision a Windows Azure SQL Database using PowerShell cmdlets, I can also save time by automatically registering the Azure SQL instance in SQL Server Management Studio by invoking the SQL Server 2012 PowerShell command New-Item as below (thereby saving even more time!).&nbsp; The AzureSqlDbServer1 reference is the friendly name which appears in the SQL Server Management console.</p>
<pre class="csharpcode">Import-Module sqlps
Cd <span class="str">"sqlregistration\Database Engine Server Group"</span>
New-Item AzureSqlDbServer1 -ItemType Registration -Value <span class="str">"server=&lt;server&gt;.</span><span class="str">database.windows.net; <br />integrated </span><span class="str">security=false; userid=&lt;username&gt;; </span><span class="str">password=&lt;password&gt;; initial catalog=&lt;databasename&gt;"</span></pre>
<h3>Teardown</h3>
<p>Removing (or de-provisioning) the Azure SQL database, instance and Management Studio registration is simple.&nbsp; The last command, Remove-Item, is a SQL Server PowerShell command to delete the Management Studio server registration and this must be invoked using sqlps as above.</p>
<pre class="csharpcode">Remove-AzureSqlDatabase $ctx &ndash;DatabaseName <span class="str">"&lt;dbname&gt;"</span>
Remove-AzureSqlDatabaseServer -ServerName <span class="str">"&lt;AzureSqlDbServer&gt;"</span></pre>
<pre class="csharpcode">Import-Module sqlps
Remove-Item AzureSqlDbServer1</pre>
<h2>Closing Remarks</h2>
<p>The new PowerShell cmdlets for Azure are a fantastic way to easily provision either VM&rsquo;s or a database in the cloud.&nbsp; I will be parameterising my scripts (and including try.. catch blocks) to quickly create an Windows Azure Virtual Machine or Windows Azure SQL Database as needed (one-click deployment made easy!).&nbsp; PowerShell ISE is also an excellent development environment which can be leveraged for not only Azure VM or SQL database provisioning but also for many more solution scenarios.&nbsp;</p>
<h2>What is missing?</h2>
<ul>
<li>Provisioning Azure HDInsight clusters is not currently possible however this should be coming soon <a href="https://hadoopsdk.codeplex.com">https://hadoopsdk.codeplex.com</a> (refer to Programmatic Cluster Management).&nbsp;</li>
<li>PowerShell cmdlets for Azure SQL Reporting are not currently available.</li>
<li>The ability to provision an Azure VM image with the full business intelligence stack deployed i.e. SharePoint 2013, PowerView and Power Pivot integration.&nbsp;</li>
<li>PowerShell remoting to be automatically enabled in the Azure VM.</li>
<li>The ability to invoke SqlCmd and query Azure SQL databases through PowerShell (inc. support for Federations).&nbsp; </li>
</ul>
<h2>References</h2>
<p>Managing Windows Azure SQL Databases with PowerShell <a title="https://gallery.technet.microsoft.com/scriptcenter/Managing-Windows-Azure-SQL-632acc4b" href="https://gallery.technet.microsoft.com/scriptcenter/Managing-Windows-Azure-SQL-632acc4b">https://gallery.technet.microsoft.com/scriptcenter/Managing-Windows-Azure-SQL-632acc4b</a></p>
<p>Windows Azure SQL Database Management with PowerShell<a title="https://blogs.msdn.com/b/windowsazure/archive/2013/02/07/windows-azure-sql-database-management-with-powershell.aspx" href="https://blogs.msdn.com/b/windowsazure/archive/2013/02/07/windows-azure-sql-database-management-with-powershell.aspx">(https://blogs.msdn.com/b/windowsazure/archive/2013/02/07/windows-azure-sql-database-management-with-powershell.aspx</a></p>
<p>Getting Started with SQL Server on a Windows Azure Virtual Machine <a title="https://www.windowsazure.com/en-us/manage/windows/common-tasks/sql-server-on-a-vm/" href="https://www.windowsazure.com/en-us/manage/windows/common-tasks/sql-server-on-a-vm/">https://www.windowsazure.com/en-us/manage/windows/common-tasks/sql-server-on-a-vm/</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Are your slicers disappearing in PowerPivot 2012?  Always click on a PivotChart, PivotTable, Slicer, etc BEFORE refreshing the PowerPivot Model</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/are-your-slicers-disappearing-in-powerpivot-2012-always-click-on-a-pivotchart-pivottable-slicer-etc-before-refreshing-the-powerpivot-model</link>
      <pubDate>Sat, 28 Jul 2012 03:54:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2012/07/28/are-your-slicers-disappearing-in-powerpivot-2012-always-click-on-a-pivotchart-pivottable-slicer-etc-before-refreshing-the-powerpivot-model/</guid>
      <description><![CDATA[Overview
Over the past couple of months I have occasionally been losing my PowerPivot Slicers in...]]></description>
      <content:encoded><![CDATA[<h2>Overview</h2>
<p>Over the past couple of months I have occasionally been losing my PowerPivot Slicers in Excel when using the PowerPivot 2012 add-in.&nbsp; I have now managed to&nbsp;put together a repro for the issue and will outline this below.</p>
<p>The issue has been reported via Connect, so&nbsp;should receive attention soon.&nbsp; Until that point, this blog post provides my own (<em>unofficial)</em> description of the problem and how to avoid it, in case other people&nbsp;are hitting it.</p>
<h2>Symptoms</h2>
<p>The workbook will initially work as normal, i.e. slicers appearing and functioning&nbsp;as normal:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6607.01_OK.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6607.01_5F00_OK.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6607.01_OK.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6607.01_5F00_OK.png" /></a></p>
<p>At some point later (maybe hours, days or weeks), you will re-open the workbook and the slicers will appear very broken. Sometimes they disappear completely, at other times they change size.&nbsp; They often get dropped from the "Slicers Vertical" and "Slicers Horizontal" sections in the PowerPivot Field List, e.g.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3718.02_Broken.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3718.02_5F00_Broken.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3718.02_Broken.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3718.02_5F00_Broken.png" /></a></p>
<p>Unfortunately the issue is present in both the RTM and CU2 releases of the add-in.&nbsp; (I have only tested the RTM x86&nbsp;and CU2 x86 add-ins so cannot definitely say if the issue is present in other releases).</p>
<h2>Detailed Reproduction Steps</h2>
<ol>
<li>Double click a PowerPivot workbook in Windows Explorer to open it in Excel.</li>
<li>DO NOT click on any of the charts / pivot tables.</li>
<li>Click on the PowerPivot window button in the ribbon.</li>
<li>Refresh all (in the PowerPivot window).</li>
<li>Refresh the Pivot Chart (right mouse click on the chart, refresh).</li>
<li>Save the workbook and close Excel.</li>
<li>Reopen the workbook.</li>
<li>Click the pivot chart (to load the PowerPivot data).</li>
<li>Click off the chart.</li>
<li>Click back on it, the slicers have now mysteriously become disconnected.</li>
</ol>
<h2>Workaround</h2>
<p>The&nbsp;clue to avoiding the issue is in step 2 above...i.e.</p>
<p>Ensure the PowerPivot Model is loaded into Excel before opening the PowerPivot window to refresh.&nbsp; Or put even more simply...</p>
<p><span style="font-size: x-large; background-color: #ffff00;"><strong>ALWAYS CLICK ON A&nbsp;PIVOTTABLE, PIVOTCHART OR</strong></span></p>
<p><span style="font-size: x-large; background-color: #ffff00;"><strong>SLICER&nbsp;BEFORE OPENING THE POWERPIVOT WINDOW</strong></span></p>
<p>And, with that, you should be able to continue to use your Slicers.</p>
<h2>Updates</h2>
<p>More details (and probably future updates to this issue) will be found on Connect:</p>
<p><a href="https://connect.microsoft.com/SQLServer/feedback/details/755850/bug-powerpivot-2012-slicers-are-lost-from-powerpivot-field-list#details">https://connect.microsoft.com/SQLServer/feedback/details/755850/bug-powerpivot-2012-slicers-are-lost-from-powerpivot-field-list#details</a></p>
<p>The Connect item also includes example files plus a short video to repro the issue.</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Installing PerformancePoint Dashboard Designer without ClickOnce</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/installing-performancepoint-dashboard-designer-without-clickonce</link>
      <pubDate>Thu, 19 Apr 2012 12:48:34 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2012/04/19/installing-performancepoint-dashboard-designer-without-clickonce/</guid>
      <description><![CDATA[Overview
In some environments it is not possible to install Dashboard Designer using the normal...]]></description>
      <content:encoded><![CDATA[<h2>Overview</h2>
<p>In some environments it is not possible to install Dashboard Designer using the normal process (i.e. allow it to install automatically when first opened from SharePoint).&nbsp; Some Citrix environments for example have permissions that prevent ClickOnce apps from being able to install.&nbsp;</p>
<p>In these cases people sometimes look for alternative methods (e.g. using an installer / MSI).&nbsp; Unfortunately, there is no MSI available for download for Dashboard Designer from Microsoft.&nbsp; However, it is possible to put together an alternative method for installation.&nbsp; The approach outlined below is one approach I have used in a couple of customer environments.</p>
<p>The process is in two parts:</p>
<ol>
<li>Gather the files to install Dashboard Designer</li>
<li>Install Dashboard Designer</li>
</ol>
<p><em>Note &ndash; This is not an officially supported way of installing Dashboard Designer, but it has worked where I have used it in the past.&nbsp; If thinking of using this, you should thoroughly test it in your environment as your environment may throw up issues I haven't encountered.&nbsp; Also, when updates to Dashboard Designer are released (e.g. in SharePoint Service Packs) it will be necessary to repeat this alternative installation procedure to get the updated versions deployed.</em></p>
<h2>Pre-reqs</h2>
<p>This process does not install the pre-reqs for Dashboard Designer:</p>
<ul>
<li>.NET Framework 3.5 <b><i><span style="text-decoration: underline;">Service Pack 1</span></i></b></li>
<li>Microsoft&reg; SQL Server&reg; 2008 R2 Native Client &ndash; <a href="https://www.microsoft.com/download/en/details.aspx?id=26728">Download</a></li>
<li>Microsoft&reg; SQL Server&reg; 2008 R2 ADOMD.NET &ndash; <a href="https://www.microsoft.com/download/en/details.aspx?id=26728">Download</a></li>
</ul>
<p>You should ensure these are also deployed to the target environment prior to installing Dashboard Designer.</p>
<p>These pre-reqs apply irrespective of whether you are installing using the normal ClickOnce method or an alternative approach (the ClickOnce installation does not install these pre-reqs).</p>
<h2>Gather the files to install Dashboard Designer</h2>
<p>This approach requires a machine* that you can install Dashboard Designer on in the normal way (i.e. download the Click Once app from SharePoint).&nbsp; On this machine, we&rsquo;ll grab a copy of the Dashboard Designer files, ready to install on another machine (i.e. where the Click Once apps don&rsquo;t work).</p>
<p>(*This machine also needs Visual Studio or another .NET SDK on to be able to use mage.exe).</p>
<ol>
<li>On a machine with Visual Studio installed, run <br /> mage.exe &ndash;cc<br /> This clears the click once cache.&nbsp; This means that after step 2, the only files in the Click Once cache are the Dashboard Designer files.</li>
<li>Open Dashboard Designer from SharePoint (i.e. allow it to install using the normal Click Once install mechanism).<br /> This downloads Dashboard Designer and installs it.&nbsp; The dashboard designer files are copied into the Click Once cache, where we can pick them up.</li>
<li>Go to the Click Once cache - for my profile this is:<br /> C:\Users\xchrisbailiss\AppData\Local\Apps\2.0\...</li>
<li>Copy all of the dll, exe and config files out of this directory and subdirectories (ignore all the manifests, etc).&nbsp; <br /> The easiest way to locate the files (since they are scattered across various subdirectories) is to search and specify the wildcard character *<br /> A whole bunch of directories etc will be listed.&nbsp; Copy the dll / exe / config files.&nbsp; For those files in an En folder, copy these into an En subdirectory.<br /> Some files appear to be present in multiple directories on some installations.&nbsp; These files have the same name, size and last modified date so are very likely just multiple copies of the same file.</li>
<li>Check the file and folder structure against the file list below:<ol>
<li>Most of the files are in a single folder</li>
<li>Inside this folder is a single subfolder named "En" which some of the files sit in.</li>
</ol></li>
</ol>
<h2>File list</h2>
<ul>
<li>DashboardDesigner.exe</li>
<li>DashboardDesigner.exe.config</li>
<li>DashboardDesigner.resources.dll</li>
<li>Microsoft.PerformancePoint.Common.Calculation.dll</li>
<li>Microsoft.PerformancePoint.Common.Calculation.resources.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.Client.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.Client.resources.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.Common.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.Common.resources.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.Designer.Framework.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.Designer.Framework.resources.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.DesignerPlugins.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.DesignerPlugins.resources.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.DesignerWorkspace.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.DesignerWorkspace.resources.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.WizardFramework.dll</li>
<li>Microsoft.PerformancePoint.Scorecards.WizardFramework.resources.dll</li>
<li>Microsoft.SharePoint.Client.dll</li>
<li>Microsoft.SharePoint.Client.Runtime.dll</li>
<li>En\DashboardDesigner.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Common.Calculation.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Scorecards.Client.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Scorecards.Common.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Scorecards.Designer.Framework.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Scorecards.DesignerPlugins.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Scorecards.DesignerWorkspace.resources.dll</li>
<li>En\Microsoft.PerformancePoint.Scorecards.WizardFramework.resources.dll</li>
</ul>
<h2>Install Dashboard Designer</h2>
<p>We are now in a position to test the install.&nbsp; Note - the files simply need to be copied to the target machine.</p>
<ol>
<li>Copy the files in this structure to the target machine.&nbsp; They can be placed anywhere (example install folder structure given below).&nbsp; No further activities are required &ndash; the install is as simple as copying the files.</li>
<li>Run Dashboard Designer.</li>
<li>Enter the SharePoint URL when prompted, e.g. https://MySharePointServer/&nbsp;</li>
</ol>
<p>On one machine I tested this on, the Designer crashed after the SharePoint URL was first entered.&nbsp; Upon reopening however, the designer was fine (and the URL had been saved correctly).&nbsp; This crash appeared to only happen on the very first time Dashboard Designer was opened &ndash; subsequently it always opened without any problem.</p>
<h2>Install Example</h2>
<p>Dashboard Designer can be installed to any folder.&nbsp;</p>
<p>For the purposes of this example, assuming that we are installing to<br /> c:\Dashboard Designer</p>
<p>So, simply copy the above files to the following paths (no MSI is needed, no DLL registration is needed):</p>
<ul>
<li>C:\DashboardDesigner\DashboardDesigner.exe</li>
<li>C:\DashboardDesigner\DashboardDesigner.exe.config</li>
<li>C:\DashboardDesigner\DashboardDesigner.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Common.Calculation.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Common.Calculation.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.Client.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.Client.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.Common.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.Common.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.Designer.Framework.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.Designer.Framework.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.DesignerPlugins.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.DesignerPlugins.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.DesignerWorkspace.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.DesignerWorkspace.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.WizardFramework.dll</li>
<li>C:\DashboardDesigner\Microsoft.PerformancePoint.Scorecards.WizardFramework.resources.dll</li>
<li>C:\DashboardDesigner\Microsoft.SharePoint.Client.dll</li>
<li>C:\DashboardDesigner\Microsoft.SharePoint.Client.Runtime.dll</li>
<li>C:\DashboardDesigner\En\DashboardDesigner.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Common.Calculation.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Scorecards.Client.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Scorecards.Common.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Scorecards.Designer.Framework.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Scorecards.DesignerPlugins.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Scorecards.DesignerWorkspace.resources.dll</li>
<li>C:\DashboardDesigner\En\Microsoft.PerformancePoint.Scorecards.WizardFramework.resources.dll</li>
</ul>
<h2>A Note About the User.Config File</h2>
<p>This process does not create the user.config file.&nbsp; This will normally be created automatically the first time Dashboard Designer is run.&nbsp; Again, on some environments this may not be possible and creating it as part of the installation process may be desirable.&nbsp;</p>
<p>When Dashboard Designer is installed using this alternative approach, Dashboard Designer will create this file at the following location (where in my case [username] is xchrisbailiss):</p>
<p>C:\Users\[username]\AppData\Local\Microsoft_Corporation\DashboardDesigner.exe_StrongName_wl4f4koizhxra1ieka4fa0ofam43g0lh\14.0.0.0</p>
<p>If creating this file manually, you also probably want to set the following settings within this file:</p>
<ul>
<li>&ldquo;MruSiteCollection&rdquo; to the SharePoint URL, e.g. https://MySharePointServer/</li>
<li>&ldquo;Default Workspace Location&rdquo; to the users default documents folder.</li>
</ul>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>BI Service Applications in SharePoint 2010 – Authentication (Classic vs. Claims) and Identity Delegation (Kerberos) – Part 7</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-7</link>
      <pubDate>Sat, 26 Nov 2011 15:46:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-7/</guid>
      <description><![CDATA[Author: Chris BailissTechnical Reviewers (Kerberos/Claims): James Noyce, Paul...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><strong>Author:</strong> Chris Bailiss<br /><strong>Technical Reviewers (Kerberos/Claims):</strong> James Noyce, Paul Williams</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Introduction</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post is part of a series of posts describing the authentication methods supported by the SharePoint 2010 Business Intelligence service applications.&nbsp; Please see <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-1.aspx">Part 1</a> for an overview of this series of posts.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post summarises the previous six posts.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Summary</span></span></span></h2>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: small;" size="3">The following table summarises how each of the BI Service Applications can authenticate to a SQL Server data source (Relational Database or Analysis Services &ndash; see above for test cases):</span></span></p>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: small;" size="3">Key:</span></span></p>
<ul>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes&nbsp;-</span><span style="font-family: Calibri;" face="Calibri"> Service application supports the specified authentication mechanism.</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">No&nbsp;</span>-<span style="font-family: Calibri;" face="Calibri"> Service application doesn&rsquo;t support (i.e. doesn&rsquo;t work) when web application uses the specified authentication mechanism.</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Per User&nbsp;-</span><span style="font-family: Calibri;" face="Calibri"> Service application is able to delegate the user identity to the data source.</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Shared&nbsp;</span>-<span style="font-family: Calibri;" face="Calibri"> Service application is able to use a single, shared, trusted account to connect to the data source.</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">N/A&nbsp;</span>-<span style="font-family: Calibri;" face="Calibri"> Authentication back to data source not applicable to service application</span></span></li>
</ul>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#8db3e2" valign="top" rowspan="2" width="166">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Service Application</span></span></b></p>
</td>
<td bgcolor="#8db3e2" valign="top" width="462" colspan="3">
<p align="center"><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Web Application Authentication Mode</span></span></b></p>
</td>
</tr>
<tr>
<td bgcolor="#8db3e2" valign="top" width="154">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Classic &ndash;</span></span></b></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">&lsquo;Windows&rsquo;</span></span></b></p>
</td>
<td bgcolor="#8db3e2" valign="top" width="154">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Claims &ndash;</span></span></b></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Windows-Claims</span></span></b></p>
</td>
<td bgcolor="#8db3e2" valign="top" width="154">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Claims &ndash;</span></span></b></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">FBA-Claims</span></span></b></p>
</td>
</tr>
<tr>
<td bgcolor="#8db3e2" valign="top" width="166">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Excel Services</span></span></b></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#ffff00" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Shared Only</span></span></p>
</td>
</tr>
<tr>
<td bgcolor="#8db3e2" valign="top" width="166">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PerformancePoint Services</span></span></b></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#ffff00" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Shared Only</span></span></p>
</td>
</tr>
<tr>
<td bgcolor="#8db3e2" valign="top" width="166">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Reporting Services</span></span></b></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#ffff00" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Shared Only</span></span></p>
</td>
<td bgcolor="#ffff00" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Shared Only</span></span></p>
</td>
</tr>
<tr>
<td bgcolor="#8db3e2" valign="top" width="166">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PowerPivot for SharePoint</span></span></b></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: N/A</span></span></p>
</td>
<td bgcolor="#ff0000" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">No</span></span></p>
</td>
<td bgcolor="#ff0000" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">No</span></span></p>
</td>
</tr>
<tr>
<td bgcolor="#8db3e2" valign="top" width="166">
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Visio Services</span></span></b></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#92d050" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Per User + Shared</span></span></p>
</td>
<td bgcolor="#ffff00" valign="top" width="154">
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Yes: Shared Only</span></span></p>
</td>
</tr>
</tbody>
</table>
<p><br /><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Notes:</span></span></p>
<ul>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PerformancePoint Dashboard Designer does not work with Claims-mode web applications.&nbsp; The web application must be extended to provide an alternative URL in classic-mode.</span></span></li>
<li><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Reporting Services BIDS Report Designer and Report Builder are not able to retrieve / save content into Claims-mode web applications.&nbsp; The web application must be extended to provide an alternative URL in classic-mode.</span></span></li>
</ul>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Additional References</span></span></span></h2>
<ul>
<li><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Configure Kerberos Authentication for SharePoint 2010 &ndash; </span><a href="https://go.microsoft.com/fwlink/p/?LinkId=196600"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">Whitepaper</span></a></li>
<li><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Implementing Claims-Based Authentication with SharePoint Server 2010 - </span><a href="https://go.microsoft.com/fwlink/p/?LinkId=229109"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">Whitepaper</span></a></li>
</ul>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>BI Service Applications in SharePoint 2010 – Authentication (Classic vs. Claims) and Identity Delegation (Kerberos) – Part 6</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-6</link>
      <pubDate>Sat, 26 Nov 2011 15:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-6/</guid>
      <description><![CDATA[Author: Chris BailissTechnical Reviewers (Kerberos/Claims): James Noyce, Paul...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><strong>Author:</strong> Chris Bailiss<br /><strong>Technical Reviewers (Kerberos/Claims):</strong> James Noyce, Paul Williams</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Introduction</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post is part of a series of posts describing the authentication methods supported by the SharePoint 2010 Business Intelligence service applications.&nbsp; Please see <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-1.aspx">Part 1</a> for an overview of this series of posts.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post describes how to test that user identity is being delegated through the BI service applications in a web application utilising FBA-Claims.&nbsp; It also covers some differences in the functionality that is supported by FBA-Claims.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">BI Service Application Tests in the Claims Web App &ndash; FBA-Claims</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">For a third time I&rsquo;ll walk through each of the BI Service Applications tested previously &ndash; again accessing them in the claims web app, only this time authenticating as a forms based user (FBA-Claim).</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">To state the obvious, FBA-Claims have no associated Windows identity.&nbsp; This section will describe the consequences of this and how it can be worked around.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Excel Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Accessing the test workbook created earlier in the Claims site allows the same test to be repeated:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/1727.17%20-%20ExcelServicesForms.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/1727.17-_2D00_-ExcelServicesForms.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/1727.17%20-%20ExcelServicesForms.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/1727.17-_2D00_-ExcelServicesForms.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">C2WTS is now unable to obtain a windows security token and the connection to SQL Server fails.&nbsp; There is therefore now no way to delegate the user identity to the back-end.&nbsp; </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">It is still possible to connect to the back-end using a credential stored in the Secure Store Service.&nbsp; This is configured on the connection properties in the Excel application:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4213.18%20-%20ExcelConfig.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4213.18-_2D00_-ExcelConfig.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4213.18%20-%20ExcelConfig.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4213.18-_2D00_-ExcelConfig.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Enter either a specific Secure Store Service ID (SSS ID) or select None to pick up a default credential configured in the Secure Store Service and Excel Services.&nbsp; The workbook can then connect to the SQL Server database using the stored, shared credential:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2045.19%20-%20Excel%20Services%20SSS.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2045.19-_2D00_-Excel-Services-SSS.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2045.19%20-%20Excel%20Services%20SSS.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2045.19-_2D00_-Excel-Services-SSS.png" /></a></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PerformancePoint Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Accessing the test dashboard created earlier now results in:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7485.20%20-%20PPS%20Broken.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7485.20-_2D00_-PPS-Broken.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7485.20%20-%20PPS%20Broken.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7485.20-_2D00_-PPS-Broken.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">As the error message helpfully explains, it has not been possible (for the C2WTS service) to obtain a windows identity from the non-windows claim.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">To work around this again requires using a shared credential stored in the Secure Store Service.&nbsp; However, it is still possible to pass the identity into Analysis Services (albeit via a mechanism that is harder to work with in Analysis Services) using the PPS Data Connection Authentication option &ldquo;Unattended Service Account and add authenticated user name in connection string&rdquo;.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The dashboard then appears as:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3806.21%20-%20PPS%20Fixed.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3806.21-_2D00_-PPS-Fixed.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3806.21%20-%20PPS%20Fixed.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3806.21-_2D00_-PPS-Fixed.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The user name (in claims format) then appears in the Custom Data measure.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Reporting Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Reporting Services was already configured in the previous section to work with a shared account.&nbsp; This continues to work with FBA-Claims:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6204.22%20-%20SSRS%20FBA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6204.22-_2D00_-SSRS-FBA.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6204.22%20-%20SSRS%20FBA.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6204.22-_2D00_-SSRS-FBA.png" /></a></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PowerPivot for SharePoint</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">As described previously, PowerPivot for SharePoint works only with Classic-mode authentication.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Visio Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Accessing the test web drawing created earlier now results in an error:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6305.24%20-%20Visio%20FBA%20Claims%20Broken.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6305.24-_2D00_-Visio-FBA-Claims-Broken.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6305.24%20-%20Visio%20FBA%20Claims%20Broken.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6305.24-_2D00_-Visio-FBA-Claims-Broken.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Again, this is due to there being no windows identity to authenticate to SQL Server with.&nbsp; Specifying a trusted shared account in the Secure Store Service allows the drawing to work, albeit again without the original user identity being delegated to the back-end:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2210.25%20-%20Visio%20FBA%20Claims%20Working.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2210.25-_2D00_-Visio-FBA-Claims-Working.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2210.25%20-%20Visio%20FBA%20Claims%20Working.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2210.25-_2D00_-Visio-FBA-Claims-Working.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">It is worth noting that the Secure Store Service can only be used for web drawings that use an ODC file to specify the connection.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Is Claims Augmentation the Answer?</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">So, the FBA-Claims tests show that none of the key BI services are able to transition an FBA-Claim to a windows security token.&nbsp; </span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">This may seem surprising; since the C2WTS service can obtain a windows security token, provided it is presented with a UPN claim (see </span><a href="https://msdn.microsoft.com/en-us/library/ee517278.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">).&nbsp;&nbsp; This offers the theoretical possibility that adding a UPN claim into the set of claims might allow C2WTS to magically make the BI services work.</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Well, it is possible to add additional claims using a Claims Augmenter (see </span><a href="https://msdn.microsoft.com/en-us/library/ee535894.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">), including adding the UPN claim:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7077.26%20-%20Claims%20Augmentation.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7077.26-_2D00_-Claims-Augmentation.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7077.26%20-%20Claims%20Augmentation.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7077.26-_2D00_-Claims-Augmentation.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Unfortunately, the BI service applications will only invoke the C2WTS for Windows-Claims.&nbsp; Each claim is tagged with the provider that issued it.&nbsp; This tag is immutable, so you cannot create a UPN claim from a claims augmenter that will be usable by SharePoint.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">So, no, claims augmentation is not the answer :-(</span></span></p>
<p>[Aside: The custom membership provider, custom role provider and claims augmenter were contained in a single assembly for development purposes.&nbsp; This assembly was deployed into the farm using a wsp solution, which dropped it into the WFE.&nbsp; It was necessary to also deploy it manually into the GAC on the the application servers &ndash; without this the service apps were failing on these servers].</p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Continued...</span></span></span></h2>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: small;" size="3">Continue reading in <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-7.aspx">Part 7</a>.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>BI Service Applications in SharePoint 2010 – Authentication (Classic vs. Claims) and Identity Delegation (Kerberos) – Part 5</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-5</link>
      <pubDate>Sat, 26 Nov 2011 15:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-5/</guid>
      <description><![CDATA[Author: Chris BailissTechnical Reviewers (Kerberos/Claims): James Noyce, Paul...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><strong>Author:</strong> Chris Bailiss<br /><strong>Technical Reviewers (Kerberos/Claims):</strong> James Noyce, Paul Williams</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Introduction</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post is part of a series of posts describing the authentication methods supported by the SharePoint 2010 Business Intelligence service applications.&nbsp; Please see <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-1.aspx">Part 1</a> for an overview of this series of posts.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post describes how to test that user identity is being delegated through the BI service applications in a web application utilising Windows-Claims.&nbsp; It also covers some differences in the functionality that is supported by Windows-Claims (vs Classic-authentication).</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">BI Service Application Tests in the Claims Web App &ndash; Windows-Claims</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">I&rsquo;ll now walk through each of the BI Service Applications tested previously &ndash; this time accessing them in the claims web app as a Windows User (i.e. using a Windows-Claim).</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Excel Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Uploading the test workbook created earlier into the Claims site allows the same test to be repeated:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3060.10%20-%20Excel%20Services.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3060.10-_2D00_-Excel-Services.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3060.10%20-%20Excel%20Services.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3060.10-_2D00_-Excel-Services.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This shows that we are able to delegate the user identity back to the SQL Server instances.&nbsp; Behind the scenes, the C2WTS has successfully performed a protocol transition from a Windows-Claim to a Windows Kerberos Ticket (two in fact, one for the Relational Engine and another for Analysis Services).</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PerformancePoint Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The first challenge in working with PerformancePoint on a Claims-enabled site is opening Dashboard Designer.&nbsp; Dashboard Designer (a Click-Once application) is not Claims-aware.&nbsp; Attempting to open it on a Claims-enabled site (even using a Windows-Claims as here) results in:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4628.10%20-%20DashboardDesignerError.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4628.10-_2D00_-DashboardDesignerError.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4628.10%20-%20DashboardDesignerError.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4628.10-_2D00_-DashboardDesignerError.png" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">This can be worked around by extending the web application (see </span><a href="https://technet.microsoft.com/en-us/library/cc261698.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">Technet</span></a><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">), to enable access via Classic-mode authentication.&nbsp; In my lab environment, I extended the claims web app, to </span><a href="https://claimsext/"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">https://claimsext</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">, from where Dashboard Designer can be successfully opened:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3107.11%20-%20DashboardDesignerOK.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3107.11-_2D00_-DashboardDesignerOK.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3107.11%20-%20DashboardDesignerOK.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3107.11-_2D00_-DashboardDesignerOK.png" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">The same test dashboard as shown previously can then be built and published.&nbsp; This can be viewed via either the </span><a href="https://claimsext/"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">https://claimsext</span></a><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"> URL (not shown) or </span><a href="https://claims/"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">https://claims</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"> URL (shown below):</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4621.12%20-%20Dashboard.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4621.12-_2D00_-Dashboard.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4621.12%20-%20Dashboard.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4621.12-_2D00_-Dashboard.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Again, the highlighted cells show that the current connection from PPS has been authenticated using Kerberos and that the user identity has been delegated through to Analysis Services correctly.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Reporting Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"></span></span><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">When opening Report Builder from a Claims-mode site, it is not possible to retrieve / save reports, data sources, etc from / into the SharePoint site.&nbsp; Instead, the following prompt is thrown up:</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/0636.13%20-%20SSRS%20Connect%20Fail.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/0636.13-_2D00_-SSRS-Connect-Fail.png"></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2727.13a%20-%20SSRS%20Prompt.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2727.13a-_2D00_-SSRS-Prompt.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2727.13a%20-%20SSRS%20Prompt.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2727.13a-_2D00_-SSRS-Prompt.png" width="317" height="174" /></a></span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">It is impossible to enter a credential into this dialog &ndash; it simply won&rsquo;t go away.<br /><br />A similar prompt is thrown up when attempting to deploy into a Claims-mode site from Visual Studio.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">As with PPS Designer, extending the web application to provider a Classic mode URL will enable both tools to access content in the site.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Uploading a copy of the report created earlier allows us to test running a report in Reporting Services.&nbsp; However, attempting to pass the user identity to the back-end now results in an error, e.g. attempting to test the Data Source:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7242.13%20-%20SSRS%20Connect%20Fail.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7242.13-_2D00_-SSRS-Connect-Fail.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7242.13%20-%20SSRS%20Connect%20Fail.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7242.13-_2D00_-SSRS-Connect-Fail.png" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Windows authentication / per-user identity delegation is not supported in SQL Server Reporting Services 2008 R2 when the web application is in Claims Mode.&nbsp; Instead, a shared account must be used (see </span><a href="https://msdn.microsoft.com/en-us/library/ff487970.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">).&nbsp; That account will either be the default trusted execution account for the server (in which case the fall back will be transparent) or the account can be configured explicitly on the data source:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2045.14%20-%20SSRS%20ConnectOK.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2045.14-_2D00_-SSRS-ConnectOK.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2045.14%20-%20SSRS%20ConnectOK.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2045.14-_2D00_-SSRS-ConnectOK.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Of course, the disadvantage of using a shared trusted account is that the user identity is no longer passed through to the back-end:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/0243.15%20-%20SSRSTrustedAccount.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/0243.15-_2D00_-SSRSTrustedAccount.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/0243.15%20-%20SSRSTrustedAccount.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/0243.15-_2D00_-SSRSTrustedAccount.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This restriction is due to the fact SQL Server Reporting Services 2008 R2 is not claims-aware.&nbsp; It runs as a separate web-server outside of SharePoint.&nbsp; In SQL Server 2012 Reporting Services becomes a SharePoint service application and is better suited to supporting this type of scenario.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PowerPivot for SharePoint</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Attempting to open a PowerPivot workbook from the Claims-enabled site initially appears successful &ndash; just after opening the workbook it appears as:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/8156.16%20-%20PowerPivot%201.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/8156.16-_2D00_-PowerPivot-1.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/8156.16%20-%20PowerPivot%201.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/8156.16-_2D00_-PowerPivot-1.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">However, at this point, no PowerPivot functionality has been invoked, only Excel Services has been used, which is showing data that was cached in the worksheet.&nbsp; The PowerPivot service application only comes into play when Data &gt;&gt; Refresh&hellip; is selected from the toolbar, or the slicer selection is changed.&nbsp; Trying either of those actions results in:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/8836.16%20-%20PowerPivot%202.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/8836.16-_2D00_-PowerPivot-2.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/8836.16%20-%20PowerPivot%202.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/8836.16-_2D00_-PowerPivot-2.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">At the current time, PowerPivot does not support Claims-enabled sites of any kind.&nbsp; Only web applications running Classic-mode authentication are supported.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Visio Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Uploading the test web drawing created earlier into the Claims site allows the same test to be repeated:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6014.23%20-%20Visio%20Claims.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6014.23-_2D00_-Visio-Claims.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6014.23%20-%20Visio%20Claims.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6014.23-_2D00_-Visio-Claims.png" /></a></span></p>
<p>Again, this shows we have successfully delegated the user identity back to SQL Server.</p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Continued...</span></span></span></h2>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: small;" size="3">Continue reading in <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-6.aspx">Part 6</a>.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>BI Service Applications in SharePoint 2010 – Authentication (Classic vs. Claims) and Identity Delegation (Kerberos) – Part 4</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-4</link>
      <pubDate>Sat, 26 Nov 2011 15:07:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-4/</guid>
      <description><![CDATA[Author: Chris BailissTechnical Reviewers (Kerberos/Claims): James Noyce, Paul...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><strong>Author:</strong> Chris Bailiss<br /><strong>Technical Reviewers (Kerberos/Claims):</strong> James Noyce, Paul Williams</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Introduction</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post is part of a series of posts describing the authentication methods supported by the SharePoint 2010 Business Intelligence service applications.&nbsp; Please see <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-1.aspx">Part 1</a> for an overview of this series of posts.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post describes my claims-mode web application &ndash; &ldquo;claims&rdquo;.&nbsp; The functionality of the BI services accessed via this web application are described in the following posts.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Claims Web Application</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">After getting the portal web application running, I configured a second web application &ndash; &ldquo;claims&rdquo;.&nbsp; The claims web app uses the Claims-mode authentication provider.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The claims web app utilises the same set of service applications as the portal web app.&nbsp; This means it will pick up the existing working set of service applications and their Kerberos-related configuration.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Note - even though this web application uses claims, Kerberos is still relevant.&nbsp; This is because the back-end SQL Server instances are not claims-aware &ndash; they are geared to work with windows authentication. For outbound authentication to the back-end, SharePoint uses the Claims to Windows Token Service (C2WTS), part of the Windows Identity Foundation, to obtain a windows identity (Kerberos ticket) from the set of claims.&nbsp; To do this, the C2WTS performs a Kerberos Constrained Delegation Protocol Transition &ndash; hence Kerberos is still relevant.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The claims web app supports both Windows-Claims and Forms Based Authentication (FBA-Claims).</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">You may expect that a user authenticated with a Windows-Claim will be able to access the same functionality from the SharePoint BI service applications as a user authenticated into the Portal web app using Classic-mode windows authentication.&nbsp; This is in fact not always true and varies by service-application as I&rsquo;ll describe in the next couple of posts.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">FBA-Claims do not have a windows identity associated with them, so will obviously not be able to delegate a windows identity.&nbsp; Could C2WTS help here?&nbsp; Not really, as I&rsquo;ll also describe in a later post.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Upon navigating to the claims URL, the default screen is presented where the user is asked to select the authentication method:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/1067.06%20-%20Claims%20Login.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/1067.06-_2D00_-Claims-Login.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/1067.06%20-%20Claims%20Login.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/1067.06-_2D00_-Claims-Login.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">If Windows Authentication is selected, the user is automatically logged in based on a Windows-Claim based on their active directory account.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">If Forms Authentication is selected, the user is redirected to a second login screen:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6303.07%20-%20FBA%20Login.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6303.07-_2D00_-FBA-Login.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/6303.07%20-%20FBA%20Login.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/6303.07-_2D00_-FBA-Login.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">These FBA tests used a simple custom membership provider and a simple custom role provider.&nbsp; References:</span></span></p>
<ul>
<li><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">System.Web.Security.MembershipProvider Class - </span><a href="https://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a></li>
<li><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">System.Web.Security.RoleProvider Class - </span><a href="https://msdn.microsoft.com/en-us/library/system.web.security.roleprovider.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a></li>
<li><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">Claims Walkthrough: Creating Forms-Based Authentication for Claims-Based SharePoint 2010 Web Applications Using Custom Membership and Role Providers &ndash; </span><a href="https://msdn.microsoft.com/en-us/library/gg317440.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a></li>
</ul>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">A simple Claim Viewer web part was also created, which lists the users claims.&nbsp; A sample of a similar viewer can be found at </span><a href="https://msdn.microsoft.com/en-us/library/gg317440.aspx"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">MSDN</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">.&nbsp; </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">When logged in with a Windows Claim, the following set of claims is displayed:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3678.08a%20-%20Windows%20Claims.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3678.08a-_2D00_-Windows-Claims.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3678.08a%20-%20Windows%20Claims.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3678.08a-_2D00_-Windows-Claims.png" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri">The UPN claim (</span><a href="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"><span style="color: #0000ff; font-family: Calibri; font-size: small;" size="3" face="Calibri" color="#0000ff">https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn</span></a><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">) is worth noting.&nbsp; The UPN claim is used by the Claims to Windows Token Service (C2WTS) to obtain a windows security token that can be delegated to systems that aren&rsquo;t claims aware such as the SQL Server Relational Database Engine and Analysis Services.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">When logged in with an FBA Claim, the following set of claims is displayed:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4010.09a%20-%20Form%20Claims.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4010.09a-_2D00_-Form-Claims.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/4010.09a%20-%20Form%20Claims.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/4010.09a-_2D00_-Form-Claims.png" /></a></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Continued...</span></span></span></h2>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: small;" size="3">Continue reading in <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-5.aspx">Part 5</a>.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>BI Service Applications in SharePoint 2010 – Authentication (Classic vs. Claims) and Identity Delegation (Kerberos) – Part 3</title>
      <link>https://docs.microsoft.com/archive/blogs/mcsukbi/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-3</link>
      <pubDate>Sat, 26 Nov 2011 14:44:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris - SQLBI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/mcsukbi/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-3/</guid>
      <description><![CDATA[Author: Chris BailissTechnical Reviewers (Kerberos/Claims): James Noyce, Paul...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"><strong>Author:</strong> Chris Bailiss<br /><strong>Technical Reviewers (Kerberos/Claims):</strong> James Noyce, Paul Williams</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Introduction</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post is part of a series of posts describing the authentication methods supported by the SharePoint 2010 Business Intelligence service applications.&nbsp; Please see <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-1.aspx">Part 1</a> for an overview of this series of posts.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This post describes how to test that user identity is being delegated through the BI service applications in a web application utilising classic-mode authentication.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">BI Service Application Tests in the Portal Web App &ndash; Classic-Authentication</span></span></span></h2>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Let&rsquo;s quickly walk through some authentication tests for each service application.&nbsp; </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Note, for brevity, the tests illustrated here don&rsquo;t cover all possible delegation paths (extend the tests in your own time, for example, to test delegation via PerformancePoint Services to SQL Relational Engine, via Reporting Services to SQL Analysis Services, etc).</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Excel Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">To test identity delegation via Excel Services to the Relational Engine, first create a SQL Server view based on the SQL statement in the previous post.&nbsp; Then create a new Excel Workbook, connect to SQL server and create a new PivotTable based on this view.&nbsp; Expected results are shown in the screenshot below.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Testing identity delegation via Excel Services to Analysis Services is a little more involved.&nbsp; First, create a simple cube in Analysis Services (or modify an existing one, even AdventureWorks - the makeup of the cube doesn&rsquo;t matter at all).&nbsp; Create some calculated measures based on the MDX query in the previous post.&nbsp; The equivalent MDX for defining measures in a cube is (paste this after the CALCULATE statement):</span></span></p>
<p><span style="font-family: courier new,courier;">CREATE MEMBER CurrentCube.Measures.User as UserName();</span><br /><span style="font-family: courier new,courier;">CREATE MEMBER CurrentCube.Measures.[CustomData] as CustomData()</span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Deploy the cube.&nbsp; Now, re-open the Excel Workbook, connect to Analysis Services and base a second Pivot Table in the Excel Workbook on the cube (only use the two measures created above &ndash; ignore whatever else is in the cube). </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Upload the workbook into a document library in SharePoint.&nbsp; View it via Excel Services (after opening, you may need to select Data &gt;&gt; Refresh&hellip; to update the contents):</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/5556.03%20-%20Excel%20Services.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/5556.03-_2D00_-Excel-Services.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/5556.03%20-%20Excel%20Services.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/5556.03-_2D00_-Excel-Services.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The highlighted cells (on the left show) that the current connection from Excel Services has been authenticated using Kerberos.&nbsp; They also show that the user identity has been delegated through to the SQL Server Relational Engine correctly.&nbsp; </span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The highlighted cell on the right shows that the user identity has been delegated to Analysis Services correctly.&nbsp; Given there are multiple hops and multiple protocol transitions involved, it&rsquo;s a reasonable conclusion that Kerberos is working.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Performance Point Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">To test identity delegation via Performance Point Services to Analysis Services requires creating a simple test dashboard in Dashboard Designer.&nbsp; Use a connection configured with the &lsquo;Per User Identity&rsquo; authentication setting.&nbsp; Then create an analytical view either based on the cube created/modified above or simply use the MDX query defined in the previous post.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Deploy this to SharePoint and view:</span></span></p>
<p><span style="font-family: Calibri; font-size: small;" size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3531.04%20-%20PPS.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3531.04-_2D00_-PPS.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3531.04%20-%20PPS.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3531.04-_2D00_-PPS.png" /></a></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">The highlighted cells show that the user identity has been delegated through to Analysis Services correctly.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Reporting Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">By creating a report based on the SQL View described above, delegation via SSRS can be proven:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7217.05%20-%20SSRS.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7217.05-_2D00_-SSRS.png"></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2642.05%20-%20SSRS.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2642.05-_2D00_-SSRS.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/2642.05%20-%20SSRS.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/2642.05-_2D00_-SSRS.png" /></a></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PowerPivot for SharePoint</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">PowerPivot for SharePoint doesn&rsquo;t directly connect to the back end data source when a user is viewing a workbook containing PowerPivot data.&nbsp; Therefore, no identity delegation tests are applicable.</span></span></p>
<p><b><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Visio Services</span></span></b></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">To test delegation via Vision Services to the Relational Engine requires creating a web drawing and linking some shapes to external data (in this case, SQL Server).&nbsp; First, create a simpler version of the above SQL view that returns information just about your connection:</span></span></p>
<p><span style="font-family: courier new,courier;">select s.Session_Id, s.Login_Name, s.Host_name, c.Auth_Scheme,</span><br /><span style="font-family: courier new,courier;">case when c.Auth_Scheme = 'KERBEROS' then 1 else 0 end IsKerberos</span><br /><span style="font-family: courier new,courier;">from sys.dm_exec_connections c</span><br /><span style="font-family: courier new,courier;">inner join sys.dm_exec_sessions s</span><br /><span style="font-family: courier new,courier;">on s.session_id = c.session_id</span><br /><span style="font-family: courier new,courier;">where c.session_id = @@SPID</span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">When run from Management Studio, this returns a single record:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/1184.30%20-%20Visio%20Record.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/1184.30-_2D00_-Visio-Record.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/1184.30%20-%20Visio%20Record.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/1184.30-_2D00_-Visio-Record.png" /></a></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Next, create a new Visio Diagram.&nbsp; Link the shapes to this external data view:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3603.31%20-%20Visio%20App.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3603.31-_2D00_-Visio-App.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/3603.31%20-%20Visio%20App.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/3603.31-_2D00_-Visio-App.png" /></a></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">Save this as a Web Drawing (*.vdw) into SharePoint, open it in Visio Services and click Refresh:</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7534.32%20-%20Visio%20Browser.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7534.32-_2D00_-Visio-Browser.png"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/38/37/7534.32%20-%20Visio%20Browser.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-38-37/7534.32-_2D00_-Visio-Browser.png" /></a></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri">This shows that the user identity is successfully being delegated back to SQL Server.</span></span></p>
<h2><span style="font-size: medium;" size="4"><span style="color: #4f81bd;" color="#4f81bd"><span style="font-family: Cambria;" face="Cambria">Continued...</span></span></span></h2>
<p><span style="font-family: Calibri;" face="Calibri"><span style="font-size: small;" size="3">Continue reading in <a href="https://blogs.msdn.com/b/mcsukbi/archive/2011/11/26/bi-service-applications-in-sharepoint-2010-authentication-classic-vs-claims-and-identity-delegation-kerberos-part-4.aspx">Part 4</a>.</span></span></p>
<p><span style="font-size: small;" size="3"><span style="font-family: Calibri;" face="Calibri"></span></span></p>]]></content:encoded>
    </item>
  </channel>
</rss>