<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The White Pages</title>
	<atom:link href="http://whitepages.unlimitedviz.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://whitepages.unlimitedviz.com</link>
	<description>Random musings and thoughts on SharePoint, Business Intelligence, Microsoft technology, and occasionally even diving from John White</description>
	<lastBuildDate>Tue, 26 Mar 2013 16:03:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>How to display Specific Content to Anonymous or Authenticated Users in SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2013/03/how-to-display-specific-content-to-anonymous-or-authenticated-users-in-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2013/03/how-to-display-specific-content-to-anonymous-or-authenticated-users-in-sharepoint/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 16:03:39 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1602</guid>
		<description><![CDATA[A long time ago I wrote about the usefulness of the SPSecurityTrimmedControl in selectively displaying content based on a user’s permission level. It supports a myriad of different permission options, and my friend Marc Anderson has an excellent post in which he outlines all of the possible permission levels that can be used with this <a href='http://whitepages.unlimitedviz.com/2013/03/how-to-display-specific-content-to-anonymous-or-authenticated-users-in-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>A long time ago I <a href="http://whitepages.unlimitedviz.com/2010/05/securitytrimmedcontrol-an-indispensible-tool-for-your-public-facing-sharepoint-web-site-and-others/" target="_blank">wrote about the usefulness of the SPSecurityTrimmedControl</a> in selectively displaying content based on a user’s permission level. It supports a myriad of different permission options, and my friend Marc Anderson has an <a href="http://sympmarc.com/2008/12/31/spsecuritytrimmedcontrol-possible-values-for-permissionsstring/" target="_blank">excellent post</a> in which he outlines all of the possible permission levels that can be used with this control by manipulating the PermissionsString attribute. </p>
<p>What is less well known about this control is that it can also be used in an application that supports anonymous access to selectively display content based on the user’s logged in state. This might be to display a custom log in button or link that should only be displayed when a user has not logged in. The way that this is accomplished is through the&nbsp; AuthenticationRestrictons attribute. There are three possible values:</p>
<ul>
<li>AllUsers</li>
<li>AnonymousUsersOnly</li>
<li>AuthenticatedUsersOnly</li>
</ul>
<p>I have no idea why the AllUsers value exists. It’s not much of a restriction. The other two values are pretty well named, so I won’t bother explaining them. </p>
<p>A pretty typical usage scenario might be to build a page layout that will display a content field for all users, another field exclusively for anonymous users, and another for logged in users. The exclusive fields would need to be created and added to a content type prior to the creation of the layout. A simple example of this might appear as follows:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">PublishingWebControls:RichHtmlField</span> <span class="attr">id</span><span class="kwrd">="PageContent"</span> <span class="attr">FieldName</span><span class="kwrd">="PublishingPageContent"</span> <span class="attr">DisableInputFieldLabel</span><span class="kwrd">="true"</span> <span class="attr">runat</span><span class="kwrd">="server"</span><span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;</span><span class="html">SharePoint:SPSecurityTrimmedControl</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">ID</span><span class="kwrd">="spAuthenticated"</span> <span class="attr">AuthenticationRestrictions</span><span class="kwrd">=""</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">PublishingWebControls:RichHtmlField</span> <span class="attr">FieldName</span><span class="kwrd">="PageContentAuthenticated"</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">SharePoint:SPSecurityTrimmedControl</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">SharePoint:SPSecurityTrimmedControl</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">ID</span><span class="kwrd">="spUnAuthenticated"</span> <span class="attr">AuthenticationRestrictions</span><span class="kwrd">="AnonymousUsersOnly"</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">PublishingWebControls:RichHtmlField</span> <span class="attr">FieldName</span><span class="kwrd">="PageContentAnonymous"</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">SharePoint:SPSecurityTrimmedControl</span><span class="kwrd">&gt;</span></pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>In this example, the PublishingPageContent field is displayed on the page first, and depending on the logged in state, one of the remaining fields will be displayed. Of course, in order to use the control, the WebControls directive must first be added to the page:</p>
<pre class="csharpcode"><span class="asp">&lt;%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;</span>
</pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>The above example is for SharePoint 2010, but the namespace also exists in 2013.</p>
<p>This is simple enough, but there is a practical problem with this approach. How do we edit the content for anonymous users on the page? Although the control is there, editors are going to be authenticated users, and therefore the content will be completely hidden from them. </p>
<p>To do this, we can treat the Anonymous filed like other page metadata, and include it (also) in an edit mode panel, without the spSecurityTrimmedControl. </p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">PublishingWebControls:EditModePanel</span> <span class="attr">class</span><span class="kwrd">="ewiki-margin"</span> <span class="attr">runat</span><span class="kwrd">="server"</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">PublishingWebControls:RichHtmlField</span> <span class="attr">FieldName</span><span class="kwrd">="PageContentAnonymous"</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">PublishingWebControls:EditModePanel</span><span class="kwrd">&gt;</span></pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>The contents of the edit mode panel are only displayed when the page is in edit mode, so authors will be able to edit anonymous content and authenticated content in one step. </p>
<p>This control isn’t limited to publishing scenarios, but does require the Publishing namespace, and therefore requires at least SharePoint Standard license. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2013/03/how-to-display-specific-content-to-anonymous-or-authenticated-users-in-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure Your SharePoint Farm for Business Intelligence</title>
		<link>http://whitepages.unlimitedviz.com/2012/12/configure-your-sharepoint-farm-for-business-intelligence/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/12/configure-your-sharepoint-farm-for-business-intelligence/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 19:43:37 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1592</guid>
		<description><![CDATA[It’s been far too long since I’ve posted any new content, but that is about to change. In the meantime, I wanted to share out the slide deck that I used for my presentation at the SharePoint Conference 2012, and more recently at SharePoint Saturday Ottawa 2013. In addition, if you’re interested in watching a <a href='http://whitepages.unlimitedviz.com/2012/12/configure-your-sharepoint-farm-for-business-intelligence/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>It’s been far too long since I’ve posted any new content, but that is about to change. In the meantime, I wanted to share out the slide deck that I used for my presentation at the SharePoint Conference 2012, and more recently at SharePoint Saturday Ottawa 2013.<br />
<iframe style="border-width: 1px 1px 0px; border-style: solid; border-color: #cccccc; margin-bottom: 5px;" src="http://www.slideshare.net/slideshow/embed_code/15593409" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="561" height="351"></iframe></p>
<p>In addition, if you’re interested in watching a full video of the SPC12 presentation, you can do so below.</p>
<p><iframe src="http://www.youtube.com/embed/9csxd-_5kc4" frameborder="0" width="560" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/12/configure-your-sharepoint-farm-for-business-intelligence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting Up Reporting Services and PowerPivot With SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/10/setting-up-reporting-services-and-powerpivot-with-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/10/setting-up-reporting-services-and-powerpivot-with-sharepoint/#comments</comments>
		<pubDate>Fri, 05 Oct 2012 18:52:21 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1585</guid>
		<description><![CDATA[Yesterday, I had the privilege of being the guest presenter of a hands on webinar organized by Cloudshare. The topic was how to install and configure both SQL Server Reporting Services SharePoint Mode and Power Pivot for SharePoint. The session was recorded, and is available below. The complete PowerPoint deck can also be downloaded here.]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I had the privilege of being the guest presenter of a hands on webinar organized by <a href="http://www.cloudshare.com/?_kk=cloudshare&amp;_kt=809cb40f-82fb-4981-b0d7-75171c717f2f&amp;gclid=CMeU7LLD6rICFUKd4AodhTYAsA" target="_blank">Cloudshare</a>. The topic was how to install and configure both SQL Server Reporting Services SharePoint Mode and Power Pivot for SharePoint. The session was recorded, and is available below. The <a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/10/2012-10-04-Configuring-PP-and-RS.pptx" target="_blank">complete PowerPoint deck can also be downloaded here</a>. </p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:a9ed02a4-76c9-49ee-a588-e48da12ba3e5" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; width: 547px; margin-right: auto">
<div><object width="547" height="306"><param name="movie" value="http://www.youtube.com/v/ePE9-sY9PbQ?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/ePE9-sY9PbQ?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="547" height="306"></embed></object></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/10/setting-up-reporting-services-and-powerpivot-with-sharepoint/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Troubleshooting and Removing a Failed Installation or Upgrade of PowerPivot for SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/09/troubleshooting-and-removing-a-failed-installation-or-upgrade-of-powerpivot-for-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/09/troubleshooting-and-removing-a-failed-installation-or-upgrade-of-powerpivot-for-sharepoint/#comments</comments>
		<pubDate>Mon, 10 Sep 2012 17:46:23 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1578</guid>
		<description><![CDATA[I recently had the opportunity to perform an upgrade of PowerPivot from SQL Server 2008 R2 to SQL Server 2012 for a customer with a relatively large SharePoint farm. Their farm consisted of 4 SharePoint front end servers, 2 SharePoint application servers, and a SQL Server 2008 R2 cluster. The PowerPivot for SharePoint 2008 R2 <a href='http://whitepages.unlimitedviz.com/2012/09/troubleshooting-and-removing-a-failed-installation-or-upgrade-of-powerpivot-for-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I recently had the opportunity to perform an upgrade of PowerPivot from SQL Server 2008 R2 to SQL Server 2012 for a customer with a relatively large SharePoint farm. Their farm consisted of 4 SharePoint front end servers, 2 SharePoint application servers, and a SQL Server 2008 R2 cluster. The PowerPivot for SharePoint 2008 R2 service was installed on the 2 application servers. The upgrade didn’t go quite as smoothly as planned and in the process it was necessary to manually remove all traces of the PowerPivot 2008 R2 service. This was a little tricky (to say the least), so I thought that I’d share the experience here in hopes that it helps someone. </p>
<p>The original plan was to remove the PowerPivot service from the second server, then perform a SQL server upgrade on the remaining server, upgrading the PowerPivot for SharePoint instance. The PowerPivot configuration tool would then be run on the single server, upgrading the SharePoint elements. Finally, PowerPivot for SharePoint 2012 would be reinstalled on the second application server. </p>
<p>This is an approach that has worked quite well in the past, but in this particular environment, the configuration tool could not run the upgrade process. Due to the fact that there had been no work done on scheduling data refreshes thus far, it was decided that a complete removal, and install from scratch was in order. This is where things got particularly tricky. The configuration tool was unable to run its uninstall process, so I elected to remove everything manually, which consisted of deactivating the PowerPivot features in the destination site collections and from Central Admin, then retracting the PowerPivot solutions from Farm Solutions. Finally, SQL Server installation was run, and the PowerPivot instance removed from the server completely. </p>
<h6>Removing PowerPivot Breaks Central Administration</h6>
<p>At this point, Central Administration became unavailable. A quick search through the ULS logs for the correlation ID reported that there were errors loading the Microsoft.AnalysisServices.SharePoint.Integration assembly. As a next step, I ran through the SharePoint Configuration Wizard (psconfigui) to make sure that everything was OK. As it turns out, it wasn’t OK, and the wizard repeatedly failed.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image20.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb20.png" width="555" height="285"></a></p>
<p>After some searching, I located a <a href="http://social.technet.microsoft.com/wiki/contents/articles/6899.sharepoint-configuration-failure.aspx">TechNet article</a> that pointed out the problem. Apparently with 2008 R2, PowerPivot has a little trouble uninstalling itself, and leaves a few artefacts. Two of the artefacts are the registry keys listed in the article, and when the configuration wizard sees them, it tries to load the assembly, which of course no longer exists, and then it fails out. Removing the two keys fixes this particular problem, and I’m reproducing the steps for doing so below for convenience. </p>
<p><font size="1">Open the registry editor. To do this, type regedit in the Run command.<br />Expand HKEY_LOCAL_MACHINE<br />Expand SOFTWARE<br />Expand Microsoft<br />Expand Shared Tools<br />Expand Web Server Extensions<br />Expand 14.0<br />Expand WSS<br />Expand ServiceProxies<br />Right-click <strong>Microsoft.AnalysisServices.Sharepoint.Integration.MidTierServiceProxy</strong> and select <strong>Delete</strong>.<br />Go back a step in the hierarchy. Under WSS, expand Services<br />Right-click <strong>Microsoft.AnalysisServices.Sharepoint.Integration.MidTierServicea</strong> and select <strong>Delete</strong>.</font>
<p>After getting rid of the registry entries, the configuration wizard completed successfully, and more importantly, Central Administration loaded up properly. In addition, to this, I also removed the same registry keys from the second application server in anticipation of a reinstall.
<p>It was therefore time to reinstall PowerPivot. Installation from the SQL server media went fine (don’t forget to add all necessary accounts as administrators, particularly the account that is running the Analysis Services Windows service).<br />
<h6>Parent Service Does Not Exist</h6>
<p>However, re-running the PowerPivot configuration Tool resulted in the error “Cannot create the service instance because the parent Service does not exist”.&nbsp;&nbsp;
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image21.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb21.png" width="671" height="227"></a>
<p>This turned out to be a particularly vexing problem. The only guidance that I could find in the forums was incorrect (things like, “the Database engine must be installed with the PowerPivot instance”, which is patently false). I went to the source PowerShell scripts that register the service, and was able to run them, and register the service. The PowerPivot service then appeared under Services on Server, and I was even able to create a new PowerPivot service application thorough the Central Administration UI. However, attempting to access it resulted in an error (which I no longer have access to). Examining the ULS logs showed “access denied” attempting to connect to the Analysis Services instance. </p>
<p>In addition, subsequent attempts to run the PowerPivot configuration tool resulted in a perplexing error that stated that all servers in the farm must be running the same service account, and that they should all be changed to run as LOCAL SERVICE. This is particularly odd given that PowerPivot MUST be installed with a domain account, so this isn’t even possible.&nbsp; As it turned out, this was a red herring, and occurred because I had incorrectly specified the credentials of the service account in my PowerShell scripts from above, and it had provisioned using the LOCAL SERVICE account. I was able to change the identity of the service through Central Administration in the Security section, by configuring the service accounts, and then the PowerPivot configuration tool was able to run to completion. However, the service application, and its proxy appeared as stopped in the Service Applications list. </p>
<h6>Manual Uninstallation</h6>
<p>Something was still amiss, and for the life of me I couldn’t figure out what it was. At this point, I engaged the PowerPivot support team. After eliminating a few other potential issues, we decided to manually uninstall PowerPivot and use a few clean-up tools afterward. I again deleted service applications, deactivated features, retracted and removed solutions, and uninstalled PowerPivot for SharePoint with the SQL Setup application. Once everything had been theoretically removed, I ran <a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/PPCleanUp.zip">this PowerShell script</a> (repeated below) provided by the Support team to force the removal of all remaining PowerPivot items from the farm.</p>
<pre class="csharpcode">Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction:SilentlyContinue

Function DeleteServiceAndInstances
{
    param($service)
    <span class="kwrd">if</span>($service)
    {
        <span class="kwrd">foreach</span>($instance <span class="kwrd">in</span> $service.Instances)
        {
            $instance.Delete()
        }
 
        $service.Delete()
    }
}

Function DeleteServiceApplications
{
    param($service)
    <span class="kwrd">if</span>($service)
    {
        <span class="kwrd">foreach</span>($instance <span class="kwrd">in</span> $service.Applications)
        {
            $instance.Delete()
        }
    }
}

Function DeleteServiceApplicationProxies
{
    param($proxy)
    <span class="kwrd">if</span>($proxy)
    {
        <span class="kwrd">foreach</span>($instance <span class="kwrd">in</span> $proxy.ApplicationProxies)
        {
            $instance.Delete()
        }
    }
}

Function DeletePowerPivotEngineServiceAndInstances
{
    $farm = Get-SPFarm
    $service = $farm.Services | <span class="kwrd">where</span> {$_.GetType().GUID -eq <span class="str">"324A283C-6525-43c8-806C-31D8C92D15B7"</span>}
    DeleteServiceAndInstances $service
}

Function DeletePowerPivotMidTierServiceAndInstances
{
    $farm = Get-SPFarm
    $service = $farm.Services | <span class="kwrd">where</span> {$_.GetType().GUID -eq <span class="str">"35F084BE-5ED5-4735-ADAA-6DB08C03EF26"</span>}
    <span class="kwrd">foreach</span>($job <span class="kwrd">in</span> $service.JobDefinitions)
    {
        $job.Delete()
    }

    DeleteServiceApplications $service    
    DeleteServiceAndInstances $service
}

Function DeletePowerPivotEngineServiceProxy
{
    $farm = Get-SPFarm
    $proxy = $farm.ServiceProxies | <span class="kwrd">where</span> {$_.TypeName -eq <span class="str">"Microsoft.AnalysisServices.SharePoint.Integration.EngineServiceProxy"</span>}
    <span class="kwrd">if</span> ($proxy)
    {
        $proxy.Delete()
    }
}

Function DeletePowerPivotMidTierServiceProxy
{
    $farm = Get-SPFarm
    $proxy = $farm.ServiceProxies | <span class="kwrd">where</span> {$_.TypeName -eq <span class="str">"Microsoft.AnalysisServices.SharePoint.Integration.MidTierServiceProxy"</span>}
    <span class="kwrd">if</span> ($proxy)
    {
        DeleteServiceApplicationProxies $proxy
        $proxy.Delete()
    }
}


DeletePowerPivotEngineServiceProxy
DeletePowerPivotMidTierServiceProxy
DeletePowerPivotEngineServiceAndInstances
DeletePowerPivotMidTierServiceAndInstances

</pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>This script ran successfully, and in theory should have removed all of the PowerPivot elements from the SharePoint farm. However, just to be sure, we ran the following SQL script (also provided by MS support) to look for any orphaned PowerPivot elements in the farm configuration database:</p>
<pre class="csharpcode">   <span class="kwrd">SELECT</span> Id, classid, parentid, name, status, version, properties
   <span class="kwrd">FROM</span> objects
   <span class="kwrd">WHERE</span> name <span class="kwrd">like</span> <span class="str">'%PowerPivot%'</span>
   <span class="kwrd">ORDER</span> <span class="kwrd">BY</span> name</pre>
<p><style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>Lo and behold, there was still a record in the configuration database pointing to an instance that obviously no longer existed. Now, direct editing of the configuration databases is not something that anyone should do lightly, and it’s not generally supported. However, in a few cases, it’s the only option, and according to support, this was one of those cases. I therefore took a backup (ALWAYS take a backup first!) of the config database, and then ran the following SQL query to determine if the instance had any configuration dependencies. </p>
<pre class="csharpcode"><span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> Objects (NOLOCK) <span class="kwrd">WHERE</span> Properties <span class="kwrd">LIKE</span> ‘%GUID-<span class="kwrd">found</span>-<span class="kwrd">in</span>-earlier-query%'</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>The GUID is the value of the ID field found in the previous query for the orphaned item. In my case, there were no items returned, but if there were, the dependencies would need to be removed. If you find dependencies, you will need to contact support yourself, as there are additional complicating factors involved that will need to be evaluated by the product group.</p>
<p>Since I had no dependencies, I was safely able to delete the offending record.</p>
<pre class="csharpcode">   <span class="kwrd">DELETE</span> <span class="kwrd">FROM</span> objects <span class="kwrd">WHERE</span> name <span class="kwrd">like</span> <span class="str">'%PowerPivot%'</span></pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p>My Configuration Database was now clean. </p>
<h6>The Return of the Parent Service Error</h6>
<p>At this point, I reinstalled PowerPivot for SharePoint, and once again, ran the PowerPivot configuration tool. Unfortunately, I ran right into the “Parent Service Does Not Exist” error discussed above. This was frustrating, to say the least. After several choice words, and some sleep, I decided to do yet another uninstall/reinstall. This difference this time is that instead of retracting solutions manually, I would allow the configuration tool to do the uninstall for me. When I did, it generated an error when it attempted to uninstall a feature:</p>
<p class="MsoNormal"><span style="font-size: 9pt; font-family: 'Segoe UI','sans-serif'; line-height: 107%">The feature with ID &#8217;1a33a234-b4a4-4fc6-96c2-8bdb56388bd5&#8242; is still activated within this farm or stand alone installation. Deactivate this feature in the various locations where it is activated or use -force to force uninstallation of this feature.<?xml:namespace prefix = "o" /><o:p></o:p></span></p>
<p>This GUID is the PowerPivotSite feature, which was still activated at one of the site collections. I then used stsadm to force the uninstallation of the feature (I used stsadm simply because I’m a dinosaur, and know the switches off the top of my head. Obviously PowerShell would work just a well, if not better).</p>
<p><span style="font-size: 9pt; font-family: 'Segoe UI','sans-serif'; line-height: 107%">stsadm -o uninstallfeature -id &#8217;1a33a234-b4a4-4fc6-96c2-8bdb56388bd5&#8242; -force<o:p></o:p></span></p>
<p>After forcibly removing the feature, I used the PowerPivot configuration tool to remove PowerPivot. Once removed, I ran it again to configure the PowerPivot instance, and this time, it completed successfully. </p>
<p>I did note one thing that I thought was odd, and haven’t been able to explain. On this last run of the configuration tool, the step that provisioned the PowerPivot service application took an inordinately long amount of time, about an hour. Not content to leave well enough alone, I deleted the service application, and re-ran the tool. This time it completed in under a minute. I only mention this in case someone tries this and gives up because they think the system has hung up. </p>
<p>Once I got the first server up and running, it was relatively simple to install PowerPivot for SharePoint 2012 on the second application server, and run the configuration tool, which did everything necessary to add the second application server back into the PowerPivot rotation.</p>
<p>After cleaning up the remaining configuration items common to PowerPivot for SharePoint, and <a href="http://whitepages.unlimitedviz.com/2012/06/the-health-analyzer-and-powerpivot-for-sharepoint/">cleaning up the Health Analyzer errors</a>, PowerPivot now appears to be running smoothly on this farm.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/09/troubleshooting-and-removing-a-failed-installation-or-upgrade-of-powerpivot-for-sharepoint/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installing and/or Upgrading a Multi-Server SQL Server Reporting Services 2012 SharePoint Mode Farm</title>
		<link>http://whitepages.unlimitedviz.com/2012/09/scaling-out-andor-upgrading-to-sql-server-reporting-services-2012-in-sharepoint-mode/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/09/scaling-out-andor-upgrading-to-sql-server-reporting-services-2012-in-sharepoint-mode/#comments</comments>
		<pubDate>Fri, 07 Sep 2012 20:24:02 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Multi Server]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1569</guid>
		<description><![CDATA[A few months ago I posted an article discussing how to upgrade integrated mode Reporting Services from 2008R2 to 2012. That article pretty well assumed a small SharePoint farm, with a single SharePoint server, a single SQL server, and with Reporting Services running on the SharePoint server. In this article, I’d like to address upgrading <a href='http://whitepages.unlimitedviz.com/2012/09/scaling-out-andor-upgrading-to-sql-server-reporting-services-2012-in-sharepoint-mode/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>A few months ago I posted <a href="http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/">an article</a> discussing how to upgrade integrated mode Reporting Services from 2008R2 to 2012. That article pretty well assumed a small SharePoint farm, with a single SharePoint server, a single SQL server, and with Reporting Services running on the SharePoint server. In this article, I’d like to address upgrading and/or installing on a medium or large farm, but to do so, I need to first discuss the nuances involved in scaling out the Reporting Services service application of a SharePoint 2010 farm. </p>
<p>As I <a href="http://whitepages.unlimitedviz.com/2010/05/installation-considerations-for-reporting-services-in-sharepoint-integrated-mode/">discussed previously</a>, and as the Service Application architecture of Reporting Services 2012 makes plain, Reporting Services bits from the SQL server installation media must be installed on a server that has the SharePoint bits installed, and is joined to the farm. In the simple farm scenario mentioned above, that’s fairly straightforward – it’s the SharePoint server (NOT the SQL server!). However, if your SharePoint farm consists of multiple servers, you need to decide where you want your Report processing to be done. With 2012, Reporting Services is a full fledged SharePoint application, which means that it is relatively straightforward to load balance this processing. </p>
<p>A recent project that I worked on had an architecture very similar to the diagram found on the <a href="http://msdn.microsoft.com/en-us/library/hh479774.aspx">MSDN article explaining how to scale out Reporting Services</a>:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image17.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb17.png" width="338" height="496"></a></p>
<p>The only difference in my case was that there were 4 servers in the front end role (1). Of course the servers in the application role served up more than just Reporting Services, but the diagram is essentially accurate. In our case, the SQL Server cluster was running SQL Server 2008 R2, but that was inconsequential because only the Reporting Services instances on the two Application Servers were being upgraded. </p>
<p>If you are are upgrading, there are a number of other steps in addition required first. No matter what, the encryption key should be backed up first. It will be needed after the upgrade unless you want to recreate all of your data connections. Once that is backed up, you should of course back up your two Reporting Services databases. Next, if you have a load balanced (Reporting Services) environment, I recommend removing from rotation all of the load balanced RS servers, leaving only the server that will be used for the primary upgrade. To make things very simple, I also recommend completely uninstalling Reporting Services from all but the one server. </p>
<p>Once complete, the main server can be upgraded according to the instructions laid out in my <a href="http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/">previous article</a>. However, you may find, as I have, that SSRS doesn’t always want to be upgraded cleanly. The good news is that this is relatively easy to recover from. The SSRS service application works like other service applications in that when it is being created, and you specify an existing database, that database will be upgraded automatically. Therefore, if you find yourself with an uncooperative SSRS installation, simple uninstall it, and install the 2012 components from scratch, making sure to use the name of your existing RS database when the service application is being created. Once complete, restore your encryption key, and you should be good to go.</p>
<p>Whether or not you are upgrading or installing fresh, there are a number of differences when installing to a multi server farm compared to a single server installation. </p>
<p>Firstly, when installing SSRS 2012, you will be presented with a screen where you may choose the SQL features to be installed. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image18.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb18.png" width="821" height="620"></a></p>
<p>There are two components to Reporting Services in SharePoint mode, Reporting Services – SharePoint, and the Reporting Services Add-in for SharePoint Products. A lot of the guidance simply says to select both options and continue. However, in a multi farm environment it is important to understand the difference between the two. </p>
<p>Feature #1 is the core of Reporting Services, what in the past would have been the instance, but is now the service application itself. Feature #2 is the add-in, which has been around since the first integrated mode SSRS. It is used by SharePoint to connect to SSRS. In the past, that was a connection to the SSRS web services, but is now how the SharePoint front end servers connect to the service application. Therefore, in a multi server farm, feature 1 should be installed on every application server that will process SSRS reports, and feature #2 must be installed on every server participating in the front end role. Since application servers often perform a dual role, at least for administrators, I recommend installing both features on application servers.</p>
<p>I’m not going to walk through the steps required to create the service application and light up the features in this article, as there is quite a bit of good guidance on that available. I also <a href="http://whitepages.unlimitedviz.com/2012/07/setting-up-reporting-services-2012-with-sharepoint-2013/">wrote one up for installing on SharePoint 2013</a> which is pretty much identical to 2010 for SSRS.</p>
<p>Once the initial installation is complete, it should be repeated on every server that will participate in the Application server role. Obviously the service application only needs to be created once. Once all of the bits are installed on all of the relevant servers, simply navigate to Services on Server under System Settings in Central Admin, and start the “SQL Server Reporting Services” service on every application server. Once that’s done, you’ll have a load balanced, multi-server Reporting Services service.</p>
<p>It is worth calling out a common error encountered in the multi-server farm scenario. You may find that after your upgrade or installation has completed, attempts to access a report from the front end servers result in a connection error, “The attempt to connect to the report server failed. Check your connection information and that the report server is a compatible version”.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image19.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb19.png" width="853" height="140"></a></p>
<p>It’s the last bit of the error that’s relevant. This problem arises when the add-in hasn’t been installed to the front end servers in the farm. Now, you may remember that the Reporting Services Add-In is one of the prerequisites that the prerequisite installer installs on your SharePoint boxes. In the case of an upgrade, you may also remember that you never had to do this before to get SSRS working. So why is it that we need to do this now? It’s because the add-in included with the prerequisite installer is for SSRS 2008 R2, and we’ve just added SSRS 2012. The add ins are not forward compatible, and therefore, it need to be on every front end server in the farm. </p>
<p>So to recap, in order to scale out reporting services, Install the service on one application server, and get it working in the farm. Then, install the service on the remaining application servers, start the service on each server, and install the RS add-in for 2012 on all of the front end servers. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/09/scaling-out-andor-upgrading-to-sql-server-reporting-services-2012-in-sharepoint-mode/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using Per-User Identity with Reporting Services and SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/09/using-per-user-identity-with-reporting-services-and-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/09/using-per-user-identity-with-reporting-services-and-sharepoint/#comments</comments>
		<pubDate>Tue, 04 Sep 2012 01:22:03 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[PowerView]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SQL Server 2010]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1524</guid>
		<description><![CDATA[Almost anyone that has dealt with business intelligence in the Microsoft space is aware of the double hop problem. Simply put, when a user wants a server to execute a process on their behalf, that process will have a different identity, if any at all from the originating user, and therefore user focused operations such <a href='http://whitepages.unlimitedviz.com/2012/09/using-per-user-identity-with-reporting-services-and-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Almost anyone that has dealt with business intelligence in the Microsoft space is aware of <a href="http://blogs.msdn.com/b/knowledgecast/archive/2007/01/31/the-double-hop-problem.aspx">the double hop problem</a>. Simply put, when a user wants a server to execute a process on their behalf, that process will have a different identity, if any at all from the originating user, and therefore user focused operations such as per-user security trimming can’t be performed. The traditional solution to this problem in the Windows world has been to use <a href="http://en.wikipedia.org/wiki/Kerberos_(protocol)">Kerberos</a> authentication, which allows server to pass on secure user tokens to other servers on behalf of originating users. </p>
<p>Unfortunately, Kerberos requires additional infrastructure, and is not adopted in all organizations. Smaller to mid sized organizations tend to stay away from adopting it, primarily due to its perceived complexity, which leaves them with the double hop problem. In the long term, <a href="http://technet.microsoft.com/en-us/library/hh487289.aspx">claims based authentication</a> promises to solve this problem, but it is still in its infancy, and is not adopted at all yet in the SQL Server suite of products, which is where double hop pain is felt most keenly. </p>
<p>The new <a href="http://msdn.microsoft.com/en-us/library/gg471575.aspx">BISM</a> tabular model with <a href="http://technet.microsoft.com/en-us/library/hh213579.aspx">Power View</a> works around this problem by taking advantage of the EFFECTIVEUSERNAME property available in Analysis Services (I’ll be writing more about that later), as does Excel Services and PerformancePoint Services in SharePoint 2013. With EFFECTIVEUSERNAME, the server makes its connection with the data source using its service credentials, but then every query identifies the originating user, and those queries are executed in the context of that user. It’s a clever workaround, and takes care of much of the BI stack, but what about Reporting Services and relational data? </p>
<p>As it turns out, Reporting Services has been able to do this sort of thing for a long time. It’s just been rather cleverly concealed or misunderstood. SQL Server itself has a function, <a href="http://msdn.microsoft.com/en-us/library/ms186297.aspx">SetUser()</a> that can be used by someone with sufficient privileges to impersonate another user. Originally implemented for testing purposes, Reporting Services takes advantage of it in much the same way that EFFECTIVEUSERNAME works in Analysis Services. The place to turn on this function is within a data source editor. </p>
<p>Using SharePoint Integrated mode, there are 3 main tools that can be used to define a data source. A data source can be created from any library that is configured to use the <em>Report Data Source</em> content type. In addition, SQL Server Report Builder can be used to edit a data source, or to create an embedded data source in a Report. Finally, Business Intelligence Development Studio (BIDS) or SQL Server Data Tools (depending on your version of SQL) can be used to create shared data sources. And the best news is, the interfaces are all different!</p>
<p align="center"><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb.png" width="664" height="485"></a><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Setting Connection credentials in SQL Server Data Tools</em></p>
<p align="center"><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image1.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb1.png" width="907" height="790"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>Setting Connection credentials in SharePoint 2013</em></p>
<p align="center"><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image2.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb2.png" width="675" height="499"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>Setting&nbsp; Connection credentials in Report Builder</em></p>
<p align="center">The option that we’re interested in, in all three cases is “Use this user name and password” (stored credentials). In the case of Data Tools or BIDS, the impersonation option isn’t available. Normally what would happen is that the connection would be deployed to the server, and then edited afterwards. We can therefore ignore this interface. However, examine the description of the impersonation option in both SharePoint and Report Builder. Although worded completely differently, they mean exactly the same thing. And in my opinion, Report Builder has it right. In fact it’s a stretch to say that the SharePoint screen isn’t dead wrong. </p>
<p align="center">The SharePoint form can only be considered correct if the word “this” applies to the currently logged in user. To my mind, when I read that option, I am led to believe that it will be set to the account that is being used to make the connection (the stored credentials), when it is in fact the opposite. The setting in Report Builder is far clearer and more accurate.</p>
<p align="center">When the option is checked, the <a href="http://msdn.microsoft.com/en-us/library/ms186297.aspx">SetUser() SQL function</a> will be used in advance of any queries performed by the report, and the value will be set to the currently logged in user, NOT to the credentials specified under “Use this name and password”. The credentials specified here are used to make the connection to the SQL server, and because of the security restrictions of <a href="http://msdn.microsoft.com/en-us/library/ms186297.aspx">SetUser(</a>), MUST have at least the dbOwner role on the queried database, or the SYSADMIN fixed role on the server. My recommendation is the latter if possible. This requirement also makes it very important to restrict the editing of the Data Source. </p>
<p align="center">I imagine that most of the confusion around this feature comes from the fact that in most cases, when you are using impersonation, you are saying “I want to execute this function as this account”. However, in this case, with stored credentials, it’s always the stored credential executing the function, and what we’re asking it to do is to impersonate the currently logged in user. It’s sort of backwards to the way we normally think about impersonation. It’s not immediately intuitive as to why a logged in user would need to impersonate themselves, but that’s basically what’s happening.</p>
<p align="center">Using this option therefore allows you to utilize per user permissions through Reporting Services on SharePoint without having to use Kerberos. This is a good thing, but you should be aware that in many cases, using a proxy account (by not selecting the impersonate option) may be a better option. There are several drawbacks to using per-user authentication. Impersonation should only be used when it is absolutely required.</p>
<p align="left">If you open up the report processing screen for a report that uses a data source defined for impersonation, and select the “used cached data” option, you will receive the warning “This report can not be cached because one or more of the data sources credentials are not stored”.</p>
<p align="center"><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image3.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb3.png" width="854" height="113"></a></p>
<p align="center">The reality is that although the credentials are in fact stored, the report could be different for different users, and caching depends on a consistent result. Therefore, to prevent confusion, it’s not allowed. If the report is particularly large, this removes an important performance optimization technique. </p>
<p align="center">From the same screen, it’s also made very clear that snapshotting is not an option when impersonation is being used, from the error “This report can not run from a snapshot because one or more of the data sources credentials are not stored”.</p>
<p align="center"><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image4.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb4.png" width="899" height="162"></a></p>
<p>The reasons are the same as for caching, and the implication is that snapshots cannot be created, preventing us from storing a version history for the reports. </p>
<p>Finally, subscriptions are also rendered useless through the use of impersonation. An attempt to create a subscription to a report using an impersonated data connection results in the following error:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image5.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/09/image_thumb5.png" width="493" height="190"></a></p>
<p>Per-user identities also require management on the SQL server side. Because we are impersonating the currently logged in user, that user must be managed from within SQL itself, whereas a proxy account only requires that account to have access to the data in question.</p>
<p>To summarize, Kerberos is not required to do per user queries in Reporting Services for relational data. The SetUser() function in SQL Server combined with the Execution Context option in data connections allow this to be performed quite effectively. However, just because it can be done, doesn’t mean that it should be. In many cases a simple proxy account can do the job, and should likely be allowed to, unless the requirements absolutely demand otherwise.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/09/using-per-user-identity-with-reporting-services-and-sharepoint/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Configure the Nintex Workflow Preview on Office 365</title>
		<link>http://whitepages.unlimitedviz.com/2012/08/how-to-configure-the-nintex-workflow-preview-on-office-365/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/08/how-to-configure-the-nintex-workflow-preview-on-office-365/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 20:55:26 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Application Model]]></category>
		<category><![CDATA[Nintex]]></category>
		<category><![CDATA[Platform Preview]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1510</guid>
		<description><![CDATA[Anyone that has worked with my company, UnlimitedViz, knows that we’re unabashed fans of Nintex Workflow. As far as I’m concerned, it’s one of the most cost effective pieces of software I’ve ever come across. Projects that would require days or even weeks of consulting using the out of the box features in SharePoint can <a href='http://whitepages.unlimitedviz.com/2012/08/how-to-configure-the-nintex-workflow-preview-on-office-365/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Anyone that has worked with my company, UnlimitedViz, knows that we’re unabashed fans of <a href="http://www.nintex.com/en-US/Products/Pages/NintexWorkflow2010.aspx">Nintex Workflow</a>. As far as I’m concerned, it’s one of the most cost effective pieces of software I’ve ever come across. Projects that would require days or even weeks of consulting using the out of the box features in SharePoint can be accomplished in mere hours with Nintex Workflow, and what’s more, they can be accomplished by power users, not developers. </p>
<p>Another exceptional aspect of Nintex workflow is that is doesn&#8217;t replace the out of the box SharePoint workflow engine, it simply enhances it, through a browser based graphical designer/viewer, and multiple custom actions. This design approach really showed its value on several SharePoint/Nintex 2007 to SharePoint/Nintex 2010 upgrades that we’ve performed. We were able to upgrade entire farms and maintain in-flight workflows. </p>
<p>Unfortunately, as <a href="http://whitepages.unlimitedviz.com/2011/10/why-i-love-office-365/">I wrote about previously</a>, once we moved our organizational assets to Office 365, we were no longer able to use Nintex Workflow ourselves, because NWF is an on-premise solution. However, with a little redevelopment, changes in the SharePoint development model (for a reference, <a href="https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/The-new-SharePoint-application-model.aspx">see Jeremy Thake’s excellent summary</a>) open the doors for third party code to be used with Office 365 sites in addition to on-premise sites.</p>
<p>Happily, these changes have not gone unnoticed by the folks at Nintex, and they are one of the first vendors out of the gate with a solution in the SharePoint store. It’s just a preview of what will be coming very shortly after the release of SharePoint 2013, which is important, because Office 365 sites will be upgraded very shortly after release.</p>
<h6>Walkthrough </h6>
<p>It should go without saying, but in order to try the Workflow Preview, you’ll need to be using an on premises SharePoint farm that has been enabled for SharePoint 2013 workflows, or using the Office 365 preview. In our case, we’re using the Office 365 preview.</p>
<p>Firstly, you’ll need to add the app to the Office 365 App Catalogue. To do this, go to the Office 365 Admin screen&nbsp; and click on apps.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb.png" width="754" height="577"></a></p>
<p>Next, click on Purchase Apps. You’ll see a yellow alert bar indicating that you don’t have permission to add apps, but as far as I can tell, it’s a bug. Click on the “Nintex Workflow Platform Preview” icon.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb1.png" width="958" height="455"></a></p>
<p>Once that’s done, you’ll be presented with a summary screen. When ready, click the “Add It” button.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb2.png" width="852" height="455"></a></p>
<p>You’ll then be presented with a summary screen indicating that you now have a site license. </p>
<p>At this point, you’ll need to navigate back to the site that will be using the workflows. Now that the app is available, you won’t be turning on features for a site anymore, you’ll be adding the app to any site that you want to use the workflow preview with. In this case, we’ll be adding the preview app to a basic team site. Assuming that you have the appropriate permissions, you’ll start by adding an app by clicking on Site Contents – Add an App.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb3.png" width="1213" height="662"></a></p>
<p>The Workflow Preview should appear in the “Apps you can add” section. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb4.png" width="987" height="696"></a></p>
<p>Click it, and you’ll be asked if you trust it – of course you do! Click the Trust It button and in a moment the app will be added. </p>
<p>What’s actually happening behind the scenes is that an app subsite is being provisioned that will contain all of the assets needed for the app to work. This is done to keep the app itself isolated from the content of the site. It may take a minute, so have patience. </p>
<p>Once it’s ready, you’ll see “Nintex Workflow Platform Preview” comingled in with the other site lists and apps. Clicking on it takes you into the workflow designer where you can design a site workflow. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb5.png" width="975" height="716"></a></p>
<p>Drag and drop actions to your heart’s content, and when ready, click Publish from the ribbon, give it a name, and save it. You can now run your Nintex site workflow in Office 365. You should note that this is a small subset of actions intended for preview only, but the Nintex Live actions are available, so you can translate items, use current exchange rates, etc. </p>
<p>If you want to design a list workflow, simply navigate to a library or list&nbsp; within the site, and click on the appropriate list or library tab. Over on the right near the standard workflow button, you’ll find a “Nintex Workflow” button. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb6.png" width="1146" height="250"></a></p>
<p>Clicking on it will once again open the designer. If you examine the URL, you’ll notice that what it’s really doing is opening the isolated app subsite and linking back to the list where the workflow will be saved.</p>
<p>In this case, we’ll build a quick translation workflow that will take content from the English field, use the Bing Translation action available through Nintex Live, and then write the value to the French field. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb7.png" width="1153" height="716"></a></p>
<p>The workflow can be set to run on item creation, and then published. So that adding a new item:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb8.png" width="769" height="300"></a></p>
<p>Then saving it, after a few moments results in a translated value appearing:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/08/image_thumb9.png" width="984" height="460"></a></p>
<p>This is early days, and we’re looking at previews on previews, but I’m quite encouraged with this. Not only will I be able to use Nintex workflows for our own Office 365 site shortly after launch, but in my opinion, this preview validates the new application model. Yes there are currently bumps, understandable, given that this is a preview on a preview, but this is functional and responsive. The folks at Nintex have been doing their homework, and appear to be hitting the ground running into the emerging Office 365 market.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/08/how-to-configure-the-nintex-workflow-preview-on-office-365/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Office Web Applications In SharePoint 2013 &#8211; Bigger, Faster, Better?</title>
		<link>http://whitepages.unlimitedviz.com/2012/07/office-web-applications-in-sharepoint-2013-bigger-faster-better/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/07/office-web-applications-in-sharepoint-2013-bigger-faster-better/#comments</comments>
		<pubDate>Tue, 24 Jul 2012 00:58:27 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[Office Web Applications]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1466</guid>
		<description><![CDATA[At the same time that SharePoint 2010 was released, the Office team released the Office Web Applications. These browser versions of Word, Excel, and PowerPoint were tightly integrated with SharePoint and in fact originally required SharePoint to run. To install them, you would stand up a SharePoint server, and then install the web application bits <a href='http://whitepages.unlimitedviz.com/2012/07/office-web-applications-in-sharepoint-2013-bigger-faster-better/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>At the same time that SharePoint 2010 was released, the Office team released the Office Web Applications. These browser versions of Word, Excel, and PowerPoint were tightly integrated with SharePoint and in fact originally required SharePoint to run. To install them, you would stand up a SharePoint server, and then install the web application bits on that server. Like a service pack or CU, you would then run PSCONFIGUI to integrate the bits into the farm, and install the relevant service applications. Simple enough. </p>
<p>However, there were some quirks associated with them. As noted here, removing the web applications from the server would actually remove the server from the farm. Simple enough to correct, but if you uninstalled the SharePoint bits before uninstalling the Office Web Application bits, <a href="http://whitepages.unlimitedviz.com/2010/09/office-web-applications-installation-issuesbe-very-careful/">you could be left with an effectively inoperable server</a>. </p>
<p>During the 2010 release lifetime however, we started to see the Office Web Applications pop up elsewhere. Initially powering Facebook’s docs.com, they could also be seen as part of Windows Live. Obviously, when Office 365 was released, they were front and center. With this increasingly broad adoption, and requirement for scale, a reliance on SharePoint as a platform made less and less sense, and now, for 2013, we get a new architecture. </p>
<h6>Standalone Web Applications Server</h6>
<p>The big change is that Office Web Applications is no longer reliant on SharePoint. It installs and configures independently and it can serve any number of clients, SharePoint being one, and Exchange being another. In fact, it’s now positively hostile to SharePoint and other servers – you can’t install it on a machine where the SharePoint bits are installed at all. The same goes for Exchange, Lync, SQL Server, or anything really. The following is from the TechNet document “<a href="http://technet.microsoft.com/en-us/library/jj219435(v=office.15)">Plan Office Web Apps Server Preview</a>”:</p>
<p style="line-height: normal; margin: 5pt 0cm; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><b><span style="font-family: 'Arial','sans-serif'; font-size: 8pt">Servers that run Office Web Apps Server Preview must not run any other server application</span></b><span style="font-family: 'Arial','sans-serif'; font-size: 8pt">. This includes Exchange Server, SharePoint Server, Lync Server, and SQL Server. If you have hardware constraints, you can run Office Web Apps Server Preview in a virtual machine instance on one of these servers. </span></p>
<p style="line-height: normal; margin: 5pt 0cm; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Arial','sans-serif'; font-size: 8pt"><?xml:namespace prefix = o /><o:p></o:p></span><b><span style="font-family: 'Arial','sans-serif'; font-size: 8pt">Do not install any services or roles that depend on the Web Server (IIS) role on port 80, 443, or 809</span></b><span style="font-family: 'Arial','sans-serif'; font-size: 8pt"> because Office Web Apps Server Preview periodically removes web applications on these ports.<o:p></o:p></span></p>
<p style="line-height: normal; margin: 5pt 0cm; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><b><span style="font-family: 'Arial','sans-serif'; font-size: 8pt">Do not install any version of Office</span></b><span style="font-family: 'Arial','sans-serif'; font-size: 8pt">. You must uninstall Office before you install Office Web Apps Server Preview</span><span style="font-family: 'Times New Roman','serif'; font-size: 12pt">.</span></p>
<p style="line-height: normal; margin: 5pt 0cm; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Times New Roman','serif'; font-size: 12pt"><font face="Arial"></font></span></p>
<p>&nbsp;</p>
<p>The Office Web Application Server really doesn’t play well with others. It pretty well demands that it is installed in isolation from other servers, which in reality means that a small SharePoint farm will consist of 3 servers &#8211; one SharePoint front end server, one SQL server, and one Office Web Applications server, and while virtualization makes this much more palatable, it may be a bit much for some smaller organizations to swallow. </p>
<h6>Setting It Up</h6>
<p>The official (pre-release)&nbsp; document on planning and deploying the Office Web Application server can be found <a href="http://technet.microsoft.com/en-us/library/jj219435(v=office.15) Plan">here</a> and <a href="http://technet.microsoft.com/en-us/library/jj219455(v=office.15)">here</a> respectively. Originally, I had planned on putting together a step by step walkthrough, but Steve Peschka from Microsoft published <a href="http://blogs.technet.com/b/speschka/archive/2012/07/23/configuring-office-web-apps-in-sharepoint-2013.aspx">this article</a> today that does precisely that. </p>
<p>Steve’s article is great because it describes the process of setting up the server with both http and https. Http is fine if all traffic is internal, but if you will have any external traffic, you must set it up with SSL (if security matters at all to you..), and the server will support only one zone, you cannot use both http and https. As you would expect, setting it up for SSL is more complex than for http.</p>
<p>All of the setup is done with Powershell. Powershell is fantastic, and highly useful, but I don’t think that anyone would claim that it’s easy to get started with, especially for small farm administrators, </p>
<p>I think that it can safely be concluded that it’s significantly harder to get the Office Web Applications installed with 2013 than it was with 2010. </p>
<h6>Takeaways</h6>
<p>Anyone running a two server SharePoint farm with the Office Web Applications on 2010 will wind up with a three server farm after upgrading to SharePoint 2013. This can be done via virtualization, or by standing up another physical box. Depending on the workload, the Office Web Application server doesn’t need to be particularly powerful, but no matter what, it introduces an added level of complexity. For those that heavily leverage the server, that’s a good trade-off, but for others, perhaps not.</p>
<p>The Office Web Applications are a fantastic set of tools, and they have been significantly improved in 2013. I am however concerned that the lack of a smooth architectural transition path from 2010 combined with the lack of a simple setup process may keep some (smaller) organizations away from it. Of course, those organizations will also have the option of moving to Office 365 where these services will already be set up and running. </p>
<p>Something tells me that this may just be the point.&nbsp;&nbsp; </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/07/office-web-applications-in-sharepoint-2013-bigger-faster-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting Up Reporting Services 2012 With SharePoint 2013</title>
		<link>http://whitepages.unlimitedviz.com/2012/07/setting-up-reporting-services-2012-with-sharepoint-2013/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/07/setting-up-reporting-services-2012-with-sharepoint-2013/#comments</comments>
		<pubDate>Fri, 20 Jul 2012 13:41:12 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1464</guid>
		<description><![CDATA[In my last post, I discussed the changes in Excel and PowerPivot as they pertain to SharePoint 2013 and SQL Server. This post will walk through the steps required to set up SQL Server Reporting Services in Integrated mode with SharePoint 2013. As was the case with the new Excel data model, you will need <a href='http://whitepages.unlimitedviz.com/2012/07/setting-up-reporting-services-2012-with-sharepoint-2013/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://whitepages.unlimitedviz.com/2012/07/using-the-new-excel-2013-data-model-with-sharepoint/">last post</a>, I discussed the changes in Excel and PowerPivot as they pertain to SharePoint 2013 and SQL Server. This post will walk through the steps required to set up SQL Server Reporting Services in Integrated mode with SharePoint 2013. As was the case with the new Excel data model, you will need at least SQL Server 2012 SP1 to get this to work as I describe (it’s currently <a href="http://www.microsoft.com/en-us/download/details.aspx?id=30375">available here</a> as CTP 3).</p>
<p>Fundamentally, there are no real differences with how this installs when compared to installing SSRS 2012 on a SharePoint 2010 farm in SharePoint mode, so if you’ve landed here looking for 2010 information, it should be valid, but the screens will look a little different. </p>
<p>To start with, it’s important to understand that SSRS will install as a SharePoint service application. This obviously means that it must be installed on a machine that is part of the the SharePoint farm. What this does NOT mean is that you should install SharePoint on your SQL server and join it to the farm (please DON’T do that!). In a single SharePoint front end environment it is much better to add SSRS to your SharePoint server than it is to add SharePoint to your SQL server. Obviously, if you have a separate SharePoint application server, that’s the best place for it. </p>
<p>To install, obtain the SQL Server 2012 SP1 (or greater) media and mount it on tyour SharePoint server. Run the installer, choose new install and follow the prompts. Eventually you will get to the feature section screen, and assuming that machine has no prior SQL on it will look something like the following when completed.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image15.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb15.png" width="824" height="617"></a></p>
<p>You’ll notice that everything selected is under the Shared Features section, which means that it is not installed as part of a SQL instance. In fact, you’ll notice that we don’t have the data engine installed at all. The two Reporting Services options shown are the only items that are actually required for SSRS Integrated mode to work. As you can see, I’ve also selected SQL Server Data Tools (formerly BIDS) and Management Tools as well. I like to install these tools as a matter of course on SharePoint servers, as they can come in handy for connectivity testing or quick BI project building. </p>
<p>Follow the remaining prompts until the installation is complete. </p>
<p>Another thing that you should note is that the order of operations is important here. If you install Reporting Services – SharePoint <strong><em>prior</em></strong> to installing SharePoint on the farm, the option to create a Reporting Services application will not appear. That’s because it won’t be registered with the farm as a service application. If this happens, you can run the following PowerShell to register the Service Application</p>
<pre style="width: 550px; height: 41px" class="csharpcode">Install-SPRSService
Install-SPRSServiceProxy
 
</pre>
<p>Once registered, the service application can be created as below. If you install Reporting Service – SharePoint <strong><em>after</em></strong> the server has been joined to the farm, then the above steps are taken care of for you automatically. </p>
<p>The next thing that you need to do is to provision the service application. From Central Administration, navigate to Manage Service applications. Then, from the new menu, Select SQL Server Reporting Services Service Application.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image16.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb16.png" width="289" height="501"></a></p>
<p>Fill out the resulting form as appropriate, and select OK. Make sure that you navigate to the bottom of the form and select the applications to activate SSRS on.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image17.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb17.png" width="829" height="660"></a></p>
<p>Once the service application and proxy have been created, click on it to access the management screen. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image18.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb18.png" width="771" height="485"></a></p>
<p>You’ll want to access each of the sections and fill out the appropriate options for your installation. The instructions are fairly self-explanatory, so I won’t go into them here. At a minimum, you should back up your encryption key in the key management section, Set your unattended execution account (the default account to use when no credentials are available), and your email server settings if you want to be able to deliver reports via email. If you want to enable self service subscriptions and alerts, fill out that section, and it contains instructions for setting up the SQL agent service to support it. </p>
<p>The most important section is System Settings, which controls the bulk of how Reporting Services will run. Clicking on it accessed the service itself, and it’s the first place that you’ll see an error if you have configuration problems. In early builds, I have seen an error similar to the following:</p>
<p>The requested service, &#8216;http://localhost:xxxxx/SecurityTokenServiceApplication/securitytoken.svc/actas&#8217; could not be activated</p>
<p>(xxxxx is a local port which varies from farm to farm)</p>
<p>This indicated a problem with the SecurityTokenService, which you can see by accessing IIS. After doing a little poking around, I tried to access the service directly in a browser via its base url:</p>
<p><a href="http://localhost:xxxxx/SecurityTokenServiceApplication/securitytoken.svc">http://localhost:xxxxx/SecurityTokenServiceApplication/securitytoken.svc</a></p>
<p>I was then presented with an error indicating that the server was too low on memory. The solution? Allocate more RAM. It was running with 4 GB and only SharePoint installed, but it did have most of the service applications activated. The lesson – if you want all the services to work, give your server enough memory. Bumping it to 8 GB did it in my case. </p>
<p>If you can access your system settings, then you should be good to go. The next step is to enable SSRS in you site collections, and I plan on doing a post on that in the very near future. Stay tuned.</p>
<p><strong>Update – July 26 2012</strong> &#8211; If you’re interested in trying out SSRS on SharePoint, or PowerPivot for SharePoint, you can use a pre-built environment that’s been set up on Cloudshare. <a href="https://use.cloudshare.com/Pro/ShareEnv/XTJ2D648CGHI">Click here to sign up and access the environment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/07/setting-up-reporting-services-2012-with-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Using the new Excel 2013 Data Model with SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/07/using-the-new-excel-2013-data-model-with-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/07/using-the-new-excel-2013-data-model-with-sharepoint/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 14:47:40 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Excel Services]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[SharePoint 2013]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1435</guid>
		<description><![CDATA[One of the biggest new features in Excel 2013 is the ability to import and analyze massive amounts of multi tabular data. However, it&#8217;s not really all that new – if you&#8217;ve used PowerPivot in the past, you&#8217;ll already be familiar with the underlying technology. What&#8217;s really new here is that Excel can now work <a href='http://whitepages.unlimitedviz.com/2012/07/using-the-new-excel-2013-data-model-with-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>One of the biggest new features in Excel 2013 is the ability to import and analyze massive amounts of multi tabular data. However, it&#8217;s not really all that new – if you&#8217;ve used PowerPivot in the past, you&#8217;ll already be familiar with the underlying technology. What&#8217;s really new here is that Excel can now work with these large data models without the need of an add-in. The even better news is that Excel Services in SharePoint supports this new data engine. What may be a little unclear is what is necessary to make it all work, and this post is an attempt to clarify this a little bit.</p>
<p>To really understand what&#8217;s new, we need to understand what is (or was) available via the 2010 family of products. It&#8217;s a bit of a bumpy ride that covers 3 main product groupings, SQL Server, SharePoint, and Office, so hang on, and I&#8217;ll do my best to clarify.</p>
<h2>Background<br /></h2>
<p>When SharePoint Server 2007 was initially released, it contained Excel Services. Among other capabilities, the original Excel Services was a means of surfacing an Excel workbook, or part of a workbook to a user through a browser interface without the requirement to have Excel installed client side. It was relatively limited, and the version of Excel Services that shipped with SharePoint 2010 removed many of those limitations. The Office Web Applications that install alongside of SharePoint bring the ability to edit workbooks directly in the browser.</p>
<p>At approximately the same time that SharePoint 2010 was released, the SQL server team released PowerPivot for Excel. PowerPivot is a free, downloadable add in to Excel that allows Excel users to work with massive amounts of data, and to analyze it in ways previously available only to advanced OLAP systems. The reason that it can accommodate the required data volumes is because it adds a new highly compressible data engine (previously named Vertipaq, now called x-Velocity) directly into the Excel file. These PowerPivot workbooks work perfectly when you have Excel 2010 and the PowerPivot add in installed, but what happens when you want to use Excel Services to share it with your team?</p>
<p>To solve this problem, the SQL Server team also released PowerPivot for SharePoint and included it with SQL Server 2008 R2 (read – it&#8217;s not available out of the box with SharePoint 2010). Installing PowerPivot for SharePoint in your SharePoint farm adds a new SharePoint shared service that works with Excel Services to allow those PowerPivot enabled workbooks to be rendered up by the server. These workbooks are &#8220;live&#8221; so that users can very effectively interact with them, using slicers, etc.</p>
<p>The way that it does this is that it creates a local &#8220;runtime&#8221; version of Analysis Services on the server that is used to perform all of the necessary analytical calculations. Also, to keep the data fresh, PP for SP also contains a series of timer jobs and configurations that connect to the back end data sources on a periodic basis. If you’re up for it, there&#8217;s a <a href="http://technet.microsoft.com/en-us/library/ff628113(v=sql.100).aspx">very detailed description of the architecture here</a>. </p>
<h2>Pre 2013 Usage</h2>
<p>Without getting into much detail (like I will below with 2013 ), setting up PowerPivot for SharePoint involves starting with a SharePoint farm that is enabled for Excel Services, adding the PowerPivot for Excel add-on to one or more workstations that will create at least one PowerPivot enabled workbook, and then installing PowerPivot for SharePoint onto a SharePoint server<strong> FROM the SQL Server 2008 R2 or 2012 media</strong>. After performing some (relative onerous in some cases) configuration steps, The PowerPivot enabled workbooks can be uploaded into a SharePoint library or PowerPivot gallery, and then used by anyone accessing the SharePoint environment. There are quite a few moving parts here including</p>
<ul>
<li>Excel 2010
<li>SharePoint Server
<li>Excel Services
<li>PowerPivot for SharePoint
<li>SQL Server
<li>Analysis Services</li>
</ul>
<p>As with any system, the more moving parts that there are, the more opportunity there is for failure. In addition, there are a fairly broad set of skillsets required to make it all work, so any simplification is welcome.</p>
<h2>What&#8217;s New in 2013</h2>
<p>The big news is that the x-Velocity engine that is the underlying power behind PowerPivot is included in Excel 15 without the use of an add-in, which will undoubtedly increase its adoption. This does lead to some practical questions around how this works with SharePoint 2013 and Excel Services. Couple this with the fact that PowerPivot still exists, and the landscape can get pretty confusing.</p>
<p>Excel Services itself can render Excel workbooks with embedded data models, but it’s not possible to interact with them. Clicking on slicers, filters etc. simply won’t work. The workbook can be seen, but it is completely static. Any attempt to interact with it will result in an error like the following.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image7.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb7.png" width="322" height="148"></a></p>
<p>As with PowerPivot in SharePoint 2010, what is needed is an Analysis Services engine to perform the necessary work. The big difference with 2013 is that <strong>the engine no longer needs to be installed on the SharePoint server</strong> – you can connect to an Analysis Services server elsewhere on your network, and that server does not need to be part of your SharePoint farm.</p>
<p>That server does, however need to be operating in “SharePoint mode”, and it can be a little unclear as to what that means. In the end what it means is that PowerPivot for SharePoint (available on SQL 2012 media) is installed on a non-SharePoint server. However, if you try to do this using the release versions of SQL Server 2012 (or 2008 R2 for that matter) you will get an error because the SharePoint bits are not present. What is needed is a minimum of SQL Server 2012 SP1, which as of this writing is available as a Community Technology Preview V3, and can be <a href="http://www.microsoft.com/en-us/download/details.aspx?id=30375">found here</a>. To set this up, run the SQL install on the AS machine, and at the Setup Role prompt choose SQL Server PowerPivot for SharePoint.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image8.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb8.png" width="815" height="400"></a></p>
<p>Unless you need it, you don’t need to install the relational engine. No, you’re not really using PowerPivot at this point, but it’s the option you need to pick. I suspect that the name may change by the time SQL Server 2012 SP1 is released, but for now, that’s what it is.</p>
<p>Follow the remaining prompts to complete the installation. After the installation completed, resist the urge to run either of the PowerPivot configuration tools. These are used if we actually ARE using full PowerPivot (see below), and that will require a SharePoint server. If you run it on a non SP farm machine, things can get very messed up.</p>
<p>Once that is set up, you need to tell Excel services to use it. Navigate to your Excel Services service application in Central Administration, and select “Data Model Settings”.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image9.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb9.png" width="883" height="519"></a></p>
<p>The options here are pretty limited…what’s your Analysis Services server? Click on Add Server, and add your Analysis Services (PowerPivot for SharePoint) server. Unless you’ve changed it, PowerPivot for SharePoint will have installed in a non default instance named POWERPIVOT, so the server name will take the form SERVERNAME\POWERPIVOT, as below</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image10.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb10.png" width="822" height="462"></a></p>
<p>You may need to run an iisreset on your SharePoint front end servers, but once this is complete, you’re ready to test. To do that, you’ll need to start up Excel 2013, and import multiple tables from a data source. This triggers creation of the model.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image11.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb11.png" width="541" height="423"></a></p>
<p>Once imported (it may take a bit), create a pivot table and add an interactive element (a slicer is perfect). Test it out, and if it’s working, save it to a SharePoint document library.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image12.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb12.png" width="703" height="535"></a></p>
<p>Close Excel, navigate to the library, and click on the workbook. It should open in the browser. Once open, trigger the interactivity element (click the slicer) and if it works, you have everything configured properly.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image13.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb13.png" width="717" height="597"></a></p>
<p>If you want to have a look under the covers, start SQL Server Management studio, and create an Analysis Services connection to your instance (defined above). You should see a new model created for your workbook.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image14.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb14.png" width="378" height="109"></a></p>
<p>If it’s not there, make sure that you’ve interacted with the workbook – it doesn’t get created until the first interaction.</p>
<h2>Whither PowerPivot?</h2>
<p>Now that the engine is baked into Excel, is there any need for PowerPivot any longer? As we’ve seen, for simple analysis, no. However, if we want to do anything advanced, like filtering import data, modifying the model, creating complex relationships, or using DAX (the tabular answer to MDX), the answer is emphatically yes.</p>
<p>On the client side, PowerPivot is actually included with Excel – no download required anymore. It is disabled by default, and is enabled through the Excel Com Add in interface. You can view this as your individual or team model designer. With it you can create complex models and then share them out via SharePoint. Optionally these very same models can be imported into Analysis Services projects if/when they become mission critical, or too large. Another nice thing is that models created with PowerPivot can be shared on a SharePoint farm that is not using the full PowerPivot for SharePoint (but does need “Analysis Services in SharePoint mode – confused yet?).</p>
<p>On the Server side, we can install PowerPivot for SharePoint, just as we did with SharePoint 2010. The reason that we would want to do this is to gain access to PP for SP features like the Pivot Gallery, but primarily to access refresh capabilities. In the scenarios that I’ve described above, using Excel Services, the data that we’re using is relatively static. Data is imported when creating the model, and is used for analysis, but there is no mechanism to refresh the data in the model in the way that Analysis Services can. PowerPivot for SharePoint offers this capability in SharePoint 2010, and this carries forward with SharePoint 2013. </p>
<p>Configuring PP for SharePoint 2013 is beyond the scope of this post, but I will likely address it in a future post.</p>
<h2>Compatibility</h2>
<p>With Office 2013 we have the Third major release of PowerPivot, and the data model on the second platform for SharePoint. It’s not likely that anyone will upgrade all of their applications immediately, so the question is, what works where? The good news is that the core engine is relatively unchanged, and models created with any versions of PowerPivot should work well with Excel Services 2013 (and Analysis Services SharePoint mode). Conversely, models created with Excel 2013 whether with or without the PowerPivot 2013 add-in should work with previous versions of SharePoint. I haven’t yet had the chance to try out all of the various permutations and combinations, and would like to hear what your experience is.</p>
<p>Hopefully, this helps clear up some of the confusion around the Excel BI features in SharePoint 2013. Hopefully the naming in the SQL media installation gets cleaned up by release. </p>
<p><strong>Update – July 26 2012</strong> – If you’re interested in trying out any of the tools that I mention below, you can use a pre-built environment that’s been set up on CloudShare. <a href="https://use.cloudshare.com/Pro/ShareEnv/XTJ2D648CGHI">Click here to sign up and access the environment</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/07/using-the-new-excel-2013-data-model-with-sharepoint/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Profile Import in SharePoint 2013 &#8211; Back to the Future</title>
		<link>http://whitepages.unlimitedviz.com/2012/07/profile-import-in-sharepoint-2013-back-to-the-future/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/07/profile-import-in-sharepoint-2013-back-to-the-future/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 14:29:50 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[FIMSynchronizationService]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[User Profile]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1433</guid>
		<description><![CDATA[When SharePoint 2010 was introduced, one of the major changes that it brought with it was a completely new infrastructure for working with user profiles. This infrastructure was based on the Forefront Identity Manager, and represented a fairly bold leap. With it, the integration possibilities were greatly increased, and it allowed for not only read, <a href='http://whitepages.unlimitedviz.com/2012/07/profile-import-in-sharepoint-2013-back-to-the-future/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>When SharePoint 2010 was introduced, one of the major changes that it brought with it was a completely new infrastructure for working with user profiles. This infrastructure was based on the Forefront Identity Manager, and represented a fairly bold leap. With it, the integration possibilities were greatly increased, and it allowed for not only read, but write synchronization on a field by field basis (either read or write… not both!).</p>
<p>The problem was that it was unwieldy. Being from an agricultural background, I liken it to a combine. Useful, a lot of moving parts, and it breaks down easily. Couple this with the fact that with the initial release of SharePoint 2010, it wasn’t fully baked, and you have the recipe for what became the top support issue for SharePoint 2010 up until this point. Subsequent Service Packs and Hot Fixes have greatly improved the system (my gold standard is currently Service Pack 1 with the December 2011 Cumulative Updates), but the system does remain complex, and is arguably overkill where a simple Active Directory import is all that is required. </p>
<p>I put out <a href="http://whitepages.unlimitedviz.com/2010/05/configuring-profile-import-in-sharepoint-2010-a-way-around-the-minefields/">a guide</a> intended to simplify the steps, but the <a href="http://www.harbar.net/articles/sp2010ups.aspx">real comprehensive guide is by Spencer Harbar</a> – I strongly recommend a read.</p>
<p>Well, everything old is new again. With SharePoint 2013, the product team heard these messages and brought back the simpler profile import that was in SharePoint 2007 as an option. It’s not available by default, and I don’t necessarily recommend using it (as always, it depends) but if your requirements are a simple import, then it may be for you. Here’s how to get it working.</p>
<p>To start with, do <strong>NOT</strong> start the User Profile Synchronization Service. This is the FIM based system, and is NOT required for the simple import to work.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb.png" width="719" height="305"></a></p>
<p>Navigate to the User Profile Service Application (from Central Administration, Select Application Management, Manage Service Applications, and then your Profile Service Application). Then, select Configure Synchronization Settings from the Synchronization Section.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image1.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb1.png" width="1014" height="530"></a></p>
<p>Then, instead of “Use SharePoint Profile Synchronization”, select “Use SharePoint Active Directory Import”, and click OK.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb2.png" width="1063" height="726"></a></p>
<p>Once that is complete, you need to set up an import. To do that, select the “Configure Synchronization Connections” link from the Service Application page.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image3.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb3.png" width="552" height="105"></a></p>
<p>Then, click “Create New Connection”, and fill out the connection form accordingly. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image4.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb4.png" width="930" height="696"></a></p>
<p>One thing to note, and a deviation from the original SharePoint 2007 import mechanism is that the account used above MUST have the “Replicating Directory Changes” permission in Active Directory for the import to work. This is the same requirement as the 2010 synchronization, and the full synchronization service with SharePoint 2013.</p>
<p>Navigate back to the Profile Service Application page, and select “Start Profile Synchronization”. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image5.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb5.png" width="587" height="121"></a></p>
<p>Finally, Select the full synchronization option, and click OK. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image6.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/07/image_thumb6.png" width="909" height="313"></a></p>
<p>After a relatively short period of time, your user profiles should be available. </p>
<p>Again, I don’t necessarily recommend the simpler option if your only problem is complexity, but I do think that is was wise of the product team to add this back in. If your requirements are truly import only, and you don’t have multiple identity systems, this is a quick way to get up and running. It’s also great for testing and demo environments. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/07/profile-import-in-sharepoint-2013-back-to-the-future/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Quick PowerPivot/PowerView  Demonstration on SharePoint Shop Talk</title>
		<link>http://whitepages.unlimitedviz.com/2012/06/quick-powerpivotpowerview-demonstration-on-sharepoint-shop-talk/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/06/quick-powerpivotpowerview-demonstration-on-sharepoint-shop-talk/#comments</comments>
		<pubDate>Fri, 22 Jun 2012 18:24:11 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[PowerView]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Shop Talk]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1415</guid>
		<description><![CDATA[On a recent SharePoint Shoptalk, I presented a quick overview of PowerPivot and PowerView&#160; working in SharePoint. The demonstration uses some real world data, and covers a number of the important features of the products. It’s not terribly long, and if you’re interested in these products, you may want to check it out. I’ve embedded <a href='http://whitepages.unlimitedviz.com/2012/06/quick-powerpivotpowerview-demonstration-on-sharepoint-shop-talk/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>On a recent SharePoint Shoptalk, I presented a quick overview of PowerPivot and PowerView&nbsp; working in SharePoint. The demonstration uses some real world data, and covers a number of the important features of the products. It’s not terribly long, and if you’re interested in these products, you may want to check it out. I’ve embedded it below.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e8e25a2b-62bd-4c1b-baa9-61f4c1775b15" class="wlWriterEditableSmartContent">
<div><object width="521" height="293"><param name="movie" value="http://www.youtube.com/v/8eQVqxxLmho?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/8eQVqxxLmho?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="521" height="293"></embed></object></div>
</div>
<p>Also – if you’re so inclined, <a href="http://sharepointshoptalk.webs.com/">SharePoint Shop Talk</a> runs live every Thursday from 12:30 to 1:30 PM Eastern time. Come out and be a part of the conversation – you never know what you might learn.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/06/quick-powerpivotpowerview-demonstration-on-sharepoint-shop-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Health Analyzer and PowerPivot for SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/06/the-health-analyzer-and-powerpivot-for-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/06/the-health-analyzer-and-powerpivot-for-sharepoint/#comments</comments>
		<pubDate>Thu, 21 Jun 2012 16:33:09 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Health Analyzer]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Service Applications]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1411</guid>
		<description><![CDATA[*Note – Updated 2012-09-07 The Health Analyzer that first appeared in SharePoint 2010 is a fantastic idea. Periodically, (you say when) timer jobs run to check predefined health rules, and when those fail, you are alerted in Central Administration with a yellow or red error bar depending on the severity. This can potentially bring problems <a href='http://whitepages.unlimitedviz.com/2012/06/the-health-analyzer-and-powerpivot-for-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><strong>*Note – Updated 2012-09-07</strong></p>
<p>The Health Analyzer that first appeared in SharePoint 2010 is a fantastic idea. Periodically, (you say when) timer jobs run to check predefined health rules, and when those fail, you are alerted in Central Administration with a yellow or red error bar depending on the severity. This can potentially bring problems to an administrator’s attention before their effects are felt. Unfortunately, some of the default rules, through a combination of being useless, or buggy, result in almost any farm being constantly alerted. This has the negative effect of reducing confidence in it, and causing administrators to ignore these alerts, which is a pity, because when properly configured, they can be quite useful. </p>
<p>The trick is to spend a few minutes to deactivate the ones that don’t work properly, or are unnecessary. My personal favourite is the alert “Database has large amounts of unused space” – which is actually a very good condition. </p>
<p>All that you really need to do for these buggy rules is to open them up, and disable them. It’s relatively straightforward to do so. While in Central Administration, just open up any of the alerts, and select the “View” link in the Rule Settings section.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb.png" width="455" height="56"></a></p>
<p>From the resulting screen, just click Edit in the ribbon, and deselect the “Enabled” option. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb1.png" width="623" height="366"></a></p>
<p>Taking the time to do either do this, or to remedy the situation for all of the alerts that you’re receiving on your farm will turn your Health Analyzer from a nuisance to a valuable monitoring tool.</p>
<p>In order to test whether or not your changes have worked, you need to run all of the Health Analyzer jobs. You can do this manually, through Central Administration, or you can run the following PowerShell (by Gary Lapointe, lifted shamelessly from <a href="http://www.ableblue.com/blog/archive/2011/03/25/run-all-health-analysis-jobs-on-demand/">Matthew McDermott’s blog</a>):</p>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<pre class="csharpcode">Get-SPTimerJob | <span class="kwrd">where</span> {$_.Title -like “Health Analysis Job*”} | Start-SPTimerJob</pre>
<p>Installing PowerPivot for SharePoint introduces a group of new rules to the mix, and like their out of the box cousins, they are a mixed blessing. Some are important, and some are downright wrong. I had occasion recently to do a clean install of PowerPivot for SharePoint 2012, and decided to document the Health Analyzer results, and their required actions here. </p>
<p>Upon completion of the PowerPivot for SharePoint install, I was initially taken aback to find so many errors:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb2.png" width="551" height="150"></a></p>
<p>OK, one of these has nothing to do with PowerPivot, but we’ll tackle the rest. In reality, they’re not so bad taken one at a time. We’ll start with one that’s potentially very important:</p>
<h5>1. Built-in accounts are used as application pool or service identities.</h5>
<p>It’s good practice to always use domain accounts for any service in SharePoint, which is why this alert exists. Opening it up points to the offending culprit, the Claims to Windows token service (C2WTS). By default, it is typically set up to run with the local system account, and there’s a good reason for that. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb3.png" width="615" height="382"></a></p>
<p>The C2WTS service is used by PowerPivot (OK… Excel Services) to convert from claims based identities to Windows identities. Non claims based services (like Excel Services) need it to work, and it is required for PowerPivot to work properly. </p>
<p> It’s relatively straightforward to change the identity for this service, but whatever you do, change it using Central Administration, not through Windows Services. SharePoint “knows” about the identity and will eventually reset it if you use the Windows interface. To change the identity, simply navigate to Security-Configure Service Accounts and select the appropriate managed account – but be warned, if you do, you have more work to do – in my opinion, it’s best to leave it as Local System. </p>
<p>The problem is, the C2WTS must run with the identity of an account that is part of the Local Administrators group on the server, or as Local System. If you do decide to use a domain account, you will need to add it that group (see <a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/b61864cd-0054-4bfc-9ef5-938c11418337/">this discussion</a> for more detail). However, if you do, you’ll simply trigger another rule warning you about process identities being in the local administrators group. You just can’t win.</p>
<p>By the way, if you do decide to switch the identity to a domain user, and you decide to switch it back, it’s not so simple. The service account UI only allows the selection of managed accounts, and Local System isn’t one of them. If you do need to switch back, just run the PowerShell scripts listed in <a href="http://technet.microsoft.com/en-us/library/gg502596.aspx">this Technet article.</a></p>
<p>Either way you go, you’ll simply want to deactivate the offending rule. </p>
<h5>2. PowerPivot: The Analysis Services instance runs in tabular mode, but the configuration setting that specifies this mode is turned off.</h5>
<p>Sounds frightening. However, opening up the alert reveals the true problem.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb4.png" width="621" height="381"></a></p>
<p>The issue is actually that the rules analyzer can’t see that the tabular mode setting is set properly, so it assumes the worst, and alerts you. The reason that it can’t see it, is that the account used by health analyzer doesn’t have access to the file on the file system. That account is typically the farm account, and granting that account access to the file will prevent the alert from reappearing. </p>
<p>Or you can turn it off -&nbsp; your choice. Given that there’s little chance of something sneaking into the PowerPivot instance and switching the configuration away from tabular, you’re probably pretty safe.</p>
<h5>3. PowerPivot: MidTier process account should have ‘Full Read’ permission on all associated SPWebApplications</h5>
<p>This one matters, especially if you need to do data refresh. Don’t turn it off. The detail on this alert doesn’t really add anything, so I’m not showing it here. </p>
<p>By “MidTier” it means the process account running PowerPivot. If you used the (very good) PowerPivot Configuration Tool that ships with SQL Server 2012, and selected the defaults, the chances are that the account is your farm account. If that works for you, and your farm account has access to all of your content, well you likely aren’t getting this alert, but in my case, I don’t typically give the farm account access to the site collections.</p>
<p>In my recent case, I needed to do two things – change the account used by PowerPivot to a different account, and then grant that account access to the farm content.</p>
<p>Firstly, if you’re unsure of what account PowerPivot is using, navigate to Security-Configure Service Accounts. Your list of pools/services will vary, but once you select the one used by your service application, you’ll see it in the list</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb5.png" width="1005" height="307"></a></p>
<h6>Changing the Application Poll for PowerPivot</h6>
<p>If you need to change the account, you’ll need to navigate to your PowerPivot Service Application. From Central Administration, select Application Management-Manage Service Applications, and then <strong><em>select</em></strong> (but don’t click through!) your PPSA. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb6.png" width="835" height="344"></a></p>
<p>With the PPSA selected, click on the Properties button. Then, in the resultant dialog, select, or create the application pool that you wish to use for PowerPivot. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb7.png" width="790" height="630"></a></p>
<p>Take note of the managed account that you will be using for the application pool, as that is the account that will need full read access in the next step. </p>
<h6>Setting Permissions for the PowerPivot Application Pool</h6>
<p>You could go through your site collection and add the service account to any relevant groups, etc, but the easiest way to accomplish what is necessary is to treat it the same way that Search does the default content access account, and add it to the User Policy for the relevant SharePoint web applications. To do this, from Central Admin, navigate to Application Management-Manage Web Applications. Next, select the web application in question (again, don’t click through), and click the “User Policy” button in the ribbon.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb8.png" width="823" height="311"></a></p>
<p>If your account is not already listed, click add users and follow the prompt. When presented with the option, select “Full Read” for the permission level.When complete, you should see an entry similar to the following</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb9.png" width="531" height="354"></a></p>
<p>Repeat this process for all applications in the farm. Once this is complete, PowerPivot should have the permissions that it needs, and you should receive no further alerts of this type.</p>
<h5>4. PowerPivot: Usage data is not getting updated at the expected frequency.</h5>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/06/image_thumb10.png" width="622" height="425"></a></p>
<p>This alert may or may not be important to you, but I do recommend getting it fixed. PowerPivot maintains usage data in its service application database, and the service application can surface that data to administrators in Central Administration. To see this, simply navigate to the PowerPivot service application in Central Administration, and click through it to manage. </p>
<p>It actually uses PowerPivot workbooks to surface the information, so if PowerPivot isn’t set up correctly, you will see errors. In addition, these workbooks need to be refreshed from the original data source. This refresh is performed by a timer job, which updates the underlying workbook. This Health Analyzer job looks at the most recently updated date of the workbook, and fires the alert if it hasn’t been updated recently. This is good, because in a default installation, it won’t be.</p>
<p>There is a bug in the setup procedure that prevents the correct permissions from being applied to the service application database (see <a href="http://connect.microsoft.com/SQLServer/feedback/details/685955/no-data-in-powerpivot-management-dashboard-due-to-insufficient-rights">this discussion</a> for more detail &#8211; the bug is still there in SQL 2012 RTM). Fortunately, the fix is relatively straightforward. </p>
<p>You’ll need to run SQL Server Management Studio and connect to the SQL server hosting your PowerPivot Service Application database. Open the database, and navigate to Security-Users. You should see your service account already there (if not – add it…), then right click on it and select properties. In the resulting dialog box, select Membership. If not already selected, you’ll need to check both the db_datareader and db_datawriter roles.</p>
<p>Once that’s done, the service application will be able to use the usage data for PowerPivot. </p>
<p>However, this will not update the relevant worksheet immediately. If you want to do this, you need to navigate to the “PowerPivot Management Dashboard Processing Timer Job” (available in Central Administration via Monitoring-Review job definitions), open it up and click the “Run Now” button. This should refresh the worksheet. The dashboard will then work properly, and the alert should stop firing (at least for now..).</p>
<h5>5. PowerPivot: ADOMD.NET is not installed on a standalone WFE that is configured for central admin</h5>
<p>You will see this alert if you’re using PowerPivot for SharePoint from SQL Server 2012. ADOMD.NET is a dependency for PowerPivot and the Health Analyzer is alerting you to the fact that it is not installed. The problem is that it IS installed. What’s happening? The Health Analyzer is looking for ADOMD.NET 11.0.0.0 (the one that ships with SQL Server 2008 R2). The ADOMD.NET that ships with SQL Server 2012 is 11.0.2100.60. This of course fails the check, and fires the alert. (For more info check out <a href="http://sharepoint.nauplius.net/2012/04/sql-server-2012-powerpivot-incorrectly.html">Trevor Seward’s article</a>)</p>
<p>What’s the solution? Disable the rule. You run the risk of not noticing if the file gets removed, but I bet you’ll notice that when PowerPivot stops working.</p>
<p><em><strong>Below points added 2012-09-07</strong></em></p>
<h5></h5>
<h5></h5>
<h5>6.&nbsp; PowerPivot: Registry settings for Microsoft.AnalysisServices.ChannelTransport.dll are not valid after you install the SQL Server 2008 R2 version of the MSOLAP provider on this computer</h5>
<p>This alert will show up most commonly in larger farms – farms that have separated the shared services roles from the front end server roles, and it will show up on the front end servers. The problem&nbsp; occurs because although the PowerPivot features get deployed to all servers, the deployed assemblies do not get registered properly in the Global Assembly cache. The PowerPivot install registers them so this shouldn’t appear on the application server(s).</p>
<p>The solution is to register them manually on all of the affected front end servers.</p>
<p>To do so, open a command prompt in administration mode. Once open, navigate to:</p>
<p> C:\Windows\assembly\GAC_MSIL\Microsoft.AnalysisServices.ChannelTransport</p>
<p>Once here, there will be another subdirectory that will depend on the version of PowerPivot for SharePoint installed. The SQL 2012 version will start with 11, the 2008 version with 10, etc. Navigate into that folder. Once in that folder, run the following command:</p>
<p>C:\Windows\Microsoft.NET\Framework64\v2.0.50727\regasm.exe Microsoft.AnalysisServices.ChannelTransport.dll</p>
<p>That should be all that you need to do to fix this one. It will also let PowerPivot work correctly, which is of course a good thing.</p>
<h5>7. PowerPivot: Secondary Logon service (seclogon) is disabled</h5>
<p>The secondary login service is a built in Windows service, and it is used by PowerPivot to generate the thumbnails that appear in the PowerPivot gallery. It is set to start up manually in Windows by default. According to the <a href="http://technet.microsoft.com/en-us/library/hh230899(v=SQL.110).aspx">PowerPivot Health Rules reference</a>, this should be sufficient for correct operation. Unfortunately, in some cases it isn’t, the service never starts, the Health Analyzer thinks that the service is disabled, and the thumbnails don’t get built. </p>
<p>Fortunately, the fix for this is simple. Login to each of the servers in the farm, start the service, and set its start up options to automatic. That’s it.</p>
<p>&nbsp;</p>
<p>This represents the bulk of the Health Analyzer issues with PowerPivot that I’ve come across. If you have others, or I’m out to lunch on any of my analysis, please drop me a comment – I’m keen to hear.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/06/the-health-analyzer-and-powerpivot-for-sharepoint/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Best Practices for Using Reporting Services With SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/05/best-practices-for-using-reporting-services-with-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/05/best-practices-for-using-reporting-services-with-sharepoint/#comments</comments>
		<pubDate>Tue, 15 May 2012 18:02:21 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1380</guid>
		<description><![CDATA[At this week’s Toronto SharePoint Summit, I delivered a presentation entitled “Reporting for Duty – Best Practices for Reporting Services with SharePoint. The talk was well enough received, that I think that I’m going to do up a series of articles encompassing the topics. I’m not sure I like the term “best practices”, but these <a href='http://whitepages.unlimitedviz.com/2012/05/best-practices-for-using-reporting-services-with-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>At this week’s Toronto SharePoint Summit, I delivered a presentation entitled “Reporting for Duty – Best Practices for Reporting Services with SharePoint. The talk was well enough received, that I think that I’m going to do up a series of articles encompassing the topics. I’m not sure I like the term “best practices”, but these are some of the tips that keep me out of trouble.</p>
<p>You can <a href="http://www.slideshare.net/diverdown1964/reporting-for-duty-best-practices-for-reporting-services-with-sharepoint">download the presentation here</a>, or watch it below.</p>
<div id="__ss_12944395" style="width: 425px;"><strong style="margin: 12px 0px 4px; display: block;"><a title="Reporting For Duty - Best Practices for Reporting Services With Sharepoint" href="http://www.slideshare.net/diverdown1964/reporting-for-duty-best-practices-for-reporting-services-with-sharepoint" target="_blank">Reporting For Duty &#8211; Best Practices for Reporting Services With Sharepoint</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12944395" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/05/best-practices-for-using-reporting-services-with-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrate Reporting Services from Native Mode To SharePoint Integrated Mode</title>
		<link>http://whitepages.unlimitedviz.com/2012/04/migrate-reporting-services-from-native-mode-to-sharepoint-integrated-mode/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/04/migrate-reporting-services-from-native-mode-to-sharepoint-integrated-mode/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 15:32:57 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Integrated Mode]]></category>
		<category><![CDATA[Native Mode]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1373</guid>
		<description><![CDATA[I have previously written about upgrading and moving Reporting Services to SSRS/2008 R2/SP2010, and also on upgrading to the new Service application in 2012. Both of these deal with moving prior versions of Reporting Services running in SharePoint mode to more recent versions, also running in integrated mode. What has been lacking from Microsoft until <a href='http://whitepages.unlimitedviz.com/2012/04/migrate-reporting-services-from-native-mode-to-sharepoint-integrated-mode/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have previously written about <a href="http://whitepages.unlimitedviz.com/2011/12/upgrading-and-moving-integrated-mode-reporting-services-with-sharepoint/">upgrading and moving Reporting Services</a> to SSRS/2008 R2/SP2010, and also on <a href="http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/">upgrading to the new Service application in 2012</a>. Both of these deal with moving prior versions of Reporting Services running in SharePoint mode to more recent versions, also running in integrated mode. What has been lacking from Microsoft until now was a mechanism to help move an organization from Reporting Services in Native mode to Reporting Services in integrated mode. </p>
<p>The solution to date has been to go back to the source projects in BIDS and redeploy them to the Integrated Mode server. This of course assumes that BIDS was used for report design (not Report Builder), and that the projects are available. You also lose all server side configurations (like subscriptions) with this approach.</p>
<p>On Friday, April 20 2012 Microsoft released Version 1.0 of&nbsp; the <a href="http://www.microsoft.com/download/en/details.aspx?id=29560">Reporting Services Migration Tool</a>, which allows you to do just that. It’s a high level tool that brings all of the artifacts out of the Native mode instance, and at a later point in time, import them into the Integrated Mode instance. Ultimately, the stated aim of the tool is to allow a file system level backup of your Reporting Services Instances, be they Native or Integrated mode. </p>
<p>It can be run either by command line, or through a GUI. A snapshot of the GUI screen can be seen below.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image25.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb25.png" width="899" height="575"></a></p>
<p>The tool is definitely version 1, and has several limitations which I’ll outline below, but it does work. It does so by connecting to either the WMI provider, or the Reporting Services web services, then extracting all of the available content, and then building a PowerShell script which can be run to place the backed up content in a SharePoint document library that has been properly configured to support the Reporting Services content types. </p>
<p>Operation of the tool is relatively straightforward, and is adequately documented on the download page, so I won’t go through a step by step, but I do want to share a few observations. </p>
<p>Firstly, <strong>migration is from Native Mode to Integrated Mode only</strong>. The stated objective of this tool is to support both modes on either end of the migration path, but for now it’s a one way trip. For the moment, it does limit its ability to perform as a backup tool. However, if you examine your output folder, you’ll find all of your report files, connection files (etc), so if you’ve built your reports with BIDS, and lost the original source project, it’s a great way to get them out of the Reporting Services database.</p>
<p><strike>I have also been unable to get the WMI provider to work at all. I’ve tested with both SSRS 2008R2 and SSRS 2012 Native mode sources, but the tool can’t seem to find the WMI instance. The tool still works in this configuration, but it will not back up passwords or history snapshots. I’ll update this post if/when a solution to this can be found.</strike></p>
<p><strong>UPDATE</strong> – Thanks to Tristan in <a href="http://social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/thread/a03fd3b2-e75b-4868-af8e-eb2c87338b38">this MSDN forum thread</a> – The WMI provider is working. I have added the paragraph and image below.</p>
<p>The Instance Name field is mislabelled. It should be SERVER\Instance for non default instances, or just SERVER for default instances. Unfortunately the nowhere in the help is the requirement for SERVERNAME mentioned. Essentially, you should treat this field the same as you would the Server field when connecting via Management Studio. The image above has been updated to show the correct value for Instance Name (In this case, although not necessary, I have included the name of the default instance).</p>
<p>As outlined on the download page, the tool does not back up Reporting Services security information, or role information – which makes sense when moving to a new security model. Also, linked reports aren’t supported in Integrated mode, so they’re not backed up at all. </p>
<p>For a complete list of constraints and instructions, visit the <a href="http://www.microsoft.com/download/en/details.aspx?id=29560#overview">download page</a>. </p>
<p>For it’s limitations, this tool is a very welcome addition to the toolkit. Migrating from Native Mode to SharePoint Integrated mode Reporting Services no longer&nbsp; needs to be painful.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/04/migrate-reporting-services-from-native-mode-to-sharepoint-integrated-mode/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fixing Access Errors When Creating a BISM Connection for PowerView</title>
		<link>http://whitepages.unlimitedviz.com/2012/04/fixing-access-errors-when-creating-a-bism-connection-for-powerview/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/04/fixing-access-errors-when-creating-a-bism-connection-for-powerview/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 18:00:25 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Excel Services]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[PowerView]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[VertiPaq]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1368</guid>
		<description><![CDATA[PowerView is one of the shiny new features that are available to SharePoint users with the implementation od SQL Server 2012. To be sure, you don’t need to convert your database engine over to SQL Server 2012, but you do need to install PowerPivot for SharePoint, and/or the new Reporting Services service application for SharePoint, <a href='http://whitepages.unlimitedviz.com/2012/04/fixing-access-errors-when-creating-a-bism-connection-for-powerview/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>PowerView is one of the shiny new features that are available to SharePoint users with the implementation od SQL Server 2012. To be sure, you don’t need to convert your database engine over to SQL Server 2012, but you do need to install PowerPivot for SharePoint, and/or the new Reporting Services service application for SharePoint, both only available in SQL Server 2012. </p>
<p>PowerView requires a connection to an xVelocity Analysis Services engine (formerly known as tabular mode or VertiPaq), or to an Excel spreadsheet with an embedded PowerPivot model in order to function. When connecting to the Analysis Services engine, there are a couple of permissions that need to be set on that engine that you should be aware of. </p>
<p>If you wish to connect to the Analysis Services engine, you have two choices. Firstly, you can use a Reporting Services connection (.rds) and select “Microsoft BI Semantic Model for PowerView” as the Data Source type. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image19.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb19.png" width="703" height="526"></a></p>
<p>Once this is done, it can be used to create PowerView reports. This approach works without any additional configuration. The reason that this is so is that Reporting Services takes advantage of the EFFECTIVEUSERNAME connection property for user impersonation. This is something that BISM does as well. When using an RS connection, the stored credential (in this case) is used to establish a connection with the data source, and then all queries are executed with the identity of the requesting end user (provided that the “Set execution context…” option is not selected. </p>
<p>For further reading on how Reporting Services uses the EFFECTIVEUSERNAME property, check <a href="http://www.artisconsulting.com/blogs/greggalloway/Lists/Posts/Post.aspx?ID=18">this article</a>. Since BISM uses the same property, it’s highly relevant to PowerView.</p>
<p>However, the problem arises if we choose the second option, and want to work with a BISM file directly. If we want to use a basic BISM file, we first add it by creating a document with the the BI Semantic Model content type.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image20.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb20.png" width="244" height="215"></a></p>
<p>However, the connection form is far simpler than the one used to configure the Reporting Services connection. You’ll notice immediately that there is no option for storing credentials. For a server connection, all that is necessary is a name for the connection, the name of the server, and the name of the database.</p>
<p>Unfortunately, if you haven’t gotten everything configured just so and you click ok, you’ll receive the error “Cannot connect to the server or database”.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image21.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb21.png" width="723" height="565"></a></p>
<p>This is due to the fact that when the server performs the validation check against the Analysis Services server, it uses a system account to first connect to the AS server. This is documented in <a href="http://connect.microsoft.com/SQLServer/feedback/details/709682/unable-to-verifty-bi-semantic-model-connection-to-tabular-model">this Connect forum entry</a>. The corrective action is to add the account to the Analysis Services Server Administrator role:</p>
<p>&nbsp;<a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image22.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb22.png" width="703" height="633"></a></p>
<p>What account needs to be added? The forum article I referenced above indicates the PowerPivot service account, which is now listed in SharePoint as the “SQL Server Analysis Services” account. However, my testing has indicated that the farm account is the one that is used to verify connections with Analysis Services, so that’s what I’m recommending here. This is only used for validation purposes, and to get around this problem without adding the account to the administrators role, you can simply select the “Save the link file without connection validation” option. This may however be unsettling to users. </p>
<p>Once you’ve created your BISM connection, you should then be able to use it to launch Excel, or create a PowerView report. When you launch Excel, the BISM is referenced by an Excel connection, which then connects directly to the data source with the credentials of the end user. No problem. However, if you attempt to create a PowerView&nbsp; report, you may find yourself faced with “An error occurred while loading the model for the item or data source”.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image23.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb23.png" width="458" height="414"></a></p>
<p>In the body, it misleadingly leads you to believe that it’s the end user (btidwell in this case) that doesn’t have access. What should happen is that, as explained above, the Reporting Services service makes a connection with the AS server, and then uses the EffectiveUserName property to impersonate the user. For more detail on how BISM authenticates to back end data sources, see <a href="http://msdn.microsoft.com/en-us/library/gg471575.aspx">this MSDN article</a>.</p>
<p>If you’re seeing this error, the chances are that the service account that is being used for Reporting Services doesn’t have access to the Analysis Services database. </p>
<p>As in the verification step above – granting the account access to the specific database doesn’t do it, you need to add the service account that is used by Reporting services to the Server Administrators role. Once you’ve done that, PowerView should behave smoothly. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/04/fixing-access-errors-when-creating-a-bism-connection-for-powerview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How To Automate SharePoint Report Creation With SSIS and SSRS</title>
		<link>http://whitepages.unlimitedviz.com/2012/04/how-to-automate-sharepoint-report-creation-with-ssis-and-ssrs/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/04/how-to-automate-sharepoint-report-creation-with-ssis-and-ssrs/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 18:55:55 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1353</guid>
		<description><![CDATA[If you’ve used SQL Server Reporting Services to any great extent, you’ve likely encountered the need to generate reports automatically. This requirement may be for for delivery purposes, archival purposes, or simply to reduce report rendering wait times for the end users. SSRS supports this requirement out of the box &#8211; a report administrator can <a href='http://whitepages.unlimitedviz.com/2012/04/how-to-automate-sharepoint-report-creation-with-ssis-and-ssrs/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>If you’ve used SQL Server Reporting Services to any great extent, you’ve likely encountered the need to generate reports automatically. This requirement may be for for delivery purposes, archival purposes, or simply to reduce report rendering wait times for the end users. SSRS supports this requirement out of the box &#8211; a report administrator can set up a subscription, enter the required parameters, and the report will be generated and delivered on that schedule. </p>
<p>This approach is highly declarative, and puts the onus of subscription creation on the report administrator. To this end SSRS also supports data driven subscriptions, which allow the subscriptions to be looked up from a SQL table. How that table is maintained is up to the individual organization, but it does allow a measure of dynamism. With SQL Server Reporting Services 2012, this feature is made much more user friendly through the use of User Driven Subscriptions. </p>
<p>The down side to any of this dynamic behaviour is that in every case, it requires the Enterprise version of SQL Server (with SQL Server 2012, the BI SKU also has this capability). In addition, with SQL Server versions prior to 2012, the capability is somewhat less than user friendly. </p>
<p>In this post, I will outline a methodology that will allow you to provide SharePoint list based report subscriptions that will allow users to subscribe to published reports, and have them published to a SharePoint document library. The approach is not restricted to SharePoint – indeed it could be used with native mode to read through a list of possible parameter values, and email the resulting reports, or store them in a file system, but the SharePoint example is the one that I will be using below. </p>
<p>I should also point out that although the examples below use SQL Server 2012, the approach should work with versions back to SQL Server 2005. </p>
<p>The primary components of this solution are a SharePoint list that will be read to determine what reports to render (the subscription list), a SQL Server Integration Services (SSIS) package that will read through the subscription list and use the values therein to render the report, and finally, a SharePoint document library that will house the reports. Of course, we also need a report to be rendered, and in our case, this report is also stored in a SharePoint document library, as Reporting Services is running in SharePoint Integrated mode. </p>
<p>The good news, is that all of the constituent portions of this solution are either downloadable for free, or come with SQL server in any other edition besides Express. Therefore, the chances are that if you have SharePoint, then you already have all of the tools that you need.</p>
<h6>Step 1 – Obtain the SharePoint List Source and Destination Project</h6>
<p>Out of the box, SSIS doesn’t know how to talk to SharePoint data. Fortunately, there’s an excellent Codeplex project that adds the required capability. If you haven’t already done so, download the <a href="http://sqlsrvintegrationsrv.codeplex.com/releases/view/17652">SharePoint List Source and Destination</a> project from Codeplex. You will find a <a href="http://dataqueen.unlimitedviz.com/2011/06/how-to-use-a-sharepoint-list-as-a-data-source-in-your-ssis-package/">good blog post on working with this tool here</a>. Once installed, you will be ready to build the solution. Of course, this step is only necessary if you want to use a SharePoint list as a subscription source.</p>
<h6>Step 2 – Create your subscription and report library</h6>
<p>In this solution, we will allow a user to enter a subscription request in our subscription list. The user can specify the URL of the report to be run, the parameters for the report, the file type that is to be produced, and the library where the report is to be stored. In order to support this, we’ll need at least one document library where the produced reports will be stored, and one custom list. </p>
<p>Create your document library, and note its URL. In our case below, our report library will be at <a title="http://home.nautilusinc.local/sites/nmarine/IT/Sandbox/ExpenseReportOutput" href="http://home.nautilusinc.local/sites/nmarine/IT/Sandbox/ExpenseReportOutput">http://home.nautilusinc.local/sites/nmarine/IT/Sandbox/ExpenseReportOutput</a>. This URL will be used below. In this library, we don’t need to add any custom metadata properties, but you certainly may, should you wish to do so. </p>
<p>Next, create a custom list. In our case, the list will be named “Subscriptions” and will be created in the&nbsp; “<a title="http://home.nautilusinc.local/sites/nmarine/IT/Sandbox" href="http://home.nautilusinc.local/sites/nmarine/IT/Sandbox">http://home.nautilusinc.local/sites/nmarine/IT/Sandbox</a>” site. Where you create this list is not important, but what is important is the <strong><em>display</em></strong> name of the list, and the URL of its parent site.</p>
<p>For our use case, we want the user to be able to specify the Report to be rendered, the destination to place the rendered reports, the parameters to use for the rendered report, and the file type of the rendered report. To that end, we will add 4 additional columns to the list, as shown below.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb.png" width="687" height="271"></a></p>
<p>You will also note that the “Title:” field has been renamed to &#8220;Subscription” on this list. This is purely for cosmetic purposes. Three of the new fields are simply single line text fields, while the Format field is choice. In our example, the options available for the choice field are WORDOPENXML, PDF, EXCELOPENXML, IMAGE, and NULL. You can allow any of the possible output types that Reporting services supports. I have outlined these types previously in <a href="http://whitepages.unlimitedviz.com/2011/11/file-formats-for-the-sql-server-2012-denali-reporting-services-web-services-renderer/">another post here</a>. </p>
<p>While it is outside the scope of this article, you will likely want to modify the form to display more user friendly names for the options than “WORDOPENXML”, etc, and automatically calculate the value for the subscription field. InfoPath would be an excellent tool to do this with, and there are other alternatives as well. For our purposes, we will work with the form as is. </p>
<p>Once done, you will want to add a couple of subscriptions. In our case, we’re working on a very simple report as shown below:<br /><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image1.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb1.png" width="930" height="454"></a></p>
<p>The report takes a single parameter, employee name, and renders the report filtered by that parameter. The subscription list item that we’ll create will look something like below:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb2.png" width="650" height="238"></a></p>
<p>The value for ReportURL is the full URL path to the report definition, in our case it is <a title="http://home.nautilusinc.local/sites/nmarine/finance/ExpenseReports/Expenses.rdl" href="http://home.nautilusinc.local/sites/nmarine/finance/ReportsMarch22/ExpenseReports.rdl">http://home.nautilusinc.local/sites/nmarine/finance/ReportsMarch22/ExpenseReports.rdl</a> (you should be able to enter the URL into a browser and see the report), and the destination library is the full URL path to the destination library, in our case <a title="http://home.nautilusinc.local/sites/nmarine/IT/Sandbox/ExpenseReportOutput" href="http://home.nautilusinc.local/sites/nmarine/IT/Sandbox/ExpenseReportOutput">http://home.nautilusinc.local/sites/nmarine/IT/Sandbox/ExpenseReportOutput</a>. </p>
<p>After adding two subscriptions, our subscription list appears as follows:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb3.png" width="608" height="179"></a></p>
<p>When our job runs (defined below) it will iterate through this list and create a corresponding PDF file and Word file in the destination library. Next, we create the SSIS package that will actually do the work. </p>
<h6>Step 3 – Create a Reporting Services Web Service Proxy Class</h6>
<p>In order to render the Reporting Services reports, we will need to call the Reporting Services web service from a SSIS Script task. In order to do that, we’ll need to use a proxy class. Luckily, we can just generate one using the WSDL.EXE generation tool available from <a href="http://www.microsoft.com/download/en/details.aspx?id=3138">the .Net 3.5 SDK</a>. You run the tool with the following options:</p>
<p>wsdl.exe /language:[language choice] /out:ReportService.[language choice] <a href="http://[SPSiteURL]/_vti_bin/ReportServer/ReportService.asmx?WSDL">http://[<em>SPSiteURL</em>]/_vti_bin/ReportServer/ReportService.asmx?WSDL</a></p>
<p>where:</p>
<ul>
<li>[language choice] = VB or CS
<li>[SPSiteURL] = URL of the SharePoint Site Collection</li>
</ul>
<p>In our case, the precise command is:</p>
<p><font size="1">wsdl.exe /language:VB /out:ReportService.vb </font><a href="http://home.nautilusinc.local/sites/nmarine/_vti_bin/ReportServer/ReportExecution2005.asmx?WSDL"><font size="1">http://home.nautilusinc.local/sites/nmarine/_vti_bin/ReportServer/ReportExecution2005.asmx?WSDL</font></a></p>
<p>If you don’t want to build your own, you can <a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/ReportService.zip">download the one that I created for this project</a> (it’s Visual Basic). It was built using SSRS 2012, but should be backward compatible. Also, don’t forget to change the embedded server URLs.</p>
<p>Once you have the output file, make note of its location – we’ll use it below when creating the script task in SSIS.</p>
<h6>Step 4 – Build the SSIS Package</h6>
<p>I’m going to assume that most people reading this have little or no exposure to SSIS, so I’ll try to be as detailed as possible. You’ll need to start SQL Server Data Tools (if you’re using SQL Server 2012) or Business Intelligence Development Studio (for SQL versions prior to 2012). </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb4.png" width="255" height="366"></a></p>
<p>You may notice that is has a striking resemblance to Visual Studio 2010. That’s because it is VS2010.&nbsp; Select “New Project” then in the “Business Intelligence” section, select “integration Services Project”. Give the new project a name and location and click OK.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb5.png" width="1055" height="833"></a></p>
<p>Once created, we’ll need to create a SharePoint List connection manager. From the Solution explorer, right click on “Connection Managers” and select “New Connection Manager”. Scroll down on the window, select “SPCRED” and click Add.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image6.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb6.png" width="964" height="634"></a></p>
<p>You will only see SPCRED if you completed Step 1 above. The Connection Manager will then prompt for a name and a set of credentials. Provide the name, and also provide it with an account that has access to the subscription list. If the SSIS service account has access, you can select “Use Credentials of Executing Process”, otherwise provide a service account with access. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image7.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb7.png" width="449" height="343"></a></p>
<p>We’ll be working within a Data flow task, so drag a Data Flow Task onto the design canvas.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image8.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb8.png" width="703" height="429"></a></p>
<p>Next, double click on the data flow task, or click on the Data Flow tab to bring up the Data Flow Task Editor. From there, drag a “SharePoint List Source” action onto the canvas. (Note: if the SharePoint List Source does not appear, there may have been a problem installing it. Consult the <a href="http://sqlsrvintegrationsrv.codeplex.com/wikipage?title=SharePoint%20List%20Adapters&amp;referringTitle=Documentation">documentation for the SharePoint List Source and Destination project</a> for troubleshooting steps.) Double Click on the List Source action to configure it. The first item to configure is the Connection Manager. Simply select it from the (hidden!!! ) drop down list. Click on the area beside “SharePoint Credential Conn…” to reveal the dropdown.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image9.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb9.png" width="1095" height="490"></a></p>
<p>Next, click on the “ Component Properties” tab. Here, you perform the bulk of the action configuration. There are many options to choose from, but the ones that we’re concerned with here are SiteUrl and SiteListName. SiteURL is the absolute URL of the site that will contain our list, and SiteListName is the <em><strong>display</strong></em> name of the list. I stress display name as this is different than working with most other APIs for SharePoint, which tend to use the internal name. Also – it’s relatively easy for users to change the display name of the list. Doing so will break the package until it is reconfigured.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image10.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb10.png" width="798" height="722"></a></p>
<p>Next, drag a Script Component onto the canvas, below the data source. If prompted, choose “Transformation” for the script type. Next, connect the two actions by dragging the arrow from the&nbsp; SharePoint List Source to the Script Component.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image11.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb11.png" width="631" height="368"></a></p>
<p>Next, double click on the script component to bring up the script component editor. From the left, select Input Columns and select all of the columns to use in this script. In our case, we’ll be working with the columns shown below:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image12.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb12.png" width="827" height="716"></a></p>
<p>Next, click on the Script section, choose the language that you want to work with, then click the “Edit Script” button.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image13.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb13.png" width="833" height="722"></a></p>
<p>Without getting into too much detail of how the script action works, what we are going to do is to add code that will run for each row of data that flows through the transformation. In our case, that will be for each configuration item. We’re going to use the values of the columns of each configuration item to render the reports. Therefore, the code that we will write will go into the “Input0_ProcessInputRow” sub. </p>
<p>Before we can do that however, we need to add some supporting items. Firstly, since we’ll be working with web services, we’ll need to reference the .Net System.Web.Services library. Right click on the project name in solution explorer, and select Add Reference. From the .Net tab, select System.Web.Services, and click OK.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image14.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb14.png" width="924" height="560"></a></p>
<p>Next, expand the “Imports” section and import the System.IO and the System.Net&nbsp; namespace.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image15.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb15.png" width="447" height="171"></a></p>
<p>We now need to add our Reporting Services proxy class. The best way to do this is to first create a new class. Right click on the project in solution explorer, and select Add – Class.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image16.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb16.png" width="811" height="415"></a></p>
<p>Next, give the class a name. I like to match the name to the main class embedded, so the new name is ReportExecutionService.vb. Next, using Notepad, open the file that you created or downloaded in Step 3 above. Select all text, copy it into the clipboard, and then paste it into the newly created class, overwriting anything already there. Once done, save and close the class.</p>
<p>Next, I add a helper function to the script that helps to deal with URLs missing an ending slash. You can add it immediately above the “Input0_ProcessInputRow” sub. The code is below:</p>
<pre class="csharpcode"> <span class="kwrd">Private</span> <span class="kwrd">Function</span> CheckSlash(<span class="kwrd">ByVal</span> input <span class="kwrd">As</span> <span class="kwrd">String</span>) <span class="kwrd">As</span> <span class="kwrd">String</span>
        <span class="kwrd">If</span> input.EndsWith(Path.DirectorySeparatorChar) <span class="kwrd">Then</span>
            <span class="kwrd">Return</span> input
        <span class="kwrd">Else</span>
            <span class="kwrd">Return</span> input &amp; Path.DirectorySeparatorChar
        <span class="kwrd">End</span> <span class="kwrd">If</span>
    <span class="kwrd">End</span> Function</pre>
<p>As we saw below, the output format parameters aren’t the friendliest, and we will need to specify the extension for the output file. To allow this, I also wrote a small helper function to turn output format values into file extensions, and include it below. This also needs to be added to the script.</p>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:af2cf516-09d8-4578-9fa5-b81aeb4bb792" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background-color: #ffffff; overflow: auto; padding: 2px 5px; white-space: nowrap"><span style="color:#0000ff">Private</span> <span style="color:#0000ff">Function</span> GetExt(format <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span>) <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span><br />
        <span style="color:#0000ff">Select</span> <span style="color:#0000ff">Case</span> format<br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;XML&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;xml&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;Null&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#0000ff">Nothing</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;CSV&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;csv&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;ATOM&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;atom&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;PDF&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;pdf&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;HTML4.0&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;htm&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;RGDI&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;gdi&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;MHTML&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;mhtml&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;EXCEL&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;xls&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;EXCELOPENXML&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;xlsx&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;RPL&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;rpl&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;IMAGE&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;tiff&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;WORD&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;doc&quot;</span><br />
            <span style="color:#0000ff">Case</span> <span style="color:#0000ff">Is</span> = <span style="color:#a31515">&quot;WORDOPENXML&quot;</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#a31515">&quot;docx&quot;</span><br />
            <span style="color:#0000ff">Case Else</span><br />
                <span style="color:#0000ff">Return</span> <span style="color:#0000ff">Nothing</span><br />
        <span style="color:#0000ff">End</span> <span style="color:#0000ff">Select</span><br />
    <span style="color:#0000ff">End</span> <span style="color:#0000ff">Function</span></div>
</div>
</div>
<p>&nbsp;</p>
<p>Finally, we’re ready to add code to the “Input0_ProcessInputRow” sub. The complete code listing is below:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3d7bc3b6-b0d6-4e4a-94a5-b5a2ecb704eb" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
<div style="background: #ddd; overflow: auto">
<ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px; white-space: nowrap">
<li><span style="color:#0000ff">Public</span> <span style="color:#0000ff">Overrides</span> <span style="color:#0000ff">Sub</span> Input0_ProcessInputRow(<span style="color:#0000ff">ByVal</span> Row <span style="color:#0000ff">As</span> <span style="color:#2b91af">Input0Buffer</span>)</li>
<li>      <span style="color:#008000">&#39;</span></li>
<li>      <span style="color:#0000ff">Dim</span> rs <span style="color:#0000ff">As</span> <span style="color:#0000ff">New</span> <span style="color:#2b91af">ReportExecutionService</span></li>
<li>      rs.Url = <span style="color:#a31515">&quot;http://home.nautilusinc.local/sites/nmarine/_vti_bin/ReportServer/ReportExecution2005.asmx&quot;</span></li>
<li>      rs.Credentials = System.Net.<span style="color:#2b91af">CredentialCache</span>.DefaultCredentials</li>
<li>      <span style="color:#0000ff">Dim</span> report <span style="color:#0000ff">As</span> <span style="color:#0000ff">Byte</span>() = <span style="color:#0000ff">Nothing</span></li>
<li>      <span style="color:#0000ff">Dim</span> deviceinfo <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span> = <span style="color:#0000ff">Nothing</span></li>
<li>&nbsp;</li>
<li>      <span style="color:#0000ff">Dim</span> ParameterPairs <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span>() = Row.Parameters.Split(<span style="color:#a31515">&quot;;&quot;</span>)</li>
<li>      <span style="color:#0000ff">Dim</span> parameters <span style="color:#0000ff">As</span> <span style="color:#2b91af">ParameterValue</span>() = <span style="color:#0000ff">New</span> <span style="color:#2b91af">ParameterValue</span>(ParameterPairs.Length &#8211; 1) {}</li>
<li>      <span style="color:#0000ff">Dim</span> CurrentPair <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span>()</li>
<li>      <span style="color:#0000ff">For</span> i <span style="color:#0000ff">As</span> <span style="color:#0000ff">Integer</span> = 0 <span style="color:#0000ff">To</span> ParameterPairs.Length &#8211; 1</li>
<li>          CurrentPair = ParameterPairs(i).Split(<span style="color:#a31515">&quot;=&quot;</span>)</li>
<li>          parameters(i) = <span style="color:#0000ff">New</span> <span style="color:#2b91af">ParameterValue</span></li>
<li>          parameters(i).Name = CurrentPair(0)</li>
<li>          parameters(i).Value = CurrentPair(1)</li>
<li>      <span style="color:#0000ff">Next</span></li>
<li>&nbsp;</li>
<li>      <span style="color:#0000ff">Dim</span> historyID <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span> = <span style="color:#0000ff">Nothing</span></li>
<li>      <span style="color:#0000ff">Dim</span> credentials <span style="color:#0000ff">As</span> <span style="color:#2b91af">DataSourceCredentials</span>() = <span style="color:#0000ff">Nothing</span></li>
<li>      <span style="color:#0000ff">Dim</span> showHideToggle <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span> = <span style="color:#0000ff">Nothing</span></li>
<li>      <span style="color:#0000ff">Dim</span> extension <span style="color:#0000ff">As</span> <span style="color:#2b91af">[String]</span> = <span style="color:#0000ff">String</span>.Empty</li>
<li>      <span style="color:#0000ff">Dim</span> encoding <span style="color:#0000ff">As</span> <span style="color:#2b91af">[String]</span> = <span style="color:#0000ff">String</span>.Empty</li>
<li>      <span style="color:#0000ff">Dim</span> mimeType <span style="color:#0000ff">As</span> <span style="color:#2b91af">[String]</span> = <span style="color:#0000ff">String</span>.Empty</li>
<li>      <span style="color:#0000ff">Dim</span> warnings <span style="color:#0000ff">As</span> <span style="color:#2b91af">Warning</span>() = <span style="color:#0000ff">Nothing</span></li>
<li>      <span style="color:#0000ff">Dim</span> reportHistoryParameters <span style="color:#0000ff">As</span> <span style="color:#2b91af">ParameterValue</span>() = <span style="color:#0000ff">Nothing</span></li>
<li>&nbsp;</li>
<li>      <span style="color:#0000ff">Dim</span> streamIDs <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span>() = <span style="color:#0000ff">Nothing</span></li>
<li>      <span style="color:#0000ff">Dim</span> execInfo <span style="color:#0000ff">As</span> <span style="color:#0000ff">New</span> <span style="color:#2b91af">ExecutionInfo</span>()</li>
<li>      <span style="color:#0000ff">Dim</span> execHeader <span style="color:#0000ff">As</span> <span style="color:#0000ff">New</span> <span style="color:#2b91af">ExecutionHeader</span>()</li>
<li>&nbsp;</li>
<li>      rs.ExecutionHeaderValue = execHeader</li>
<li>      execInfo = rs.LoadReport(Row.ReportURL, historyID)</li>
<li>      rs.SetExecutionParameters(parameters, <span style="color:#a31515">&quot;en-us&quot;</span>)</li>
<li>      <span style="color:#0000ff">Dim</span> destUrl <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span> = Row.DestinationLibrary</li>
<li>      <span style="color:#0000ff">Dim</span> destinationUrl <span style="color:#0000ff">As</span> <span style="color:#0000ff">String</span> = CheckSlash(destUrl) + Row.SubscriptionTitle + <span style="color:#a31515">&quot;.&quot;</span> + GetExt(Row.Format)</li>
<li>      <span style="color:#0000ff">Dim</span> r <span style="color:#0000ff">As</span> <span style="color:#0000ff">Byte</span>()</li>
<li>&nbsp;</li>
<li>      <span style="color:#0000ff">Try</span></li>
<li>          report = rs.Render(Row.Format, deviceinfo, extension, mimeType, encoding, warnings, streamIDs)</li>
<li>          <span style="color:#0000ff">Dim</span> m_WC <span style="color:#0000ff">As</span> <span style="color:#2b91af">WebClient</span> = <span style="color:#0000ff">New</span> <span style="color:#2b91af">WebClient</span></li>
<li>          m_WC.Credentials = System.Net.<span style="color:#2b91af">CredentialCache</span>.DefaultCredentials</li>
<li>          r = m_WC.UploadData(destinationUrl, <span style="color:#a31515">&quot;PUT&quot;</span>, report)</li>
<li>      <span style="color:#0000ff">Catch</span> ex <span style="color:#0000ff">As</span> <span style="color:#2b91af">Exception</span></li>
<li>&nbsp;</li>
<li>      <span style="color:#0000ff">End</span> <span style="color:#0000ff">Try</span></li>
<li>  <span style="color:#0000ff">End</span> <span style="color:#0000ff">Sub</span></li>
</ol>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>Again, without getting into too much detail, some explanation of the above code is in order. </p>
<p>Lines 3-5 initialize the web service, assign it a URL (Don’t forget to change this for your environment!!) and assign it the credentials to use when calling the web service. </p>
<p>When this&nbsp; sub is called by SSIS, it is passed a row object. The row object contains column objects for each column that is used by the script (this was configured above). Therefore, to get the value for any given column, you simply need to refer to it as row.ColumnName. In our case, to get the value of the Parameters column, you use row.Parameters. Lines 9 through 17 get the value of the parameters column, split the value into an array of string objects using a semicolon as a value delimiter, then for each of these objects, separates them into name/value pairs using the equals sign as a delimiter, and them finally assigns them to a Reporting Services parameter collection. </p>
<p>Using this approach, we can use a single field to store all of the parameters for a report, and any report can have any number of parameters.</p>
<p>Lines 19-32 are&nbsp; primarily used for initialization. Line 33 loads the report specified in the subscription (by calling row.ReportURL). Line 34, sets the parameters, and lines 35-36 set the destination variables. </p>
<p>Finally, Line 40 calls the web service to actually render the report into a byte stream, and line 43 uses the .Net WebClient object to upload the file directly into SharePoint. In this example, we don’t actually add any metadata to the SharePoint library, but if this was required, you could use the techniques outlined in <a href="http://www.codeproject.com/Articles/19717/Uploading-files-to-the-SharePoint-Document-Library">this post</a>. We are now ready to test the process.</p>
<h6>Step 5 – Run the Package</h6>
<p>Close the Script editor window and click the OK button. If all is well, your Script Component action should show no errors. When ready, click the run button to test your package. If all is well, after a short compilation period, you should see that 2 records were successfully read from the subscription list, an both steps should show green. If things don’t go well, the error messages are pretty good….</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image17.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb17.png" width="760" height="391"></a></p>
<p>Navigating to the destination library, we see the two requested reports. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image18.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/04/image_thumb18.png" width="785" height="452"></a></p>
<h6>Next Steps</h6>
<p>Obviously, every time that this package runs, the reports will be overwritten with the new report. This may be desired behaviour, but if not, you may want to turn on version control (each version will be stored as a version) or modify the script to change the file name on each run (date stamping is a common technique).</p>
<p>In addition, you will want the package to be run automatically without human intervention. To do this, you’ll want to deploy it to a SQL Server running SSIS , and to schedule it to run as an agent job. There is a wealth of information online for how to do that.</p>
<h6>Conclusion</h6>
<p>The example provided above covers a single use case, but with minor adjustment could be used to automate all sorts of reporting tasks. A common one would be to use the NULL renderer to refresh report caches on a server. If you find any unique uses of this approach, I would love to hear about it. Please post a comment!</p>
<h6>Credits</h6>
<p>In preparing this post, I found the following articles to be useful:</p>
<p><a href="http://vsteamsystemcentral.com/cs21/blogs/steve_fibich/archive/2009/04/27/ssis-and-reporting-services-web-services.aspx">SSIS and Reporting Services Web Services</a></p>
<p><a href="http://weblogs.sqlteam.com/randyp/archive/2010/02/16/61102.aspx">Uploading documents to WSS (Windows Sharepoint Services) using SSIS</a></p>
<p><a href="http://social.msdn.microsoft.com/Forums/en-US/sqldenreportingservices/thread/05ea6525-dc32-408a-9b46-d2330e8ad4ad">SharePoint reporting services SOAP endpoint in CTP3</a></p>
<p><a href="http://ktskumar.wordpress.com/2009/03/03/upload-document-from-local-machine-to-sharepoint-library/">Upload document from Local Machine to SharePoint Library using WebService</a></p>
<p><a href="http://www.codeproject.com/Articles/19717/Uploading-files-to-the-SharePoint-Document-Library">Uploading files to the SharePoint Document Library and updating any metadata columns</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/04/how-to-automate-sharepoint-report-creation-with-ssis-and-ssrs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How To Get A Comprehensive List of all E-Mail Enabled Libraries in SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2012/03/how-to-get-a-comprehensive-list-of-all-e-mail-enabled-libraries-in-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/03/how-to-get-a-comprehensive-list-of-all-e-mail-enabled-libraries-in-sharepoint/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 14:58:18 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[DBAttach]]></category>
		<category><![CDATA[E-Mail Enabled]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1309</guid>
		<description><![CDATA[I recently completed a multi-farm consolidation and upgrade from SharePoint 2007 to 2010 for a customer, collapsing three farms into one. The approach was to create a new farm, and to individually do dbattach upgrades of each of the 2007 databases into separate SharePoint applications. Everything went well, including Reporting Services subscriptions, but we ran <a href='http://whitepages.unlimitedviz.com/2012/03/how-to-get-a-comprehensive-list-of-all-e-mail-enabled-libraries-in-sharepoint/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I recently completed a multi-farm consolidation and upgrade from SharePoint 2007 to 2010 for a customer, collapsing three farms into one. The approach was to create a new farm, and to individually do dbattach upgrades of each of the 2007 databases into separate SharePoint applications. Everything went well, including Reporting Services subscriptions, but we ran into a problem with incoming email. </p>
<p>The problem is that while all of the incoming email settings for a library are properly migrated when doing a dbattach upgrade, all of the aliases are stored in the Farm Database (in the EmailEnabledLists table, if you’re interested in looking), and it remains empty. The resultant effect is that you inspect the library properties, and all looks good, and email is properly being delivered to the drop folder. Unfortunately, the incoming email service timer job is looking for emails that correspond to the entries in the EMailEnabledLists table, and there are none. </p>
<p>The solution is to simply turn off incoming email for the affected lists, and then turn it back on. A bit cumbersome maybe, but it does work. However, in our case, our customer had over 100 libraries and wasn’t sure where they all were. A bit of hunting around found a couple of ways to get a list of email enabled libraries through code (<a href="http://salaudeen.blogspot.ca/2011/06/find-all-incoming-e-mail-enabled.html">here</a> and <a href="http://social.technet.microsoft.com/Forums/da-DK/sharepointgeneral/thread/457387e3-05af-425c-9de4-5aa15d673a19">here</a>).</p>
<p>However, I don’t like writing code if I don’t have to, and decided to have a look in the content databases. Don’t forget the first rule of playing around in the SharePoint content databases, which is <strong>don’t</strong>. However, reading from them isn’t so bad, and ultimately solves our problem. Enough information is in fact in there to construct a simple query:</p>
<pre class="csharpcode"><span class="kwrd">SELECT</span>
     Webs.FullUrl <span class="kwrd">As</span> LibraryURL,
     AllLists.tp_Title <span class="kwrd">As</span> LibraryTitle,
     AllLists.tp_EmailAlias <span class="kwrd">As</span> emailAlias
<span class="kwrd">FROM</span>
     AllLists
<span class="kwrd">INNER</span> <span class="kwrd">JOIN</span>
     webs <span class="kwrd">on</span> AllLists.tp_WebID = Webs.Id
<span class="kwrd">WHERE</span>
    AllLists.tp_EmailAlias <span class="kwrd">IS</span> <span class="kwrd">NOT</span> NULL</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<div>Opening up SQL Server Management Studio, and running this query on each content database will give you a comprehensive list of all e-mail enabled document libraries. </div>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/03/how-to-get-a-comprehensive-list-of-all-e-mail-enabled-libraries-in-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading SQL Server Reporting Services to 2012 In SharePoint Integrated Mode</title>
		<link>http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 15:09:37 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1303</guid>
		<description><![CDATA[That title could actually be longer…. SQL Server 2012 brings with it a number of key Business Intelligence features that apply directly to SharePoint environments. One of the major improvements is the way that Reporting Services installs. Prior to version 2012, when running in SharePoint integrated mode, it installed along side of SharePoint, and connected <a href='http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>That title could actually be longer….</p>
<p>SQL Server 2012 brings with it a number of key Business Intelligence features that apply directly to SharePoint environments. One of the major improvements is the way that Reporting Services installs. Prior to version 2012, when running in SharePoint integrated mode, it installed along side of SharePoint, and connected through an add-in. With 2012, it is now a full SharePoint Service application, with all of the associated benefits that brings. </p>
<p>It is simple enough to set this up on a new farm, but what about organizations that are already using SSRS in integrated mode? Since I was unable to find any prescriptive guidance on the upgrade process, I ran through it on a test farm, and below are my findings. This describes the process of upgrading from SSRS 2008 R2 to the RTM version of SSRS 2012.</p>
<p>SQL Server 2012 has some relatively strict operating system requirements. First and foremost, you need to be running at least Windows 7 or Windows Server 2008 R2 Service Pack 1, or Windows Vista or Windows Server 2008 Service Pack 2. If not, you’ll get the following message immediately.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb3.png" width="625" height="172"></a></p>
<p>In addition, depending on what you’re upgrading, it’s pretty fussy about your source environment as well. For example, if you’re upgrading management tools or BIDS, and you already have Visual Studio 2010 installed, it will need to be at least at the Service Pack 1 level. Your source SQL Server also has specific service pack requirements. <a href="http://msdn.microsoft.com/en-us/library/ms143393(v=sql.110).aspx">The complete supported upgrade matrix can be found here</a>. Unfortunately, if these requirements are not met, the installation will fail much further along in the process, and you’ll need to repeat several steps after correcting. </p>
<p>Once the SQL Server Installation Center launches, you’ll want to pick the Installation tab, and then the Upgrade option.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb4.png" width="797" height="339"></a></p>
<p>After a few steps, you’ll encounter one of the new screens pertaining to Reporting Services. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb5.png" width="820" height="617"></a></p>
<p>Previously, the installer was totally unaware of Integrated Mode Reporting Services.&nbsp; You would use SSRS configuration to set it up, but now the upgrade wizard, as well as the full product installer, is fully aware of Integrated Mode. </p>
<p>When performing the upgrade, the installer will go ahead and create the SharePoint service application for you. This is different than when you perform a fresh install &#8211; in&nbsp; that case you manually create the service application after installation. However, in order to do so, it needs to create an application pool for the service application, and you will be prompted for the credentials of that pool.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb6.png" width="821" height="617"></a></p>
<p>After several more standard screens, the upgrade rules will be run. This is where you will find out if you are missing a prerequisite, or it is not at the required patch level. However, if all is good, all of the rules should show as Passed, with the exception of “Direct Browsing to Report Server”, which will show a warning.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb7.png" width="819" height="613"></a></p>
<p>Previously, if you knew the correct URL, you could navigate directly to Reporting Services and the reports stored within SharePoint through a very rudimentary interface. This warning is simply alerting you to the fact that this is no longer an option with 2012.</p>
<p>The remainder of the installation is straightforward. When done (and if successful), you can navigate to the Service Applications section of Central Administration. There, you should see the new SSRS application.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb8.png" width="1009" height="597"></a></p>
<p>I’m not a big fan of the name that the default upgrade uses for the application, but that’s simple enough to change. The important thing to note is that all of your subscriptions, snapshots, etc, will have migrated over. The upgrade upgrades the two Reporting Services databases (ReportServer, and ReportServerTempDB by default), and adds a new one, ReportServer_Alerting, which are all used by the service application. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb9.png" width="282" height="290"></a></p>
<p>In order to enable data alerts and subscriptions, a number of security modifications need to be made to the SQL Server. In addition, the SQL Server Agent must be running to use these features. Editing the Service Application shows a screen that has a link to Provision Subscriptions an alerts. Clicking through it reveals the following screen:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb10.png" width="1007" height="592"></a></p>
<p>The View Status section simply gives you an indication of whether or not the Agent is running on the server, but clicking the “Download Script” button will give you a SQL script that will set up the required roles and permissions on your SQL Server. This script must be run on the SQL Server that holds the Reporting Services databases. In order to run it, simply open up SQL Server Management Studio, connect to the server, and click the New Query button. Once the query window opens, paste the query in, and run it (the Execute button).</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image11.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb11.png" width="1015" height="695"></a></p>
<p>Finally, enter the credentials for SharePoint to connect to your SQL Server Agent, and click OK. Once done, you’ll be in a position to use the new features available in Reporting Services, and all of your existing investments in reports should continue to operate as before. </p>
<p>For a major architectural change, this is actually a pretty smooth transition. </p>
<p>As I post this, it’s quite early in the life of 2012, so I would be quite interested to hear of any other experiences or gotchas. If there’s something that I should add to this post, please post a comment, I’d love to hear about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/03/upgrading-sql-server-reporting-services-to-2012-in-sharepoint-integrated-mode/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>How To Upgrade SQL Server 2012 RC0 to Release (RTW or RTM)</title>
		<link>http://whitepages.unlimitedviz.com/2012/03/how-to-upgrade-sql-server-2012-rc0-to-release-rtw-or-rtm/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/03/how-to-upgrade-sql-server-2012-rc0-to-release-rtw-or-rtm/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 01:02:13 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Editions]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1283</guid>
		<description><![CDATA[If you’ve been working with the RC0 version of SQL Server 2012 (formerly code named “Denali”), you are likely aware that the final release is now available as an evaluation download here, or from MSDN with in the Standard, Business Intelligence, and Enterprise editions. If you want to a straight upgrade from the evaluation edition, <a href='http://whitepages.unlimitedviz.com/2012/03/how-to-upgrade-sql-server-2012-rc0-to-release-rtw-or-rtm/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>If you’ve been working with the RC0 version of SQL Server 2012 (formerly code named “Denali”), you are likely aware that the final release is now available as an <a href="http://www.microsoft.com/download/en/details.aspx?id=29066">evaluation download here</a>, or from MSDN with in the Standard, Business Intelligence, and Enterprise editions. </p>
<p>If you want to a straight upgrade from the evaluation edition, it’s a relatively simple process. From the installation screen, select the Upgrade from a previous version of SQL Server option (it doesn’t list RC0, but it is the same process).</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb.png" width="801" height="601"></a></p>
<p>Select all of the appropriate options, and your server will be upgrade. However, if you want to move from the RC0 to one of the licensed editions, you could run into trouble. In my testing, what has happened is that parts of the installation will upgrade properly,, but others will fail. This can be seen from the instances screen when upgrade is run for a second time.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb1.png" width="819" height="615"></a></p>
<p>Unfortunately, the “left behind” instance can not be upgraded further, and now that this has been run, the Edition upgrade function will fail to work. In one case, I needed to do a complete SQL uninstall and then a reinstall. I’ve had more fun. The good news is that the reinstall did work. </p>
<p>The way to avoid this is to do the Edition upgrade first. If you’re unfamiliar with this, you can find it on the Maintenance tab of the SQL Server installation Center</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2012/03/image_thumb2.png" width="801" height="601"></a>&nbsp;</p>
<p>Once you complete the edition upgrade, go ahead and perform the standard upgrade as you would with the evaluation version. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/03/how-to-upgrade-sql-server-2012-rc0-to-release-rtw-or-rtm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
