<?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/index.php/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>Thu, 02 Feb 2012 02:40:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Upcoming Speaking Engagements &#8211; Spring 2012</title>
		<link>http://whitepages.unlimitedviz.com/2012/02/upcoming-speaking-engagements-spring-2012/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/02/upcoming-speaking-engagements-spring-2012/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 02:40:40 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[HSPUG]]></category>
		<category><![CDATA[Ontario]]></category>
		<category><![CDATA[PowerView]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[TSPUG]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1234</guid>
		<description><![CDATA[While the blog has been quieter than usual for the past couple of months, owing to a hectic schedule, I do have a number of speaking engagements coming up that I wanted to promote. All of them are related to SharePoint Business Intelligence in one way or another, and all are in the Toronto/South Western <a href='http://whitepages.unlimitedviz.com/2012/02/upcoming-speaking-engagements-spring-2012/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>While the blog has been quieter than usual for the past couple of months, owing to a hectic schedule, I do have a number of speaking engagements coming up that I wanted to promote. All of them are related to SharePoint Business Intelligence in one way or another, and all are in the Toronto/South Western Ontario area. If you’d like to come out and talk SharePoint, Business Intelligence, or just indulge in a SharePint or two, I would love to see you there. </p>
<p><font size="1"><br />
<table border="0" cellspacing="0" cellpadding="2" width="450">
<tbody>
<tr>
<td valign="top" width="450"><font size="1"><strong>Hamilton SharePoint User Group</strong></font></td>
</tr>
<tr>
<td valign="top" width="450"><font size="1">Thursday, Feb 16 2012</font></td>
</tr>
<tr>
<td valign="top" width="450"><a href="http://www.meetup.com/HamiltonSPUG/events/47115442/"><strong>SQL Server Reporting Services with SharePoint</strong></a><br />SQL Server Reporting Services provides a rich reporting environment, and integration with SharePoint makes it seem seamless to end users. How does Reporting Services impact the SharePoint environment? This presentation will walk through the basic features of Reporting Services, and architectural considerations when installing in a SharePoint farm. In addition, some of the differences included in the upcoming SQL Server 2012 version of Reporting Services will be discussed.</td>
</tr>
<tr>
<td valign="top" width="450">&nbsp;</td>
</tr>
<tr>
<td valign="top" width="450"><strong>Toronto SharePoint User Group</strong></td>
</tr>
<tr>
<td valign="top" width="450">Wednesday, April 18, 2012</td>
</tr>
<tr>
<td valign="top" width="450"><a href="http://www.meetup.com/TorontoSPUG/events/42177662/"><strong>What’s new in SQL Server 2012 for SharePoint</strong></a><br />SQL Server 2012 brings a wealth of new features to the core database used by SharePoint. However, it also brings a number of exciting new Business Intelligence features right to your SharePoint users. </p>
<p>This session will walk through a number of the new features that have a direct impact on SharePoint administrators, designers and end users, with in depth demonstrations of how to configure and use them. These features include significant architectural changes to Reporting services, the new BISM or tabular engine for Analysis Services and PowerPivot, and the new end user focused reporting tool, PowerView.</td>
</tr>
<tr>
<td valign="top" width="450"><strong>SharePoint Summit</strong></td>
</tr>
<tr>
<td valign="top" width="450">May 15, 2012</td>
</tr>
<tr>
<td valign="top" width="450"><a href="http://www.sharepointsummit.org/Toronto/index.htm"><strong>Reporting for Duty &#8211; Best Practices for Reporting Services with SharePoint</strong></a><br /> 
<p>&nbsp;
<p>Reporting Services and SharePoint have been working together since SharePoint 2003. SQL Server 2005 SP1 brought the ability to use Reporting Services in Integrated Mode through a SharePoint Add in, and with SQL Server 2012, Reporting Services is a fully fledged SharePoint Service Application, and some features, the new PowerView in particular, are only available through SharePoint Integrated Mode.
<p>Reporting Services bring a wealth of benefits to your SharePoint farm, but can also have a significant impact on it. This session will discuss the do&#8217;s and don’ts for a successful Reporting Services implementation. It will cover architectural considerations through to Report design, for both the Reporting Services Add In (SQL Server 2005-2008) and the new Reporting Services Service Application (SQL Server 2012).</p>
</td>
</tr>
</tbody>
</table>
<p></font></p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/02/upcoming-speaking-engagements-spring-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playa Del Carmen &#8211; Dive Report</title>
		<link>http://whitepages.unlimitedviz.com/2012/01/playa-del-carmen-dive-report/</link>
		<comments>http://whitepages.unlimitedviz.com/2012/01/playa-del-carmen-dive-report/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 19:48:47 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Diving]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Abyss Dive Center]]></category>
		<category><![CDATA[Bull Shark]]></category>
		<category><![CDATA[Cenote]]></category>
		<category><![CDATA[Mexico]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[Playa Del Carmen]]></category>
		<category><![CDATA[Shark]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2012/01/playa-del-carmen-dive-report/</guid>
		<description><![CDATA[It’s been quite some time since I blogged anything substantial, so why not start the New Year off with a dive report? Two days after New Years, we packed up the family and headed back to the Mayan Riviera. We stayed at the same resort that we did last year, the Azul Sensatori just outside <a href='http://whitepages.unlimitedviz.com/2012/01/playa-del-carmen-dive-report/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>It’s been quite some time since I blogged anything substantial, so why not start the New Year off with a dive report? Two days after New Years, we packed up the family and headed back to the Mayan Riviera. We stayed at the same resort that we did last year, the <a href="http://www.karismahotels.com/resort/azul-sensatori-hotel-karisma">Azul Sensatori</a> just outside of Puerto Morelos. If you have children (or even if you don’t) it’s a fantastic place. I have to make a shout out to Miguel, who worked at the bell stand, and went out of his way to make our stay a good one. </p>
<p>My only complaint about the resort was that it was a bit far from Playa Del Carmen, and when in the area, I always dive with the <a href="http://www.abyssdiveshop.com/">Abyss Dive Center</a> – I originally certified there, and have done all of my certifications there since. Also diving with me this time was my son John, and our good friends Allyson and Rich. </p>
<p>Around December-March every year, bull sharks can be found right off the beach in Playa Del Carmen, and last year, I had hoped to see a few of them. Alas, at the time, they had left the area for some inexplicable reason, only to return after I had come home. This year it was different. This time I got to dive with them twice, and each time there were between 10-20 checking us out. One morning we saw 5 at one of the regular dive sites. All of my diving pictures for the trip <a href="http://www.flickr.com/photos/wpages/sets/72157628868664209/">can be found here</a> but just to highlight a few…</p>
<p>To celebrate my reconfirmation as MVP on Jan 1, I had my son take the shot of me below</p>
<p><a title="Swimming with the sharks - literally" href="http://www.flickr.com/photos/90281098@N00/6696458267/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" border="0" alt="Swimming with the sharks - literally" src="http://farm8.static.flickr.com/7009/6696458267_7285b06b80.jpg" width="550" height="352"></a></p>
<p>A few other shots of the attractions in question:</p>
<p><a title="Bull Shark" href="http://www.flickr.com/photos/90281098@N00/6696461187/"><img border="0" alt="Bull Shark" src="http://farm8.static.flickr.com/7148/6696461187_a48faafbc7.jpg" width="545" height="329"></a></p>
<p><a title="Bull Shark" href="http://www.flickr.com/photos/90281098@N00/6696481917/"><img border="0" alt="Bull Shark" src="http://farm8.static.flickr.com/7020/6696481917_94c6d20493.jpg" width="544" height="362"></a></p>
<p><a title="Bull Shark" href="http://www.flickr.com/photos/90281098@N00/6696493359/"><img border="0" alt="Bull Shark" src="http://farm8.static.flickr.com/7015/6696493359_78485ac3fb.jpg" width="547" height="364"></a></p>
<p>In addition to the photos, I wanted to try out the video capabilities of my Canon T2i. From the footage, I was able to put this video together:</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:6ed1189b-b576-459b-bd80-b658d56e0654" class="wlWriterEditableSmartContent">
<div><object width="539" height="303"><param name="movie" value="http://www.youtube.com/v/iNn4-YSxzH8?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/iNn4-YSxzH8?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="539" height="303"></embed></object></div>
<div style="width:539px;clear:both;font-size:.8em">Swimming with the sharks</div>
</div>
<p>&nbsp;</p>
<p>In addition to the sharks, on our last diving day, we headed inland to the cenotes. For those of you that don’t know, cenotes are underground rivers that only exist in the Yucatan peninsula, and you can dive in them. Since there are frequent openings into air, it’s not quite cave diving, but it’s close, and on a nice sunny day, like the one we had, the light show can be spectacular.</p>
<p><a title="Ally and Rich - Ponderosa Cenote" href="http://www.flickr.com/photos/90281098@N00/6696527377/"><img border="0" alt="Ally and Rich - Ponderosa Cenote" src="http://farm8.static.flickr.com/7013/6696527377_cc2450e8fd.jpg" width="579" height="386"></a></p>
<p><a title="Ponderosa Cenote - Looking Up" href="http://www.flickr.com/photos/90281098@N00/6696534243/"><img border="0" alt="Ponderosa Cenote - Looking Up" src="http://farm8.static.flickr.com/7031/6696534243_39db10aa92.jpg" width="617" height="411"></a></p>
<p><a title="Ponderosa Cenote" href="http://www.flickr.com/photos/90281098@N00/6696532159/"><img border="0" alt="Ponderosa Cenote" src="http://farm8.static.flickr.com/7034/6696532159_60aa5bfbec.jpg" width="593" height="395"></a></p>
<p><a title="Ponderosa Cenote" href="http://www.flickr.com/photos/90281098@N00/6696536141/"><img border="0" alt="Ponderosa Cenote" src="http://farm8.static.flickr.com/7152/6696536141_6786ca415e.jpg" width="553" height="368"></a></p>
<p><a title="Guardian of the Ponderosa Cenote (driftwood)" href="http://www.flickr.com/photos/90281098@N00/6696537687/"><img border="0" alt="Guardian of the Ponderosa Cenote (driftwood)" src="http://farm8.static.flickr.com/7029/6696537687_32eb98fede.jpg" width="550" height="366"></a></p>
<p><a title="Tajma Ha Cenote" href="http://www.flickr.com/photos/90281098@N00/6696566875/"><img border="0" alt="Tajma Ha Cenote" src="http://farm8.static.flickr.com/7171/6696566875_baab81a0db.jpg" width="569" height="379"></a></p>
<p>That pretty much wraps up the fun for this year – now it’s back to work. I have a mountain in front of me and a lot of writing to do to!</p>
<p>Happy New Year</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2012/01/playa-del-carmen-dive-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading and Moving Integrated Mode Reporting Services With SharePoint</title>
		<link>http://whitepages.unlimitedviz.com/2011/12/upgrading-and-moving-integrated-mode-reporting-services-with-sharepoint/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/12/upgrading-and-moving-integrated-mode-reporting-services-with-sharepoint/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 21:31:12 +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[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/12/upgrading-and-moving-integrated-mode-reporting-services-with-sharepoint/</guid>
		<description><![CDATA[There is a plethora of instructions out there on upgrading from SharePoint 2007 to SharePoint 2010, but relatively little on doing the upgrade where Reporting Services has been set up in SharePoint integrated mode. Given that there are a few gotchas that you can run into when doing this, I decided to put together this <a href='http://whitepages.unlimitedviz.com/2011/12/upgrading-and-moving-integrated-mode-reporting-services-with-sharepoint/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>There is a plethora of instructions out there on upgrading from SharePoint 2007 to SharePoint 2010, but relatively little on doing the upgrade where Reporting Services has been set up in SharePoint integrated mode. Given that there are a few gotchas that you can run into when doing this, I decided to put together this step-by-step, complete with the gotchas. </p>
<p>The most common scenario that will be encountered, given the vintages of the products will be an RS upgrade from SQL Server 2005 to 2008 R2. In addition, the in place upgrade is relatively painless (in the short term….) so I’ll be walking through a DB attach upgrade, which is just as applicable to RS as it is to SharePoint. Finally as <a href="http://whitepages.unlimitedviz.com/2010/05/installation-considerations-for-reporting-services-in-sharepoint-integrated-mode/">I’ve written about previously</a>, in a small farm, it’s likely a better idea to add the Reporting Services bits to a SharePoint front end server, than to add the SQL server to the SharePoint farm, and that will also be a part of our scenario. </p>
<p>The first question to answer is “why bother”? One of the advantages to using RS in SharePoint Integrated mode is that unlike Native mode, the reports, data connections and models are stored directly in SharePoint. It is therefore possible to just create a new RS database, and move forward. However, since subscriptions, schedules, and cache profiles are still in the database, it’s likely worth it to do the upgrade.</p>
<h6>Step 1 &#8211; Back Up The Asymmetric Key</h6>
<p>Reporting Services itself uses 2 SQL databases. One of the databases is for temporary operations, but the other database stores a number of important, and sensitive items for this reason, all sensitive items in the database are encrypted with a key. If we want to get access to these items, we need the key. To do so, we need to back it up from the source server before we move ahead. </p>
<p>Run the Reporting Services Configuration Manager on the source RS server, and select “Encryption Keys”. Click the Backup button, select (and remember) a password, and then save the key to the file system.&nbsp; </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb5.png" width="939" height="697"></a></p>
<p>Once saved, copy the key file to the destination RS server (likely your SharePoint 2010 front end server).</p>
<h6>Step 2 &#8211; Back Up the Reporting Services Databases</h6>
<p>Run SQL Server Management Studio on the Server where the Reporting Services databases are located. Run full backups of the two RS databases. When complete, copy the backups to the destination SQL server (likely the server that will host the SharePoint 2010 databases).</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb6.png" width="799" height="422"></a></p>
<h6>Step 3 &#8211; Restore the Reporting Services Databases</h6>
<p>Using SSMS, restore the two databases to the host SQL server. Once restored, it’s likely a good idea to set the recovery model to Simple, and the Compatibility level to SQL Server 2008. These steps aren’t required, but are recommended, unless you have a reason for not doing so.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb7.png" width="929" height="653"></a></p>
<h6>Step 4 &#8211; Run the RS Configuration </h6>
<p>If Reporting Services hasn’t yet been installed on the SharePoint server, do so, otherwise, proceed to configuration by running the Reporting Services Configuration Wizard on the destination RS Server. Configure the basic steps, and then when it comes to Database configuration, select the option to choose an existing database.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb8.png" width="677" height="488"></a></p>
<p>Select the server where you restored the files in step 3, and select the primary RS database (the one without the word “Temp” in it&#8221;). </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb9.png" width="685" height="493"></a></p>
<p>Complete the configuration wizard.</p>
<h6>Step 5 &#8211; Connect SharePoint to Reporting Services</h6>
<p>From SharePoint Central Administration, select General Application Settings, and then Reporting Services Integration. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb10.png" width="958" height="529"></a></p>
<p>Complete&nbsp; the integration configuration, and then select OK</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb11.png" width="1075" height="577"></a></p>
<p>So far so good – now we’re ready for some gotchas. If you now click on the “Set Server Defaults” link in the Reporting Services section, you likely get a rather nasty looking error. You’ll also experience this error if you access ewither of the two RS URLs defined in the RS configuration wizard. The error is:</p>
<p>The report server installation is not initialized. (rsReportServerNotActivated)</p>
<p>This error happens when the server can’t access configuration information, and the most common cause of that is that it can’t decrypt the content. In our case, it can’t because we haven’t yet restored our key. </p>
<h6>Step 6 &#8211; Restore the Asymmetric Key</h6>
<p>On our new RS server, we need to run the RS Configuration Manager, Select Encryption Keys, and then click the Restore button. You will be prompted for the file that you created and copied in Step 1, and this is where remembering the password comes in very handy. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/image12.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/2011/12/image_thumb12.png" width="943" height="661"></a></p>
<p>Once this is done, we can close the configuration manager and return to Central Administration. However, now when we try to access access any aspect of RS we get a new error:</p>
<p>The feature: “Scale-out deployment” is not supported in this edition of Reporting Services. (rsOperationNotSupported)</p>
<p>The reason for this error is that when we restored the key, it added an entry in the Keys table in the Reporting Services database, causing RS to think that we’re using multiple Reporting Services servers. This is what’s known as a scale-out deployment, and is only supported in the Enterprise version of Reporting Services. Obviously this isn’t a problem for anyone running Enterprise, but if not, it’s a showstopper. </p>
<p>The way to fix this is to remove the old server entry in the Keys table. Using SQL Server Management Studio, connect to the Reporting Services database, and open the dbo.Keys table. The old entry should be easy to spot as it will have the old server name. Simple delete the row.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/image13.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/2011/12/image_thumb13.png" width="999" height="390"></a></p>
<p>Once the offending entry is deleted, RS should be good to go. </p>
<h6>7. Fix up the content type names</h6>
<p>I have posted about this already, but often, an upgrade will break the Content Type names for the Reporting Services content types. Just <a href="http://whitepages.unlimitedviz.com/2011/12/how-to-fix-broken-reporting-services-content-type-names/">follow the steps in this post</a> to clean them up.</p>
<h6>8. Reconnect Reports with Data Sources And/Or Republish</h6>
<p>In addition, moving connection files and reports around in SharePoint can cause them to be disconnected from each other, or for the connection files to be disabled. It’s a good idea to navigate to all of your reports to make sure that they are connected, or better yet, to republish from the source if you had previously used BIDS to publish reports.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/12/upgrading-and-moving-integrated-mode-reporting-services-with-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lync For Windows Phone 7: Unable to sign in. Can&#8217;t connect to the server</title>
		<link>http://whitepages.unlimitedviz.com/2011/12/lync-for-windows-phone-7-unable-to-sign-in-cant-connect-to-the-server/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/12/lync-for-windows-phone-7-unable-to-sign-in-cant-connect-to-the-server/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 18:17:10 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Office 365]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Lync]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/12/lync-for-windows-phone-7-unable-to-sign-in-cant-connect-to-the-server/</guid>
		<description><![CDATA[The Lync 2010 client for Windows Phone was released in the Windows Phone marketplace today. Being a big fan of Lync, I eagerly downloaded and ran it, only to be presented by the error :Unable to sign in. Can&#8217;t connect to the server”. I went into the manual configuration on the phone and tried to <a href='http://whitepages.unlimitedviz.com/2011/12/lync-for-windows-phone-7-unable-to-sign-in-cant-connect-to-the-server/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>The Lync 2010 client for Windows Phone was released in the Windows Phone marketplace today. Being a big fan of Lync, I eagerly downloaded and ran it, only to be presented by the error :Unable to sign in. Can&#8217;t connect to the server”. I went into the manual configuration on the phone and tried to connect and still no dice. </p>
<p>Given that we are using Office 365, I checked in the community hub and found <a href="http://community.office365.com/en-us/f/167/p/17320/80465.aspx">this post</a> that indicated that there were were other users experiencing the same problem, but in their case, it was related to the fact that they were using the default “onmicrosoft.com” domain. However, there were some DNS instructions in the post that gave me a clue. Unfortunately, once I added the indicated DNS entry, I still had the same problem. </p>
<p>I decided to check the DNS settings for my domain in the Administration panel. and as it turns out, the DNS instructions have been updated since I had originally set up our Office 365. There are two CNAME entries that are required for the WP7 Lync application to work with Office 365:</p>
<table border="0" cellspacing="0" cellpadding="2" width="542">
<tbody>
<tr>
<td valign="top" width="105"><strong>Type</strong></td>
<td valign="top" width="199"><strong>Host Name</strong></td>
<td valign="top" width="158"><strong>Points To</strong></td>
<td valign="top" width="78"><strong>TTL</strong></td>
</tr>
<tr>
<td valign="top" width="105">
<p>CNAME</p>
</td>
<td valign="top" width="199">
<p>sip.<em>yourdomain.com</em></p>
</td>
<td valign="top" width="158">
<p>sipdir.online.lync.com</p>
</td>
<td valign="top" width="78">1 Hour </td>
</tr>
<tr>
<td valign="top" width="105">
<p>CNAME</p>
</td>
<td valign="top" width="199">
<p>lyncdiscover.<em>yourdomain.com</em></p>
</td>
<td valign="top" width="158">
<p>webdir.online.lync.com</p>
</td>
<td valign="top" width="78">
<p>1 Hour</p>
</td>
</tr>
</tbody>
</table>
<p>Obviously,<em> yourname.com</em> should be replaced with your actual domain name. </p>
<p>Once I set these up, I was off to the races with my mobile Lync client. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/12/lync-for-windows-phone-7-unable-to-sign-in-cant-connect-to-the-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Fix Broken Reporting Services Content Type Names</title>
		<link>http://whitepages.unlimitedviz.com/2011/12/how-to-fix-broken-reporting-services-content-type-names/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/12/how-to-fix-broken-reporting-services-content-type-names/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 18:27:04 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Content Types]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/12/how-to-fix-broken-reporting-services-content-type-names/</guid>
		<description><![CDATA[Recently, after helping to upgrade a customer from SharePoint 2007 to 2010, we noticed some oddities around the Reporting Services content types. The RS content types are deployed into a&#160; farm when the RS add-in is installed. The observed problem was that the names of the content types, and the content type group was all <a href='http://whitepages.unlimitedviz.com/2011/12/how-to-fix-broken-reporting-services-content-type-names/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Recently, after helping to upgrade a customer from SharePoint 2007 to 2010, we noticed some oddities around the Reporting Services content types. The RS content types are deployed into a&nbsp; farm when the RS add-in is installed. The observed problem was that the names of the content types, and the content type group was all messed up.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb.png" width="598" height="122"></a>&nbsp;</p>
<p>The names displayed were the internal names that are used to support multilingual installations. What I believe caused this problem was the the content database had been upgraded to 2010 prior to the add in being installed on the farm, so the English names could not be resolved. </p>
<p>All existing items using the types continued to work, and reports could still be deployed using Business Intelligence Development Studio (BIDS). However some UI dependent functions, like Report Builder could not be used without the proper names. Luckily, the fix is relatively straightforward. All that we need to do is to set the correct names manually. To get the correct farm, all that is necessary is to inspect an unaffected farm to see the section below.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb1.png" width="672" height="98"></a></p>
<p>In order to fix this, you need to first navigate to the root of your site collection, and then select Site Actions – Site Settings, and then click on Site content types in the Galleries section. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb2.png" width="530" height="272"></a></p>
<p>At this point, you should see the affected section, it will be right at the top. We need to fix the content types one at a time, so click on one of the affected content types. The Content type editor window will appear.&nbsp; From that Window, simply select Name, description, and group.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb3.png" width="603" height="450"></a></p>
<p>You will then be able to edit the values for Name, Description, and Group. </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/12/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/2011/12/image_thumb4.png" width="645" height="373"></a></p>
<p>For the first one that you edit, you’ll need to select the New Group option, and enter the correct name of the group, as indicated above. For the other two content types, you’ll be able to select the correct group from the existing group list.</p>
<p>Once you’ve edited all three content types, that’s it! You’re done. </p>
<p>Well, sort of… </p>
<p>Unfortunately the name change will only affect new libraries , or newly configured libraries. For libraries that already have these content types attached to them, you’ll need to repeat the process for each library that has been affected. I imagine that it’s quite possible to write a PowerShell script that will do this for all libraries, but so far, the remediation effort hasn’t warranted it. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/12/how-to-fix-broken-reporting-services-content-type-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reporting Services Reports With Sparklines Running Very Slow</title>
		<link>http://whitepages.unlimitedviz.com/2011/11/reporting-services-reports-with-sparklines-running-very-slow/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/11/reporting-services-reports-with-sparklines-running-very-slow/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 02:38:42 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Reporting]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[Sparklines]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/11/reporting-services-reports-with-sparklines-running-very-slow/</guid>
		<description><![CDATA[I recently encountered a fairly significant performance issue with SQL Server Reporting Services 2008 R2 and Reporting Services Azure. After having built out an electoral report that broke down election results poll by poll, I used what I think is a fantastic new feature in Reporting Services 2008 R2, sparklines. A sparkline is essentially a <a href='http://whitepages.unlimitedviz.com/2011/11/reporting-services-reports-with-sparklines-running-very-slow/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I recently encountered a fairly significant performance issue with SQL Server Reporting Services 2008 R2 and Reporting Services Azure. After having built out an electoral report that broke down election results poll by poll, I used what I think is a fantastic new feature in Reporting Services 2008 R2, sparklines. </p>
<p>A sparkline is essentially a mini-graph – a visual representation of a single row of data. In my case, it is the results, by party (as indicated by colour) for a given poll. It looks like this:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/11/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/2011/11/image_thumb.png" width="874" height="122"></a></p>
<p>Once I got this report looking the way that I wanted it to, I deployed it to Azure Reporting Services. However, when I ran the report, it took an incredibly long time to load (3 minutes and 30 seconds). I immediately blamed Azure RS for this, as it’s still a preview edition. However, further testing revealed the same behaviour on an on-premise deployment. The puzzling thing was that it rendered very quickly using the preview in BIDS or in Report Builder. </p>
<p>Adding to the mystery is the fact that the report renders fairly quickly when called from the Reporting Service web service to create a PDF file, or even an HTML file. I managed to discover this when I decided to pre-create a number of these reports in PDF format to reducre the load time for users (more on how I did this in an upcoming post). </p>
<p>The oddest part is precisely where the performance problem shows up. When the report is run using a browser, the browser thread’s CPU utilization goes up to 100% of available resources (a 2 core machine CPU runs up to 50%). This is happening on the client side.</p>
<p>On a hunch, I tried removing the sparklines. Presto, the load time dropped to 20 seconds. So I don’t get to use my sparklines in the live report which is unfortunate, but at least I found the culprit. What I wish I knew was why this was happening, or if there’s something I’m simply doing wrong. </p>
<p>If anyone has any ideas, I’m all ears.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/11/reporting-services-reports-with-sparklines-running-very-slow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File Formats for the SQL Server 2012 (Denali) Reporting Services Web Services Renderer</title>
		<link>http://whitepages.unlimitedviz.com/2011/11/file-formats-for-the-sql-server-2012-denali-reporting-services-web-services-renderer/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/11/file-formats-for-the-sql-server-2012-denali-reporting-services-web-services-renderer/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 18:19:06 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1192</guid>
		<description><![CDATA[One of the major new features in SQL Server Reporting Services (SSRS) 2012 is the ability to render Excel files and Word files in the XML based 2007 file format (.xlsx and .docx). Previous versions of SSRS rendered Excel and Word files into the old 2003 formats (.xls and .doc) Creating one of these output <a href='http://whitepages.unlimitedviz.com/2011/11/file-formats-for-the-sql-server-2012-denali-reporting-services-web-services-renderer/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>One of the major new features in SQL Server Reporting Services (SSRS) 2012 is the ability to render Excel files and Word files in the XML based 2007 file format (.xlsx and .docx). Previous versions of SSRS rendered Excel and Word files into the old 2003 formats (.xls and .doc) Creating one of these output files can be done through the reporting UI by using the Export button. The new formats are used automatically, and you need to perform server configuration in order to use the older formats.&nbsp; </p>
<p>The Render method of the ReportExecution2005 web service would appear something like below:</p>
<pre><code>report = rs.Render("EXCEL", deviceinfo, _  extension, mimeType, encoding, warnings, streamIDs)
</code></pre>
<p>However, if you are using the Reporting Services web service, nothing changes. The Render method of the ReportExecution2005 web service would appear something like below:</p>
<p>The first argument is the file format to render into. With SSRS, the above code will render into the 2003 file format (.xls). The web service defaults to the old format.</p>
<p>I was unable to find any documentation at all on the correct argument to get the new file formats, so I poked around a little with my debugger and the ListRenderingExtensions method. As a result, I thought I&#8217;d share what I think is the comprehensive list of rendering formats for Reporting Services in SQL Server 2012. These are taken straight from the code.</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 147px">
<col style="width: 232px"></colgroup>
<tbody valign="top">
<tr style="background: #4f81bd; height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top: #4f81bd 1pt solid">
<p><span style="color: black"><strong>Name</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top: #4f81bd 1pt solid; border-right: #4f81bd 1pt solid">
<p><span style="color: black"><strong>Description</strong></span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>XML</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">XML file with report data</span></p>
</td>
</tr>
<tr style="height: 20px" height="20">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>NULL</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Null Renderer</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>CSV</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">CSV (comma delimited)</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>ATOM</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Data Feed</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>PDF</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">PDF</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>RGDI</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Remote GDI+ file</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>HTML4.0</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">HTML 4.0</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>MHTML</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">MHTML (web archive)</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>EXCEL</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Excel 2003</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>EXCELOPENXML</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Excel</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>RPL</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">RPL Renderer</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>IMAGE</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">TIFF file</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none">
<p><span style="color: black"><strong>WORD</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-top-style: none; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Word 2003</span></p>
</td>
</tr>
<tr style="height: 20px">
<td style="border-bottom: #4f81bd 1pt solid; border-left: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px">
<p><span style="color: black"><strong>WORDOPENXML</strong></span></p>
</td>
<td style="border-bottom: #4f81bd 1pt solid; padding-left: 7px; padding-right: 7px; border-right: #4f81bd 1pt solid">
<p><span style="color: black">Word</span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>Therefore, if I want to render to the description &#8220;Excel&#8221; the argument needs to be &#8220;EXCELOPENXML&#8221;, and to render to the description &#8220;Excel 2003&#8243; the argument is &#8220;EXCEL&#8221;. That&#8217;s not at all confusing.</p>
<p>In any event, hopefully this helps someone (likely me in the future..)</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/11/file-formats-for-the-sql-server-2012-denali-reporting-services-web-services-renderer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Get SharePoint Data Into a Data Warehouse (And Back Again)</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/how-to-get-sharepoint-data-into-a-data-warehouse-and-back-again/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/how-to-get-sharepoint-data-into-a-data-warehouse-and-back-again/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 16:22:07 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[BCS]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/10/how-to-get-sharepoint-data-into-a-data-warehouse-and-back-again/</guid>
		<description><![CDATA[With apologies to J.R.R. Tolkien…… Yesterday, as part of the ongoing Panellist Spotlight series for SharePoint Shoptalk, I presented a session on how to move your data from SharePoint, and in to a data warehouse, and then consume the warehoused data directly within SharePoint. These presentations are recorded, and posted online, and if you’re interested, <a href='http://whitepages.unlimitedviz.com/2011/10/how-to-get-sharepoint-data-into-a-data-warehouse-and-back-again/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>With apologies to J.R.R. Tolkien……</p>
<p>Yesterday, as part of the ongoing Panellist Spotlight series for <a href="http://www.linkedin.com/groups?home=&amp;gid=3100222">SharePoint Shoptalk</a>, I presented a session on how to move your data from SharePoint, and in to a data warehouse, and then consume the warehoused data directly within SharePoint. These presentations are recorded, and posted online, and if you’re interested, you can view the entire presentation 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:331fc175-4969-4816-bd97-634a864c8606" class="wlWriterEditableSmartContent">
<div><object width="554" height="311"><param name="movie" value="http://www.youtube.com/v/O0OjT_VEObI?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/O0OjT_VEObI?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="554" height="311"></embed></object></div>
</div>
<p>In it, I demonstrate how SQL Server Integration Services (SSIS) can be used to extract the data from SharePoint, and to store it in a SQL Server data warehouse. Then I walk through the creation of an external content type, and an external list using SharePoint Designer and SharePoint Business Connectivity Services (BCS). Finally, I create a report using SQL Server Reporting Services (SSRS) in SharePoint Integrated mode. </p>
<p>Thanks to <a href="http://www.linkedin.com/in/jamees">Jamees Wright</a> for organizing the session, and to my fellow panellist, <a href="http://www.sharepoint911.com/blogs/laura/default.aspx">Laura Rogers.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/how-to-get-sharepoint-data-into-a-data-warehouse-and-back-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I Love Office 365</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/why-i-love-office-365/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/why-i-love-office-365/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 16:40:35 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Office Web Applications]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/10/why-i-love-office-365/</guid>
		<description><![CDATA[OK, so my company is a Microsoft partner, and we’re supposed to like everything that they throw our way right? That’s actually not true. I’ll certainly give most things that they do a fair shot. It’s also true that I’m willing to sacrifice a certain amount of capability for either ease of use, or for <a href='http://whitepages.unlimitedviz.com/2011/10/why-i-love-office-365/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>OK, so my company is a Microsoft partner, and we’re supposed to like everything that they throw our way right? That’s actually not true. I’ll certainly give most things that they do a fair shot. It’s also true that I’m willing to sacrifice a certain amount of capability for either ease of use, or for the way that Microsoft products work well together, but as I noted in a <a href="http://whitepages.unlimitedviz.com/2010/11/bye-bye-blackberry/">previous post</a>, I only gave up my BlackBerry when Microsoft came out with a product that was worth using.</p>
<p>My company is small (currently 6 people) and widely distributed. Cloud solutions make perfect sense to us,and we have been using Exchange Online for over 2 years now. Our requirements for SharePoint went beyond what was possible in BPOS’ offering, but since migrating to Office 365 6 months ago, the&nbsp; new SharePoint online fits the bill, and more and more of our corporate assets live there now. </p>
<p>UnlimitedViz is currently primarily a SharePoint services company focused on Business Intelligence, and a significant portion of those services involve architecting SharePoint environments at a lower level, which involves sizing servers, making resource decisions, etc. I personally love designing solutions and watching them come to life. We are certainly more than capable to maintain our own SharePoint infrastructure, so why would we want to use an admittedly more limited version of the product that is maintained by someone else? </p>
<p>Pretty much because it’s maintained by someone else. </p>
<p>As mentioned above we’re small, and we need to be focused on what we do best, which is providing services to our customers, and building product. Maintaining internal systems, no matter how good we are at it, is a distraction, and a significant cost, both capital and operational. The per user cost of Office 365 is pretty simple to justify from just a cost standpoint, but there are many more benefits that are brought to the table. </p>
<p>No matter what the location of a team member, they can easily access what they need to. Lync brings that down to the voice and IM communication level. No need to mess around with access methods, VPNs, Firewalls, Reverse Proxy servers and the like. We can get to our content easily on site, at home via whatever device we happen to need. Granted, I could set that stuff up on-premise, but <em>now I don’t have to</em>! I also know that my data is safe, and the performance is going to be good. Two months ago, Exchange online suffered an outage for about two hours (the only hiccup I’ve experienced so far). My initial reaction was “what can I do to fix this”, but that was quickly superseded by&nbsp; “It’s not my problem to fix”, so I just sat back and got other work done.</p>
<p>As we bring more customers onto Office 365, supporting them just gets simpler. A simple client request can be acted upon immediately by launching a browser window, and connecting to their site, seamlessly. With most onsite installations, I need to start a virtual machine, connect through a VPN client, and then hope that the correct tools are installed on the VM, or the client site, depending on the access mechanism. I try to keep a VM image available for every type of VPN client used, which is a hopeless and necessary task due to the incompatibilities between clients. In my opinion, the world will be a better place when VPN clients are eliminated (or at least consolidated&#8221;). </p>
<p>Customers using Office 365 don’t need VPN clients, and it makes it that much easier (and cheaper for them) for us to support them. </p>
<p>There a a whole bunch of great features about Office 365 (Shared OneNote files accessed via Windows Phone, browser and client is a good one, not to mention Lync), but the reason that I really like it is that it’s solid, it works, and it lets my business focus on using its tools, not maintaining them.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/why-i-love-office-365/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Online Fall 2011 Service Update Starts Oct 20</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/sharepoint-online-fall-2011-service-update-starts-oct-20/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/sharepoint-online-fall-2011-service-update-starts-oct-20/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 20:09:11 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[SharePoint Conference 2011]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/?p=1183</guid>
		<description><![CDATA[Today, Microsoft sent out a bulletin to SharePoint Online users notifying them that they would begin rolling out the Fall 2011 Service Update. This is the much vaunted update announced at the SharePoint Conference 2011 that includes BCS services. For those that don&#8217;t already subscribe, the list of new features can be found below (copied <a href='http://whitepages.unlimitedviz.com/2011/10/sharepoint-online-fall-2011-service-update-starts-oct-20/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: arial; color: black; font-size: 10pt">Today, Microsoft sent out a bulletin to SharePoint Online users notifying them that they would begin rolling out the Fall 2011 Service Update. This is the much vaunted update announced at the SharePoint Conference 2011 that includes BCS services. For those that don&#8217;t already subscribe, the list of new features can be found below (copied from the official email).</span><span style="font-family: arial; color: black; font-size: 10pt"></p>
<p></span>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 315px">
<col style="width: 315px"></colgroup>
<tbody valign="top">
<tr style="background: #4f81bd">
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-right-style: none; border-top: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: white; font-size: 10pt"><strong>Feature</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top: #7ba0cd 0.75pt solid; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: white; font-size: 10pt"><strong>Description</strong></span></p>
</td>
</tr>
<tr style="background: #d3dfee">
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-top-style: none; border-right-style: none; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt"><strong>Business Connectivity Services (BCS) &lt;WCF Connector&gt; *Enterprise plans only</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top-style: none; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt">Enables connecting to external systems via web service based endpoints</span></p>
</td>
</tr>
<tr>
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-top-style: none; border-right-style: none; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt"><strong>External Sharing: Windows LiveID support</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top-style: none; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt">Allows Office 365 tenant administrators to invite external users to a site collection. They sign in with a Windows Live ID-based user name and password.</span></p>
</td>
</tr>
<tr style="background: #d3dfee">
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-top-style: none; border-right-style: none; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt"><strong>Windows Phone 7 &#8220;Mango&#8221; (official support and http:// connectivity)</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top-style: none; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt">Windows Phone 7.5, codenamed &#8220;Mango,&#8221; now enables both small business and enterprise Office 365 customers to access SharePoint Online lists and document libraries from their Windows Phone.</span></p>
</td>
</tr>
<tr>
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-top-style: none; border-right-style: none; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt"><strong>Recycle Bin: deleted site self-recovery</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top-style: none; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt">Self-service ability to recover sites from a site collection&#8217;s recycle bin</span></p>
</td>
</tr>
<tr style="background: #d3dfee">
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-top-style: none; border-right-style: none; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt"><strong>Browser support: Internet Explorer 9</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top-style: none; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt">Adds official support for the Internet Explorer 9 (IE9) browser</span></p>
</td>
</tr>
<tr>
<td style="border-bottom: #7ba0cd 0.75pt solid; border-left: #7ba0cd 0.75pt solid; padding-bottom: 2px; padding-left: 5px; border-top-style: none; border-right-style: none; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt"><strong>Browser support: Chrome</strong></span></p>
</td>
<td style="border-bottom: #7ba0cd 0.75pt solid; padding-bottom: 2px; border-left-style: none; padding-left: 5px; border-top-style: none; border-right: #7ba0cd 0.75pt solid; padding-top: 2px">
<p><span style="font-family: segoe ui; color: #666666; font-size: 10pt">Adds official support for the Chrome browser</span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-family: arial; color: black; font-size: 10pt"><br /></span></p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/sharepoint-online-fall-2011-service-update-starts-oct-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Batch Download Videos and Presentations from SharePoint Conference 2011</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/how-to-batch-download-videos-and-presentations-from-sharepoint-conference-2011/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/how-to-batch-download-videos-and-presentations-from-sharepoint-conference-2011/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 17:38:15 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/10/how-to-batch-download-videos-and-presentations-from-sharepoint-conference-2011/</guid>
		<description><![CDATA[UPDATE 26/10/2011 – The Files Have been protected Since originally posting this, the content provider has added the cookie requirement for download of the files. This is in line with Microsoft’s wishes that the videos be downloaded by conference attendees only. In order to batch download the videos, you will need to follow the procedure <a href='http://whitepages.unlimitedviz.com/2011/10/how-to-batch-download-videos-and-presentations-from-sharepoint-conference-2011/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h4><font color="#ff0000">UPDATE 26/10/2011 – The Files Have been protected</font></h4>
<p>Since originally posting this, the content provider has added the cookie requirement for download of the files. This is in line with Microsoft’s wishes that the videos be downloaded by conference attendees only. In order to batch download the videos, you will need to follow the procedure outlined for the PPTX files below. The addresses of the video files are still the same – only the requirement for an authentication cookie has changed. Thanks to George Winters for pointing this out.</p>
<h6><font color="#ff0000">UPDATE 11/10/2011 – The Files Have Moved</font>.</h6>
<p><font size="6"><font color="#ff0000"></font></font><font color="#ff0000">I have updated the post below accordingly. Also note the file names are also different. The new source is significantly faster – thank you MSFT!</font></p>
<p>I’ve seen a number of questions about this, and I’m in the process of collecting all of the presentations and slide decks from the conference, so I thought that I’d share my process. It’s relatively Straightforward to batch these up. </p>
<p>The videos are all in one location, and the presentations are in another. The base folder for the videos is (now) <a title="http://cdn.tri-digital.com/spc/videos/" href="http://cdn.tri-digital.com/spc/videos/">http://cdn.tri-digital.com/spc/videos/</a> and the naming format for the files is SPC<em>sessionnumber</em>.wmv.zip, so for session 301, the filename is SPC301.zip. You can simply punch the full URL into a browser and the files will start downloading. In order to batch download a bunch, I am using the <a href="http://www.gnu.org/s/wget/">open source WGET</a> utility, recommended to me by <a href="http://twitter.com/#!/motdiem">Ziad Wakim</a>.&nbsp; I simply created a batch file that calls WGET for all of the presentations that I wanted. Each line in the batch file looks like:</p>
<pre style="width: 551px; height: 35px" class="csharpcode"><span class="str">"C:\Program Files (x86)\GnuWin32\bin\wget.exe"</span> http://cdn.tri-digital.com/spc/videos/SPC261.wmv.zip</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 process is the same for the slide decks, but the site base is&nbsp; <a href="http://www.mssharepointconference.com/SessionPresentations">http://www.mssharepointconference.com/SessionPresentations</a> and the file name format is identical to the videos with the .zip replaced with .pptx. However, the conference site expects a cookie, so you’ll first need to log into the <a href="http://www.mssharepointconference.com/Pages/Secure/myspc-03-mycalendarpage.aspx">myspc</a> site. Once done, export the cookie for the site to a text file (In IE use File – Import and Export – Export to a file) that’s available to the WGET command. Once it’s a simple command switch on the end of the WGET command to load in the cookie for each request. If the cookie is exported to a file names cookies.txt, then the command will look something like:</p>
<p>wget <a href="http://www.mssharepointconference.com/SessionPresentations/SPC413.pptx">http://www.mssharepointconference.com/SessionPresentations/SPC413.pptx</a>&nbsp; &#8211;load-cookies cookies.txt</p>
<p>Another batch file with a line for each slide deck you want, and you can run it and download everything at once. One note – you’ll need to be patient. Given the speeds, I don’t think that I’m the only one who has thought of this….</p>
<p>Hope it helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/how-to-batch-download-videos-and-presentations-from-sharepoint-conference-2011/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SharePoint Tools for Windows Azure, Visual Studio, jQuery, and HTML5</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/sharepoint-tools-for-windows-azure-visual-studio-jquery-and-html5/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/sharepoint-tools-for-windows-azure-visual-studio-jquery-and-html5/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 03:33:51 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[oData]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/10/sharepoint-tools-for-windows-azure-visual-studio-jquery-and-html5/</guid>
		<description><![CDATA[As I mentioned in my last post, at the recent SharePoint 2011 conference, I attended a number of sessions where Visual Studio played a major role. Andrew Connell articulated design patterns around using SharePoint with Windows Azure, Ted Pattison showed patterns around jQuery, HTML5 and oData, and Eric Shupps used the performance testing tools in <a href='http://whitepages.unlimitedviz.com/2011/10/sharepoint-tools-for-windows-azure-visual-studio-jquery-and-html5/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in my last post, at the recent SharePoint 2011 conference, I attended a number of sessions where Visual Studio played a major role. <a href="http://www.andrewconnell.com/blog/">Andrew Connell</a> articulated design patterns around using SharePoint with Windows Azure, <a href="http://blog.tedpattison.net/default.aspx">Ted Pattison</a> showed patterns around jQuery, HTML5 and oData, and <a href="http://www.binarywave.com/blogs/eshupps/default.aspx">Eric Shupps</a> used the performance testing tools in VS2010 to show the impact of performance tweaks. </p>
<p>In all of the sessions mentioned above, reference was made to add ins, extensions, or other tools that make working with SharePoint and Azure a great deal easier. I took note of most of them, and in the process of summarizing them, thought that I should amalgamate them with my own current list of dev tools, and post it here. Extensions can and should be installed via the extensions manager in Visual Studio, and I’ll note them below. </p>
<table border="0" cellspacing="2" cellpadding="2" width="561">
<tbody>
<tr>
<td valign="top" width="198"><a href="http://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx"><font size="1" face="Segoe WP">Cloudberry</font></a></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Utility for working with Azure BLOB Storage. Makes moving files to/from blob storage simple</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9">Visual Studio 2010 SharePoint Power Tools*</a></font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Adds a sandboxed Visual Web Part item template and other enhancements.</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://cksdev.codeplex.com/">CKS Development Tools for SharePoint</a>*</font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Community led effort that includes many Tools and templates for SharePoint development</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://visualstudiogallery.msdn.microsoft.com/15055544-fda0-42db-a603-6dc32ed26fde/">CAML Intellisense for VS2010</a>*</font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Adds Intellisense to VS2010 for those of use still stuck with CAML</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://visualstudiogallery.msdn.microsoft.com/e8360a85-58ca-42d1-8de0-e48a1ab071c7">Visual Studio 2010 Silverlight Web Part*</a></font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Project Template for writing Silverlight web parts – both full trust and sandboxed supported</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://visualstudiogallery.msdn.microsoft.com/a15c3ce9-f58f-42b7-8668-53f6cdc2cd83">Web Standards Update for Visual Studio 2010 SP1</a>*</font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Adds Intellisense for HTML5 and CSS3 to VS2010</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://visualstudiogallery.msdn.microsoft.com/ab2b2d63-de37-4f63-b4b0-442f80b59b00">SharePoint Timer Job Item*</a></font></td>
<td valign="top" width="355">Supports the creation of administrative timer jobs in SharePoint 2010</td>
</tr>
<tr>
<td valign="top" width="198"><a href="http://msdn.microsoft.com/en-us/hh127603">SharePoint 2010 and Windows Azure Training Course</a></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Training course to get up to speed on working with SharePoint 2010 and Windows Azure</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://docs.jquery.com/Downloading_jQuery">jQuery Libraries</a></font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Main libraries for working with jQuery</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://jqueryui.com/download">jQuery UI Library</a>&nbsp;</font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">UI controls for use with jQuery</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://api.jquery.com/category/plugins/templates/">jQuery Templates</a> </font></td>
<td valign="top" width="355"><font size="1" face="Segoe WP">Add in for the templating of controls in jQuery</font></td>
</tr>
<tr>
<td valign="top" width="198"><font size="1" face="Segoe WP"><a href="http://www.modernizr.com/">Modernizr</a></font></td>
<td valign="top" width="356"><font size="1" face="Segoe WP">Open source project to allow older browsers to work with HTML5/CSS3 elements</font></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><em>*Available through the Visual Studio Extension Manager</em></p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/sharepoint-tools-for-windows-azure-visual-studio-jquery-and-html5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint Conference 2011&#8211; That&#8217;s A Wrap</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2011-thats-a-wrap/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2011-thats-a-wrap/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 21:39:23 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[SharePoint Conference 2011]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2011-thats-a-wrap/</guid>
		<description><![CDATA[After a whirlwind week of activity, I thought that it would be a good time to jot down a few observations from this year’s SharePoint conference, before life catches up and it all evaporates. One thing is certain is that the conference exceeded my expectations. Although it was light on new product information, it was <a href='http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2011-thats-a-wrap/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>After a whirlwind week of activity, I thought that it would be a good time to jot down a few observations from this year’s SharePoint conference, before life catches up and it all evaporates. One thing is certain is that the conference exceeded my expectations. Although it was light on new product information, it was more than made up by the wealth of best practices information from some absolutely stellar speakers. To be sure, the organizers had telegraphed this focus well in advance, and expectations were set correctly. </p>
<p>There conference was sold out, and while I never got an official number of attendees, the numbers that I heard ranged from 7,000 to 8,000. This is the attendance for a conference for a <em>single</em> product, which is really quite an achievement. In fact, at the keynote, <a href="http://twitter.com/#!/jared_spataro">Jared Spataro</a> announced that SharePoint had sold 125 million licences to 65,000 customers making it the fastest growing product in Microsoft’s history. If SharePoint were a separate company, it would be in the top 50 software companies worldwide. </p>
<p>The keynote contained a single new announcement – that Business Connectivity Services will be available in Office365 before the end of the year. This is great news for my organization given that we specialize in both Office 365 and in Business Intelligence, but then, I may have been aware of this previously. </p>
<p>The demo highlight of the keynote was when <a href="http://twitter.com/#!/_richardriley">Richard Riley</a> demonstrated a 10 TB SharePoint farm with a single content database experience a SQL Server failure and fail over to a hot standby. This was a very impressive demonstration, but it was really just a demo of the new “Always On” features in the upcoming SQL Server “Denali”. I also feel the need to point out that just because you can have a 10 GB content database, it doesn’t mean that you should. As my friend <a href="http://twitter.com/#!/motdiem">Ziad Wakim</a> whispered to me during the demo <em>“try backing THAT up!”.</em></p>
<p>The sessions were the real meat of the show. In fact, I only skipped one time slot. In choosing my sessions, I was looking for 3 things – to fill in any gaps, or to confirm my field practices or to pick up demonstration tips, to see how Denali was being positioned within SharePoint, and to see any new development patterns and practices, particularly around Office365 and Azure. I didn’t get to everything that I&nbsp; wanted to, but I wanted to acknowledge the ones that I did.</p>
<p>On the development front, <a href="http://twitter.com/#!/andrewconnell">Andrew Connell</a> laid out what I think will be the definitive design pattern for working with external data in Office365 and Azure. Fellow Critical Path Training founder <a href="http://twitter.com/#!/TedPattison">Ted Pattison</a> drove home the UI patterns in his talk on using jQuery and HTML5 with SharePoint. Between them, they mentioned a number of useful tools and add ins which I’ll document shortly in an upcoming post. As always, both presenters were highly entertaining.</p>
<p>On the BI front, I attended sessions by <a href="http://twitter.com/#!/insightbigal">Carolyn Chau</a> (Reporting Services), Kevin Donovan (Analysis Services), Peter Myers (PowerPivot), and John Hancock (PerformancePoint and PowerPivot). They outlined the BI features of SQL Server Denali that specifically pertain to SharePoint, in particular project Crescent, and the new version of PowerPivot. PowerPivot is now more than just an analysis tool, it’s also a designer for Analysis Services. Project Crescent is a power user tool meant to support ad hoc reporting. In fact, in my opinion, Crescent has the same relationship to Reporting Services that the current version of PowerPivot has to Analysis Services. In Carolyn’s last session she also noted that Denali would be released in Q1 2012 – we now have a “date”!</p>
<p>In the “best practices” category (I hate that term….) there were a number of standouts. <a href="http://twitter.com/#!/DShadravan">Darvish&nbsp; Shadravan</a> and <a href="http://twitter.com/#!/asifrehmani">Asif Rehmani</a> gave some great insights into Infopath. What many don’t understand is how important Infopath is to SharePoint, particularly to Office365 where coding is significantly more problematic. Darvish was also monitoring a Twitter feed during the session to hand out swag, which I thought was a great idea. I’ll be using something similar for my next presentation for feedback at least. Asif was clear and concise as usual, and both sessions were highly entertaining.</p>
<p><a href="http://twitter.com/#!/eshupps">Eric Shupps</a> led an early morning session on performance tuning, an increasingly important topic for SharePoint farms. I took quite a few notes. I attended the session to confirm my deployment approaches, which I did, but also came away with a laundry list of items to add. Entertaining, and a very good use of my time. </p>
<p>The king of the User Profile service, <a href="http://twitter.com/#!/harbars">Spencer Harbar</a> delivered a clear and concise talk on the User Profile service. I follow Spencer’s blog quite closely, so many of the points that he made I was already aware of. However, I did pick up one technical tidbit that I was previously unaware of. The service requires that the synchronization account be granted the “Replicating Directory Changes” permission in Active Directory. This at times terrifies AD administrators, and it turns out that the name is bad. All that the permission does is to allow the account to read a change log. Spencer also made an excellent point in that the deployment of a user directory is 90% political and only 10% technical. </p>
<p>Finally, <a href="http://twitter.com/#!/cwheeler76">Christina Wheeler</a> wrapped up the session with a spirited, if challenged talk on packaging Branding elements with Visual Studio. I have done extensive work with both branding and with solution packaging, but oddly, have never put the two together. I certainly will in the future. Christina was badly ill with bronchitis, and had to battle a possessed projection system, but did so without ever losing her sense of humour. I didn’t know Christina before attending, but will certainly seek her out in the future. </p>
<p>The best part of SPC is of course the networking events, of which there were several every night. Even though the big Disney night was a letdown in my opinion, the people more than made up for it. I left the conference knowing much more than I did going in, rekindled some (very!) old friendships and started a few new ones. Overall, a great conference. </p>
<p>Now the countdown begins to SPC 2012!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2011-thats-a-wrap/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SharePoint Conference 2012 Announced</title>
		<link>http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2012-announced/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2012-announced/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 18:34:52 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2012-announced/</guid>
		<description><![CDATA[Not long into the SharePoint Conference 2011, it was announced that the next SharePoint Conference will be held in Las Vegas, November 12-15, 2012. This is the first time that a the next SharePoint conference has been announced at the preceding one. In fact, the last conference was in 2009, two years ago. Back to <a href='http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2012-announced/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Not long into the SharePoint Conference 2011, it was announced that the next SharePoint Conference will be held in Las Vegas, November 12-15, 2012. This is the first time that a the next SharePoint conference has been announced at the preceding one. In fact, the last conference was in 2009, two years ago.</p>
<p>Back to Vegas (where it should be!) and only a year from now. Does that mean that 2012 will bring big things to the world of SharePoint? I think that you can bet on it. </p>
<p>Given that the last two conferences have used the same url, I would recommend keeping an eye on <a href="http://www.mssharepointconference.com">http://www.mssharepointconference.com</a> for any updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/10/sharepoint-conference-2012-announced/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Archiving Your SharePoint Workflow History Lists</title>
		<link>http://whitepages.unlimitedviz.com/2011/09/archiving-your-sharepoint-workflow-history-lists/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/09/archiving-your-sharepoint-workflow-history-lists/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 15:09: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[Nintex]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/09/archiving-your-sharepoint-workflow-history-lists/</guid>
		<description><![CDATA[If you’ve worked at all with SharePoint declarative workflows (the ones that you use InfoPath to create), or others, such as Nintex workflows that are based on them, you are undoubtedly aware of their ability to log items to the history list. These items&#160; are those that appear in the Workflow History section of the <a href='http://whitepages.unlimitedviz.com/2011/09/archiving-your-sharepoint-workflow-history-lists/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>If you’ve worked at all with SharePoint declarative workflows (the ones that you use InfoPath to create), or others, such as Nintex workflows that are based on them, you are undoubtedly aware of their ability to log items to the history list. These items&nbsp; are those that appear in the Workflow History section of the workflow status page.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb3.png" width="988" height="529"></a></p>
<p>What may be less commonly known is how this works. This history list is really just a view of items that are contained in a hidden list on the site, and whenever an item is logged to the list, it gets created in the history list. For regular SharePoint workflows, this list is located at <a href="http://yoursiteurl/Lists/Workflow History">http://yoursiteurl/Lists/Workflow History</a>, and for For Nintex workflows, you can find it at <a href="http://yoursiteurl/Lists/NintexWorkflowHistory">http://yoursiteurl/Lists/NintexWorkflowHistory</a>. So, why does this matter? Well, if you need to audit what is has happened with your workflows, this is where the information is contained.</p>
<p>There is, however a catch. By default, SharePoint will run a Timer job named “Workflow Auto Cleanup” daily that will remove all of the the tasks associated with a workflow, and all of the history links for workflows that are over 60 days old. This is done for performance reasons. Well, unless your audit requirements only go back two months, this isn’t going to work for you. </p>
<p>Try doing a search for “Workflow History” and you’ll see that this has caused a number of issues (especially for those that have found it out after the fact. The good news for those people is that the workflow history list isn’t actually purged (which is also bad news, as we’ll see shortly), and those links can be recreated through reporting. However, the most common guidance found on this topic is to simply disable the automatic cleanup job, as outlined in <a href="http://technet.microsoft.com/en-us/library/ee662522.aspx">this very poorly named Technet article</a>.</p>
<p>The problem with disabling the job is that performance will suffer, potentially badly. Assume that we have an approval workflow that runs on a list that will receive 2500 approvals annually. This is a reasonably&nbsp; sized list (for SharePoint 2010). Now lets also assume that during the life of the workflow, 10 items get logged to the history list. This means that in a given year, 25,000 items are being logged to the history list, which is beyond the default list view threshold of administrators, and would be considered a very large list. </p>
<p>What is needed is a way to balance the auditing requirements with the list size constraints of SharePoint. 25,000 items may be a large SharePoint list, but it’s trivial to a relational database like SQL. What the remainder of this article will do is to discuss how to use Microsoft’s Business Intelligence tools to extract workflow history data into a data warehouse, and then safely purge it from the workflow history list. This will be a lengthy one.</p>
<h6>Step 1 – Extract And Load</h6>
<p>In my opinion, one of the most underutilized tools in Microsoft’s arsenal is SQL Server Integration Services (SSIS). Almost every SharePoint site has it, and very few know about it. It is Microsoft’s ETL (Extract, Transform, and Load) tool, and it is used for taking data from source systems, performing operations on it, and loading it into a destination system, which is typically a data warehouse in the form of one or more SQL databases. This is precisely what we need to do with our Workflow History data. You can <a href="http://www.microsoft.com/sqlserver/en/us/solutions-technologies/business-intelligence/integration-services.aspx">read more about SSIS here</a>.</p>
<p>The problem however is that SSIS does not support SharePoint list data as a data source. Yes, ultimately all SharePoint data is stored in SQL content databases, but we all know that we’re supposed to stay out of there. SharePoint data should only be accessed via UI constructs, the SharePoint APIs, or the SharePoint web services. </p>
<p>Happily, <a href="http://sqlsrvintegrationsrv.codeplex.com/">a Codeplex project</a> was created several years ago that adds both source and destination SSIS adapters for SharePoint list data, and yes, it works well with SharePoint 2007 data. What this project does is to encapsulate calls to the SharePoint web services into SSIS data adapters. Because it uses the SharePoint web services (not the API), there is no requirement for the SharePoint bits to be installed where it is being run. </p>
<p><a href="http://dataqueen.unlimitedviz.com/2011/06/how-to-use-a-sharepoint-list-as-a-data-source-in-your-ssis-package/">You can find an excellent tutorial on how to set this up here</a>, so I’m not going to go into any details on that. I will however cover the basic steps below. First, however I want to outline the logic involved. </p>
<p>What we want to be able to do is to maintain a complete log of workflow history. We also want to be able to keep the history in SharePoint for a period of time (60 days by default), and then be able to purge it, knowing that it’s secure in the data warehouse. Therefore, we need to take an initial dump of the data, and then be able to add only new items to it. The design of the data warehouse will also support multiple site history lists. </p>
<p>The solution will consist of 2 tables in a SQL data warehouse (a staging table and the actual archive table). The SSIS package will perform the following steps:</p>
<ol>
<li>Empty the staging table</li>
<li>Extract the entire Workflow History List (SP) into the staging table (SQL)</li>
<li>Query the archive table for the most recent entry</li>
<li>Extract all items from the staging table more recent than the entry in step 3 into the archive table, and add in a site identifier.</li>
</ol>
<p>First, open up Business Intelligence Development Studio (BIDS). BIDS is really just Visual Studio with all of the SQL BI project types added, and is normally installed when SQL is installed. If not, you can install it from the SQL media. You do not need SQL server installed to use it, but it does have some advantages. </p>
<p>From the Business Intelligence Projects section, select “Integration Services Project”, and give it a solution and project name. You’ll then be presented with the SSIS design canvas. The first thing that you’ll want to do is to create two connection managers – one for SharePoint, and one for SQL. In the Connection Managers pane right click anywhere in the window and select “New Connection”</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb4.png" width="629" height="372"></a></p>
<p>Scroll down, and select SPCRED – Connection manager for SharePoint connections, give it a name, and select the credentials. If you use the credentials of the executing process, it will use your credentials when you test it, but the credentials of the SQL Server Agent process if you schedule it to run automatically. Alternatively, you can enter the credentials of a proxy account, which is what I typically do. Repeat this process, only this time select OLEDB and configure the connection to your SQL Data Warehouse database (if you haven’t already done so, you’ll need to create a SQL database to house the archive).</p>
<p>Next, from the Toolbox, drag a Data Flow Task onto the Design surface. Your surface should look something like below:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb5.png" width="541" height="400"></a></p>
<p>Double click on the Data Flow task, and the Data Flow window will open (you can also click on the Data Flow Tab). Here, from the toolbox, drag a SharePoint List Source, and an OLE DB Destination task onto the surface. Double click on the SharePoint List source, then click in the area to the right of the SharePoint Credential Connection, and set the Connection manager to the manager that you created above.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb6.png" width="602" height="186"></a></p>
<p>Next, click on the Component properties tab, and enter valid values for the SharePoint source site URL, and the list name. The List name will either be WorkflowHistory for standard SharePoint workflows, or NintexWorkflowHistory, for Nintex workflows.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb7.png" width="660" height="426"></a></p>
<p>Click OK. Next, grab the green arrow at the bottom of the SharePoint List source, and connect it to the OLE DB Destination. Double click on the OLE DB Destination, and select the New button beside the Name of the table field. What this allows us to do is to create our Temp Table in the Data Warehouse with the appropriate schema for our Workflow History List. Once the create table widow is open, simple change the name of the table to what you want (in this case wfhStaging). </p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb8.png" width="591" height="480"></a></p>
<p>As soon as you click OK, the table is created in SQL. Next, click the Mappings tab on the left, and confirm that all of the fields are mapped correctly from the SharePoint list, to the SQL table. No changes should be required. When complete, click OK, and the data flow is ready for testing. From the BIDS debug menu, select Start debugging. After a pause, the process will run, and the boxes will turn&nbsp; yellow and green as the process executes. If all works properly, you will see something like the screen below:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb9.png" width="163" height="152"></a></p>
<p>Both boxes green indicate that the process completed successfully, and there will be an indicator showing the number of rows that were transferred. You can confirm this by opening up SQL Server Management Studio, selecting your Data Warehouse database and running the following query:</p>
<pre class="csharpcode"><span class="kwrd">SELECT</span> <span class="kwrd">Count</span>(id) <span class="kwrd">From</span> wfhStaging</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>At this point, we need to stop our debugging process and switch back to the Control Flow tab. Given that we want to repopulate the staging table whenever we run this package, we need to first clear it at the beginning of the run. Drag an “Execute SQL Task” from the toolbox onto the design surface above or to the left of the data flow task. Us its arrow to connect it to the Data Flow task, and then double click on it. Select your OLE DB connection as its connection property and enter the following SQL (substituting your table name) as its SQL Statement:</p>
<pre class="csharpcode"><span class="kwrd">TRUNCATE</span> <span class="kwrd">TABLE</span> wfhStaging</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><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb10.png" width="511" height="210"></a></p>
<p>Next, we will need to create and populate our actual archive table. To do this, drag another Data Flow task onto the design surface. Connect the output from the first data flow task to it and then double click on it. Drag an OLEDB Source, a derived column, and an OLEDB destination onto the design surface. </p>
<p>We want to be able to store the workflow history for multiple sites in the same data warehouse table. To do this, we need to add another identifier column to the schema of the workflow history list that will uniquely identify the source site. In our case we will use the relative site URL. The derived column action will add this column to each row as it is processed. </p>
<p>Configure the OLEDB Source to read from the Staging table. Then, connect the OLEDB Source to the Derived Column action with the green arrow. Double click on the derived column action. Under the Derived Column Name, enter the name of the new column. Leave the Derived Column action as “add as new column”, and for the expression we will simply use a literal string for the site relative site URL. When complete, the action should appear as below.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb11.png" width="678" height="637"></a></p>
<p>Click OK to close the dialog, and then connect the derived column action to the OLEDB Destination action with the green arrow. Double click the OLEDB Destination action and repeat the steps taken above to create the staging table, only this time, you’ll create the actual archive table. This time, when you click on the Mappings tab, note that the SiteURL column has been added at the bottom. Don’t run debug at this point, as it will run the entire package. Click back on the Control Flow tab,&nbsp; right click on the new Data Flow action, and select Execute Task. Just that task will run, and if you move back to the Data Flow tab, you should see that the same number of rows have been added to the archive table. </p>
<p>Now we need to ensure that only the new columns from the staging table are moved into the archive table. To do this, we will change the select statement in the OLEDB source of the second data flow task. Firstly, we’ll need to know what the date/time latest record in the archive table <strong>for this site</strong>. The SQL statement for this looks like </p>
<pre class="csharpcode"><span class="kwrd">SELECT</span> <span class="kwrd">MAX</span>(Modified) <span class="kwrd">From</span> wfhArchive
<span class="kwrd">Where</span> SiteURL=<span class="str">'/SalespersonChangeRequest'</span></pre>
<p>So therefore, we can embed that statement into the select statement for our staging table. However, we still need to accommodate the case where there are no records in the archive table, where the above statement returns a NULL value. To deal with this, we can use the ISNULL TSQL function, and our complete staging table select statement will be</p>
<pre class="csharpcode"><span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> wfhStaging
<span class="kwrd">Where</span> Modified &gt;
  ISNULL(
      (<span class="kwrd">SELECT</span> <span class="kwrd">MAX</span>(Modified) <span class="kwrd">From</span> wfhArchive
       <span class="kwrd">Where</span> SiteURL=<span class="str">'/SalespersonChangeRequest'</span>
       ),
       <span class="str">'1900-01-01'</span>)</pre>
<p>Translated into English, this basically says “Find the value for modified of the most recent record of any items with SiteURL set to /SalesPersonChangeRequest. If you don’t find any, set it to 1900-01-01. Then, get me everything from the staging table with a modified date more recent.”</p>
<p>Now that we have our SQL, we need to modify our OLEDB Source action. Double click on it, and then change the Data access mode from “Table or view” to “SQL command”. Then, add the select statement to the SQL command text window. At completion, the window should appear as follows:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/image12.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/2011/09/image_thumb12.png" width="638" height="387"></a></p>
<p>Once done click back to the Control Flow tab, and then start Debugging (you can also just press the F5 key to start debug). The first Data Flow task should write all of the source records to the table, and the second should write none (assuming nothing has happened to the source since you did the initial extract. You can try deleting some of the records from the archive table, and rerunning the package – they should get replaced. That was step 1.</p>
<h6>Step 2 – Schedule the package</h6>
<p>Now that we have our package, we want it to run periodically (usually nightly). We do this by deploying the package to the server, and then scheduling to run with the SQL job agent.</p>
<p>To deploy the package, we need to first create a deployment utility for it. To do this, we must first select the Project in the Solution Explorer pane, and then select Project-Properties from the menu. The Configuration Properties window is then opened. In the left pane, select the Deployment Utility tab, and ensure that the CreateDeploymentUtility is set to True.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/image13.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/2011/09/image_thumb13.png" width="624" height="156"></a></p>
<p>Also – take note of the DeploymentOutputPath value.</p>
<p>run the deployment utility for it. The deployment utility is&nbsp; stored in a subfolder of the package project. You can find the folder of the project by selecting the project in the Solution Explorer pane, and then examining its FullPath&nbsp; property in the Properties pane. Open the project path in Windows Explorer, and then navigate to the DeploymentOutputPath as noted above. In that folder, you’ll find a file named <em>yourprojectname</em>.SSISDeploymentManifest. When ready to deploy, double click on it, and the Deployment wizard will start. </p>
<p>The deployment wizard is straightforward and self explanatory. You’ll want to select “SQL Server deployment” on the first screen, then the SQL server that you wish to deploy to (usually (local) ), and select a location for the Package Path (the root is likely fine). Once the wizard is complete, you are ready to schedule the package. </p>
<p>Open Up SQL Server Management Studio, and connect the destination server. If the SQL Server Agent service is not running, start it (you’ll want to make sure that it is started automatically). Expand the Agent node, and then expand the Jobs node. Right click on Jobs, and select New Job.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/image14.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/2011/09/image_thumb14.png" width="244" height="229"></a></p>
<p>Give the Job a name, then click on the Steps tab. Click the New button to create a new step, and give it a name. In the Type dropdown, select “SQL Server Integration Services Package”. In the General section, select the SQL server that holds the package, and then use the ellipsis in the Package field to select the package you deployed above.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/image15.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/2011/09/image_thumb15.png" width="703" height="628"></a></p>
<p>Next, click the Schedules tab, click the new button, give the schedule a name, and select when you want the job to run. Save the schedule, and then save the job (click OK). Your job should now appear in the Jobs folder. To test it, right click on it and select “Start Job at step”. The job will run and you will see its progress in a dialog.</p>
<p>There are many options for scheduling SSIS jobs, and for error handling, and I would strongly recommend investigating them. </p>
<h6>Step 3 – Purge the Workflow History Data</h6>
<p> As mentioned above, the workflow cleanup job removes workflow history associations, but does not actually delete the items from the list, allowing that list to grow large. If you use Nintex, there’s a Nintex command that will take care of this for you:</p>
<pre class="csharpcode">NWAdmin.exe –o PurgeHistoryListData  -siteUrl urlToSite
 [-workflowName workflowName] [-days daysSinceLastActivity]
 [-lastActivityBefore datetime DateFormat)] [-state All|Running|Completed|Cancelled|Error]
 [-deletedLists] [-clearAll [-workflowItemId id -workflowListName <span class="str">"list name"</span>]] [-verbose]
 [-reportOnly] [-batchSize numberDefaultIs500]
 [-pauseAfterBatch] [-maxItemsToDelete number]</pre>
<p>This command is run on a front end server. To keep things up to date it would need to be scheduled. However, if you’re using out of the box workflows, there is no equivalent command. You could just access the history list and remove old data, but since SharePoint has built in tools for this, I recommend using them. These features are contained in the Information management policy settings of any list.</p>
<p>Open the Workflow history list (your site url + Lists/WorkflowHistory or NintexWorkflowHistory). Open the List settings page, and select “Information management policy settings” in the Permissions and Management section. If you don’t see this option, you may need to enable the relevant features.In the Content type policies, select the Workflow History content type, and then select “Enable Retention”. Once enabled, you will be able to select “Add a retention stage”. </p>
<p>The retention stage is what we will use to delete the workflow history items (which, given the name, is somewhat counter-intuitive, don’t you think?). Date occurred is when the event occurred, so it is likely our best time indicator, and I would suggest a period of time at least double to the automatic cleanup task, which is 60 days. Finally, we want the item to be deleted at this point, so we select “Permanently Delete” from the Action dropdown. When complete, the stage will appear as follows:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/SNAGHTML3911db5c.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="SNAGHTML3911db5c" border="0" alt="SNAGHTML3911db5c" src="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/SNAGHTML3911db5c_thumb.png" width="520" height="542"></a></p>
<p>Once we save our policy, the expired items will be deleted the next time the timer jobs run.</p>
<p>And that’s all there is to it! </p>
<p>Now that we’ve taken the data out of SharePoint, it’s no longer obviously available to end users. If this is important, we will need to build some Reporting Services reports, and integrate them back into the appropriate locations in SharePoint. This will (hopefully) be the subject of an upcoming post.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/09/archiving-your-sharepoint-workflow-history-lists/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upgrading From WSS 3.0 to Search Server Express</title>
		<link>http://whitepages.unlimitedviz.com/2011/09/upgrading-from-wss-3-0-to-search-server-express/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/09/upgrading-from-wss-3-0-to-search-server-express/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 18:56:45 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Office Web Applications]]></category>
		<category><![CDATA[Search Server Express]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Foundation]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/09/upgrading-from-wss-3-0-to-search-server-express/</guid>
		<description><![CDATA[About a year ago, I wrote a couple of articles (here and here) that discuss the merits of using Search Server Express 2010 instead of SharePoint Foundation. It really boils down to the fact that you get more stuff, and it’s still free. As opportunities for Foundation arise, we have been installing SSE and our <a href='http://whitepages.unlimitedviz.com/2011/09/upgrading-from-wss-3-0-to-search-server-express/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>About a year ago, I wrote a couple of articles (<a href="http://whitepages.unlimitedviz.com/2010/09/how-to-index-pdf-files-with-sharepoint-foundation-2010/">here</a> and <a href="http://whitepages.unlimitedviz.com/2010/09/secure-store-service-is-included-with-search-server-express-2010/">here</a>) that discuss the merits of using Search Server Express 2010 instead of SharePoint Foundation. It really boils down to the fact that you get more stuff, and it’s still free. As opportunities for Foundation arise, we have been installing SSE and our customers are quite pleased with the result. </p>
<p>I recently had the opportunity to perform an in place upgrade of a WSS 3.0 site that we had built a few years ago to Foundation, and I of course decided to use SSE instead. As it turns out, the upgrade wasn’t quite as straightforward as I had hoped. </p>
<p>Normally, when you perform an in place upgrade from WSS to Foundation, you first install the bits, and then run the Products and Technologies Configuration Wizard, which in turn detects the pre-existing WSS installation and offers to upgrade it. Unfortunately, this doesn’t happen with SSE. The Wizard only prompted for a new or existing Farm.&nbsp; </p>
<p>The next step was to uninstall SSE, and to Install Foundation, once this was done, the Wizard did detect the existing installation, and properly upgraded the entire farm. Once this was done, I thought “why wait?” and I went ahead and laid down the bits for Search Server Express and then for Office Web Applications. </p>
<p>Everything seemed alright, but when I tried to start the services on the server, they simply weren’t there. It also wasn’t possible to create the corresponding Service Applications for either SSE or for the Office Web Applications. After much head pounding, I decided to uninstall everything, OWA, SSE, and Foundation (<a href="http://whitepages.unlimitedviz.com/2010/09/office-web-applications-installation-issuesbe-very-careful/">CAREFULLY as outlined here.</a>.), and then Install SSE alone, joining it to the Pre-existing farm. </p>
<p>Once that was done, everything showed up properly, and I was able to properly start the appropriate search services, and OWA services, and to create the appropriate service applications. </p>
<p>So as it turns out, order of operations is pretty important in this scenario. If you want to upgrade from WSS 3.0 to Search Server Express 2010 (using the in place upgrade approach), you’ll want to follow these steps:</p>
<ol>
<li>Install SharePoint Foundation 2010 on your server</li>
<li>Run the Products Configuration Wizard, and perform the upgrade</li>
<li>Uninstall SharePoint Foundation from the server, removing it from the farm</li>
<li>Install Search Server Express 2010 on the Server</li>
<li>Run the Products Configuration Wizard, and re-join the existing farm</li>
<li>Test the site to ensure that it’s functional</li>
<li>(optional) Install any appropriate Service Packs and/or hot fixes for SSE</li>
<li>(optional) Run the Products Configuration Wizard to update the databases (if step 7 was performed)</li>
<li>(optional) If desired, Install Office Web Applications, and any appropriate Service Packs for OWA</li>
<li>Run the Products Configuration Wizard to complete the OWA installation</li>
<li>Start all necessary services, create the necessary service applications (search is a big one….)</li>
<li>Create a basic Search Center and configure your site collection to use it.</li>
</ol>
<p>Hopefully this helps any other folks in the same situation. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/09/upgrading-from-wss-3-0-to-search-server-express/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Upgrade breaks Microsoft Access Client Application</title>
		<link>http://whitepages.unlimitedviz.com/2011/09/sharepoint-2010-upgrade-breaks-microsoft-access-client-application/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/09/sharepoint-2010-upgrade-breaks-microsoft-access-client-application/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 01:28:58 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Office 365]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[List Throttling]]></category>
		<category><![CDATA[Microsofft Access]]></category>
		<category><![CDATA[Resource Throttling]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/09/sharepoint-2010-upgrade-breaks-microsoft-access-client-application/</guid>
		<description><![CDATA[I have been doing quite a few 2007-2010 upgrades lately, and suffering the appropriate slings and arrows. A recent upgrade resulted in a few issues, the strangest one was that Microsoft Access could no longer open a SharePoint list. For quite some time now, Microsoft has been able to read and write data from SharePoint <a href='http://whitepages.unlimitedviz.com/2011/09/sharepoint-2010-upgrade-breaks-microsoft-access-client-application/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have been doing quite a few 2007-2010 upgrades lately, and suffering the appropriate slings and arrows. A recent upgrade resulted in a few issues, the strangest one was that Microsoft Access could no longer open a SharePoint list.</p>
<p>For quite some time now, Microsoft has been able to read and write data from SharePoint lists as if they were active Access tables. This is distinct from Access Services, which ships with the Enterprise version of SharePoint Server. Access Services lets you “convert” your entire Access application to a SharePoint site at which point the Access client is no longer required (for a user). </p>
<p>Our situation was much simpler. We were dealing with a Power user that was good with Access, and had leveraged the list read/write capability quite heavily with 2007. However, after the upgrade, Access 2007 couldn’t open some of the lists that it could previously. Compounding this problem was that Access 2010 didn’t have this problem on the lists in question. The browser could also open these lists just fine.</p>
<p>The answer to this one came from what appeared to be a different problem. Some of the other lists in the site couldn’t be opened by the browser. Instead, the user received the message “The query cannot be completed because the number of lookup columns it contains exceeds the lookup column threshold enforced by the administrator”:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb.png" width="603" height="304"></a></p>
<p>SharePoint has a bad reputation for “Unknown Error” messages, but this one is really quite good. This one pointed squarely at the list throttling features available in SharePoint 2010 that of course weren’t there in 2007. Basically, 2010 allows an administrator to throttle, or prevent poorly performing functions from slowing down the system for everyone. One such expensive operation is performing lookups, and the default limit is set to 8. </p>
<p>Dina Ayoub <a href="http://blogs.msdn.com/b/dinaayoub/archive/2010/04/22/sharepoint-2010-how-to-change-the-list-view-threshold.aspx">has a good post here</a> on the throttling features if you would like to learn more, but the important thing to note here is that this setting affects not just lookup fields, but Person/Group and Workflow Status fields as well, so if you have 8 or more of them, the list will simply stop working. </p>
<p>This setting is scoped to the application level, so if it is changed, you affect all site collections in that application. (It also means that you can’t change it at all in Office 365.) You set it through the Resource Throttling settings in Central Administration. Once in CA, click on Application Management, highlight the application to be changed, and in the General Settings dropdown, pick Resource Throttling.</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb1.png" width="794" height="424"></a></p>
<p>Scroll down to the section titled “List View Lookup Threshold”:</p>
<p><a href="http://whitepages.unlimitedviz.com/wp-content/uploads/2011/09/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/2011/09/image_thumb2.png" width="479" height="150"></a></p>
<p>Here, you can simply increase its value to where you need it. </p>
<p>Changing the values should be done with considerable care. These throttling features were implemented for very good reasons, and changing them risks overloading your SQL server. A much better approach would be to go back and rethink the design of your list, if that’s an option. If it isn’t then this is a decent plan B. You can always buy more hardware…….</p>
<p>So this fixed our post upgrade list issue in the browser, how does this relate to our Access problem? Well, it turns out that they were one and the same, just manifesting differently. It seems that Access does something when it opens a list that adds a few more lookup type items to the Query, or at least it behaves that way. It also appears that Access 2010 and Access 2007 behave differently in this regard. In the end, increasing this value sufficiently solved the Access problems.</p>
<p>I haven’t found anything definitive out there, but anecdotally at least, you should be aware that when you use Access to open up a SharePoint list, you pay a &#8220;”List View Lookup Threshold” penalty. </p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/09/sharepoint-2010-upgrade-breaks-microsoft-access-client-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Replace A Custom Field In SharePoint 2010</title>
		<link>http://whitepages.unlimitedviz.com/2011/09/how-to-replace-a-custom-field-in-sharepoint-2010/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/09/how-to-replace-a-custom-field-in-sharepoint-2010/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 02:51:27 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/09/how-to-replace-a-custom-field-in-sharepoint-2010/</guid>
		<description><![CDATA[One of the benefits of SharePoint is its extensibility. It comes with a cornucopia of tools and features that provide fantastic business value, but inevitably, you’ll come across a requirement that the out of the box features don’t address. The good news is that its extensible nature allow for custom development, and these features can <a href='http://whitepages.unlimitedviz.com/2011/09/how-to-replace-a-custom-field-in-sharepoint-2010/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>One of the benefits of SharePoint is its extensibility. It comes with a cornucopia of tools and features that provide fantastic business value, but inevitably, you’ll come across a requirement that the out of the box features don’t address. The good news is that its extensible nature allow for custom development, and these features can be added. </p>
<p>Customization is not without its drawbacks. Just because you can build on SharePoint, it doesn’t mean that you should. With custom code comes all of the costs of ownership of running custom code, and the upgrade difficulties that come with it. If you can possibly use a no-code solution, you probably should. A recent customer challenge that we had is a good demonstration of that, and provides a good example of a highly customized solution being replaced with a no code solution.</p>
<p>Back in the days of SharePoint 2007 (!) we ran across a number of requirements for a cascaded combo box control. When filling out a form, we wanted the options available to one combo box to be driven by the selection in another. Unfortunately, there was no real way to do this with SharePoint forms. It can be done with InfoPath through filtering, but that was only available through InfoPath form libraries. We needed to provide this capability with standard lists.&nbsp; Our solution was to implement a custom column that provided this capability. </p>
<p>This worked perfectly well for a few years, but when it came time to upgrade to SharePoint 2010, we found that the custom control didn’t quite work. One option would of course be to fire up Visual Studio and make the necessary modifications. However, since SharePoint 2010 allows you to use InfoPath to edit standard SharePoint lists now, this was determined to be the better choice, and we could ditch the custom controls. Another drawback of the custom columns is that InfoPath will simply not work with them, making solid form design difficult. </p>
<p>However, given that this was an upgrade, we wanted to make sure that all of the existing data was retained, so we couldn’t just trash the existing data, and start new. We needed to somehow convert the old column data to standard SharePoint data. We were able to do this through the PowerShell Import/Export function, with a few tweaks. </p>
<h6>Step 1 – Upgrade the Content Database</h6>
<p>Before you can use this method, the content databases will need to be in SP2010 format. If you’re doing an in place upgrade, this will happen automatically, but if you’re using the DB attach method, you’ll need to first install the custom solutions on the new farm, or else the database mount procedure could fail. </p>
<h6>Step 2 – Export the List Data</h6>
<p>Most SharePoint administrators are familiar with the STSADM import and export commands that allow you to export and import either single sites or entire site collections. This capability still exists in SharePoint 2010 with both STSADM and with PowerShell, but the PowerShell commands also allow you to export individual lists. </p>
<p>When ready, export your list with the following PowerShell command:</p>
<p><font size="2">Export-SPWeb -Identity <em>siteurl</em> -Path <em>outputpath</em> -ItemUrl <em>listurl</em> –IncludeUserSecurity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -IncludeVersions All -NoFileCompression –Verbose</font></p>
<table border="0" cellspacing="0" cellpadding="2" width="554">
<tbody>
<tr>
<td valign="top" width="552">where:</td>
</tr>
<tr>
<td valign="top" width="552"><em>siteurl</em>&nbsp; is the url to the containing site (or web) i.e. <a href="http://server1/accounts/2010">http://server1/accounts/2010</a></td>
</tr>
<tr>
<td valign="top" width="552"><em>outputpath </em>is the file system path for the output files</td>
</tr>
<tr>
<td valign="top" width="552"><em>listurl</em> is the <strong>relative </strong>url of the list (i.e. Lists/customers)</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The NoFileCompression is important because we need to edit one of the output files after the export is complete.</p>
<h6>Step 3 – Modify The List</h6>
<p>Now that the data has been saved outside of the list, you can go ahead and remove the custom columns from the list. Once you’ve done so, be sure to replace them with identically named columns. If possible, you should also use the SharePoint column type that the custom columns were originally derived from. In my example below, I replace a Cascaded Lookup (custom) column with a Text column.</p>
<p>Once this is done, you’ll also want to delete all of the current items in the list. You could simply delete the list itself, but if you have any workflows, or custom forms, they’ll get deleted too. Also, a new list will have a new internal GUID, which may not work for you. </p>
<p>Another option is to use the Data Sheet view to copy the old field values to Excel, so that you can copy them back after the fields are changed. This approach will update the last edited date and the last edited by, so that may not be acceptable. If it is, you can omit steps 2,4 and 5.</p>
<h6>Step 4 – Edit the Manifest File</h6>
<p>In the path that was used in <em>outputpath</em> in step 2, there will be a number of files. Find any named <em>manifest.xml</em> or <em>manifestx.xml</em> (where x is a number) and edit them. These files contain the metadata for your list. Simply search for the name of your custom field type (in my case, CascadingDropDown) and replace it with the standard type name (like Text). Once all occurrences have been modified, save the file(s).</p>
<h6>Step 5 – Import the List</h6>
<p>Once the manifest has been modified to match the new list schema, you can bring in the exported list, with essentially the reverse of the PowerShell used in Step 2:</p>
<p>Import-SPWeb -Identity siteurl -Path inputpath -IncludeUserSecurity -UpdateVersions Overwrite -NoFileCompression -Verbose</p>
<table border="0" cellspacing="0" cellpadding="2" width="554">
<tbody>
<tr>
<td valign="top" width="552">where:</td>
</tr>
<tr>
<td valign="top" width="552"><em>siteurl</em> is the url to the containing site (or web) i.e. <a href="http://server1/accounts/2010">http://server1/accounts/2010</a></td>
</tr>
<tr>
<td valign="top" width="552"><em>inputpath </em>is the file system path for the input files</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Once the PowerShell completes, you should have all of your data in a list with no custom columns. From there, you can use InfoPath to modify your forms, or anything else that is possible with the standard column types. </p>
<p>One caveat though. We had customized the standard New/Edit/View aspx forms with SharePoint designer. Before we could move toward our InfoPath goal, we needed to recreate these forms as standard forms.</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/09/how-to-replace-a-custom-field-in-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upgrade Failure &#8211; The statistics &#8216;xxxx&#8217; is dependent on column &#8216;tp_ContentType&#8217;</title>
		<link>http://whitepages.unlimitedviz.com/2011/08/upgrade-failure-the-statistics-xxxx-is-dependent-on-column-tp_contenttype/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/08/upgrade-failure-the-statistics-xxxx-is-dependent-on-column-tp_contenttype/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 15:53:02 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/08/upgrade-failure-the-statistics-xxxx-is-dependent-on-column-tp_contenttype/</guid>
		<description><![CDATA[&#160; I wrote recently about overcoming an issue with orphaned documents when doing a database attach upgrade from SharePoint 2007 to SharePoint 2010. During that same database upgrade, I managed to run into a second nasty error. After running the PowerShell mount-spContentDatabase command, the progress would go to approximately 15% complete, and then the process <a href='http://whitepages.unlimitedviz.com/2011/08/upgrade-failure-the-statistics-xxxx-is-dependent-on-column-tp_contenttype/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I <a href="http://whitepages.unlimitedviz.com/2011/08/sharepoint-upgrade-failure-orphaned-documents-not-orphaned-lists/">wrote recently</a> about overcoming an issue with orphaned documents when doing a database attach upgrade from SharePoint 2007 to SharePoint 2010. During that same database upgrade, I managed to run into a second nasty error. After running the PowerShell mount-spContentDatabase command, the progress would go to approximately 15% complete, and then the process would fail. Investigation of the upgrade log revealed the following errors:</p>
<pre class="csharpcode">[powershell] [SPContentDatabaseSequence] [ERROR] [8/26/2011 8:56:01 AM]: Action 4.0.2.0 of Microsoft.SharePoint.Upgrade.SPContentDatabaseSequence failed.
[powershell] [SPContentDatabaseSequence] [ERROR] [8/26/2011 8:56:01 AM]: Exception: The statistics <span class="str">'_dta_stat_1365579903_2_3_4_188_190_27_28_187_192'</span> <span class="kwrd">is</span> dependent on column <span class="str">'tp_ContentType'</span>.
The statistics <span class="str">'_dta_stat_1365579903_28_192_190_4_27_187_188_3_26_2'</span> <span class="kwrd">is</span> dependent on column <span class="str">'tp_ContentType'</span>.
The statistics <span class="str">'_dta_stat_1365579903_3_4_188_190_27_28_187'</span> <span class="kwrd">is</span> dependent on column <span class="str">'tp_ContentType'</span>.
ALTER TABLE DROP COLUMN tp_ContentType failed because one or more objects access <span class="kwrd">this</span> column.</pre>
<p>This was happening&nbsp; when the upgrade process was altering the Database schema, and removing the tp_ContentType column from the table. I know SQL quite well from a BI perspective, and well enough from a SharePoint perspective, but I had never before bumped into a problem with SQL statistics. </p>
<p>Statistics are created in conjunction with indices to help optimize performance. Kim Tripp talks about them in a <a href="http://sqlskills.com/BLOGS/KIMBERLY/post/Database-Maintenance-Best-Practices-Part-I-e28093-clarifying-ambiguous-recommendations-for-Sharepoint.aspx">good article here</a>, and Idera has a nice <a href="http://sqlserverperformance.idera.com/tsql-optimization/understanding-sql-server-statistics/">in-depth discussion on them here</a>. However nice they may be, they were preventing my upgrade, so how important were they?</p>
<p>Well, as it turns out, a well meaning SQL DBA had decided that it would be a good idea to optimize the SharePoint databases, and had run a process that created a number of these statistics. Unfortunately, these ones implemented referential integrity constraints that were preventing the schema to be changed, and causing the upgrade to fail. </p>
<p>Luckily, these statistics followed a consistent naming convention. I was fairly easily able to go through each table in the content database and remove the offending statistics (in my case, all of the ones that began with “_dta”. There were other statistics in there, and they were left alone. </p>
<p>Once the statistics were removed, the upgrade proceeded smoothly. Once again, I was forced to manipulate the content database directly to solve a problem, which is not at all a good idea generally. However, in this case, it was done to undo some other changes previously implemented. </p>
<p>Hopefully this can save someone else some grief in the future.</p>
<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>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/08/upgrade-failure-the-statistics-xxxx-is-dependent-on-column-tp_contenttype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Upgrade Failure &#8211; Orphaned Documents not Orphaned Lists</title>
		<link>http://whitepages.unlimitedviz.com/2011/08/sharepoint-upgrade-failure-orphaned-documents-not-orphaned-lists/</link>
		<comments>http://whitepages.unlimitedviz.com/2011/08/sharepoint-upgrade-failure-orphaned-documents-not-orphaned-lists/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 02:52:15 +0000</pubDate>
		<dc:creator>John White</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Orphans]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://whitepages.unlimitedviz.com/2011/08/sharepoint-upgrade-failure-orphaned-documents-not-orphaned-lists/</guid>
		<description><![CDATA[Upgrading to SharePoint 2010 from 2007 is well worthwhile, and is significantly easier than the upgrade from 2003 to 2007 was. With that said, there are a number of things to look out for, and a number of bumps along the way. Running the stsadm –o preupgradecheck on your SharePoint 2007 farm identifies a number <a href='http://whitepages.unlimitedviz.com/2011/08/sharepoint-upgrade-failure-orphaned-documents-not-orphaned-lists/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Upgrading to SharePoint 2010 from 2007 is well worthwhile, and is significantly easier than the upgrade from 2003 to 2007 was. With that said, there are a number of things to look out for, and a number of bumps along the way. Running the stsadm –o preupgradecheck on your SharePoint 2007 farm identifies a number of the potential pitfalls and alerts you to their dangers. </p>
<p>Recently, I was at a client site doing a database attach upgrade, and we ran into a warning about orphaned objects. Orphaned objects will cause the upgrade to fail, so it needs to be remedied prior to the upgrade.</p>
<p>Orphaned objects are items that exist in the database, but aren’t properly connected to anything in the site collection. Orphaned objects are typically sites or lists. Joel Oleson has a <a href="http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=291">good article</a> on deleting orphaned sites, Orphaned lists are trickier with much of the guidance pointing to removing and then re-adding the content database. Also there is an stsadm command that should repair orphaned objects. The syntax is:</p>
<p>stsadm –o databaserepair –url yoururl –databasename contentDB –deletecorruption</p>
<p>Using the –deletecorruption directive goes ahead and fixes the problem, without it, it just tells you where the problem lies. </p>
<p>Unfortunately, nothing worked in my case. Running databaserepair simply resulted in a return that looked like the following:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">OrphanedObjects</span> <span class="attr">Count</span><span class="kwrd">="1"</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">Orphan</span> <span class="attr">Type</span><span class="kwrd">="SPList"</span> <span class="attr">Id</span><span class="kwrd">="{787A6375-ABA3-4475-AE64-230853EB4448}"</span> <span class="attr">SiteId</span><span class="kwrd">="{13AB0F9E-386B-4128-916C-E70BFC6A45F3}"</span> <span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">OrphanedObjects</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>
<p><a href="http://social.technet.microsoft.com/Forums/sv-SE/sharepoint2010setup/thread/e939d2fa-1056-403c-a665-0947b4831bf7">This discussion</a> (in which the response marked as an answer isn’t the answer) got me pointed in the right direction. I am loathe to do anything directly in the content database, but if I had an orphan, I could at least find it there. I therefore opened up the AllLists table in the content database and did a SQL search for my list, like:</p>
<p>select * from AllLists Where tp_ID=’787A6375-ABA3-4475-AE64-230853EB4448’</p>
<p>Unfortunately, I got no results. This was baffling. </p>
<p>I had the GUID of the offending list, but it didn’t exist in the list table. I started rooting around elsewhere. It wasn’t too long before I found a reference to it in the AllDocs table, in the ListId column. To me, that meant that I didn’t have an orphaned list, but an orphaned document that was referring to a non-existent list.. </p>
<p>After determining that the document was in fact disposable, I deleted its record with some simple SQL </p>
<p>DELETE FROM AllDocs Where ListID = ‘787A6375-ABA3-4475-AE64-230853EB4448’</p>
<p>Once that was done, I ran the preupgrade check, and all was clear – no more orphaned objects. We could proceed to the next roadblock… (more on that later).</p>
<p>This solution worked in my case, but as it involves monkeying with the content database, use at your own risk, and whatever you do – have a backup of the database available!</p>
]]></content:encoded>
			<wfw:commentRss>http://whitepages.unlimitedviz.com/2011/08/sharepoint-upgrade-failure-orphaned-documents-not-orphaned-lists/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

