<?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>wsspectacular</title>
	<atom:link href="http://vspug.com/wsspectacular/feed/" rel="self" type="application/rss+xml" />
	<link>http://vspug.com/wsspectacular</link>
	<description>Thoughts on SharePoint, SQL, and Geekdom</description>
	<lastBuildDate>Sat, 24 Oct 2009 02:38:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ZOMG</title>
		<link>http://vspug.com/wsspectacular/2009/10/23/zomg/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/23/zomg/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 02:38:17 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/?p=55</guid>
		<description><![CDATA[I just got interviewed by Microsoft!
On Wednesday I was at the Visio 2010 booth and I guess I impressed them enough that they wanted to interview me, on camera, talking about what I&#8217;ve done with the product. I told them about when I designed a Visual Basic solution for Visio 2000 that would capture the [...]]]></description>
			<content:encoded><![CDATA[<p>I just got interviewed by Microsoft!</p>
<p>On Wednesday I was at the Visio 2010 booth and I guess I impressed them enough that they wanted to interview me, on camera, talking about what I&#8217;ve done with the product. I told them about when I designed a Visual Basic solution for Visio 2000 that would capture the connection event (when two shapes are connected by a line) on a drawing, where it would track the connections between objects in a back end SQL database. And I told them about the Systems Documentation &#8220;Data Viz&#8221; solution I did, where Visio is connected to a set of SharePoint lists that track servers, SQL instances, and databases, so you can map out your entire SQL farm with data-connected images. They liked that. They said they were going to put it on their Visio page.</p>
<p>Wow! I was so NOT ready to be on camera!</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/23/zomg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Power to the Pivot</title>
		<link>http://vspug.com/wsspectacular/2009/10/22/power-to-the-pivot/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/22/power-to-the-pivot/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 21:05:20 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/?p=52</guid>
		<description><![CDATA[One of the new things rolling out with Office 2010 is called PowerPivot, which can be best explained as &#8220;building an OLAP Cube in memory.&#8221;  If the preceding sentence sounds like gibberish to you, let me smile and say IT DOESN&#8217;T MATTER.  PowerPivot for Excel allows the user to casually pull in data from lots [...]]]></description>
			<content:encoded><![CDATA[<p>One of the new things rolling out with Office 2010 is called PowerPivot, which can be best explained as &#8220;building an OLAP Cube in memory.&#8221;  If the preceding sentence sounds like gibberish to you, let me smile and say IT DOESN&#8217;T MATTER.  PowerPivot for Excel allows the user to casually pull in data from lots of different sources and build interactive Chart/Table solutions. </p>
<p>You can, for example, show a table with product sales, then stick a chart next to it, then put a &#8220;vertical slice&#8221; above it (populated with buttons you can multi-select to show only certain categories) then put a &#8220;horizontal slice&#8221; next to it (again populated with buttons you can multi-select to show certain countries).</p>
<p>The Microsoft guy at the Excel PowerPivot booth demonstrated this for me on a spreadsheet that had over 4 million rows of data.  Each change, whether sorting or filtering or transforming data, was applied almost instantly.  The longest it took was when he added a calculated column to the 4 million-row spreadsheet, took about 5 seconds.  He had a 64-bit machine with 6GB, but he said that was because it was also running SQL, SharePoint, and Exchange.  On his 2GB laptop, it also screams.</p>
<p>Excel can now pull data in from a variety of sources, including &#8220;feeds&#8221;.  He said in SQL 2008 R2 Reporting Services, there is a small button you can click to &#8220;enable ATOM feed&#8221;.  Then this report&#8217;s data source can be exposed and consumed elsewhere.  Excel will read the data source and pull in a live resultset.</p>
<p>The cool part comes when you publish this to SharePoint.  The Excel spreadsheet itself can be referenced as an OLAP cube. </p>
<p>BAM!  A user has just become a BI designer.</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/22/power-to-the-pivot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Conference Notes: 10-21-09</title>
		<link>http://vspug.com/wsspectacular/2009/10/22/sharepoint-conference-notes-10-21-09/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/22/sharepoint-conference-notes-10-21-09/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 19:27:49 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/?p=48</guid>
		<description><![CDATA[I was going to write about how Microsoft Office 2010 and SharePoint 2010 are a fabulously awesome mix of pixie dust and candy stars, but John Anderson&#8217;s blog over at Bamboo Solutions beat me to it.  The guy might have been sitting next to me.  You should go read it now.  G&#8217;head, I&#8217;ll wait. 
So what I&#8217;ll talk about instead [...]]]></description>
			<content:encoded><![CDATA[<p>I was going to write about how Microsoft Office 2010 and SharePoint 2010 are a fabulously awesome mix of pixie dust and candy stars, but John Anderson&#8217;s blog over at Bamboo Solutions beat me to it.  The guy might have been sitting next to me.  <a href="http://community.bamboosolutions.com/blogs/sharepoint-2010/archive/2009/10/21/spc-better-together-collaboration-with-sharepoint-2010-office-2010-amp-more.aspx">You should go read it now</a>.  G&#8217;head, I&#8217;ll wait. </p>
<p>So what I&#8217;ll talk about instead is the coolness that is Project Server, in particular, the upgrade path.  What I learned is:</p>
<ul>
<li>Project Server 2010 is VERY worthwhile.  You can do lots of new and valuable things.  It is worth an upgrade.  I won&#8217;t go into detail here because frankly it&#8217;s overwhelming and I need to reread it.</li>
<li>Project Server 2010 ONLY runs on SharePoint 2010 <strong><em>Enterprise</em></strong>.  But if you have a current Project Server 2007 deployment (on WSS 3.0) and have Software Assurance, this will cover the upgrade.  So you&#8217;ll end up with SharePoint 2010 Enterprise along with Project Server 2010 Enterprise.</li>
<li>Project 2003, 2007, 2010 can connect to PS 2010 when it is in Backward Compatibility Mode.  BCM is a compromise, because some (but not all) new features are disabled.
<ul>
<li>The experience is that:
<ul>
<li>Project Pro 2007 will ignore new features.</li>
<li>Project Pro 2010 will light up to reveal the new features that are available.  The unavailable features will be grayed out, and mousing over them displays a message that the product is connected in Compatiblity Mode.</li>
</ul>
</li>
<li>To enable all functionality, you can move from BCM to native mode but this is one-way only.  Once you&#8217;ve disabled BCM, you can&#8217;t go back.</li>
</ul>
</li>
<li>Project Pro 2010 cannot connect to Project Server 2007</li>
<li>Project Pro 2007 and 2010 can be installed on the same machine, but cannot run at the same time.  This is likely to be a common scenario while users are moving between versions of MS Project.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/22/sharepoint-conference-notes-10-21-09/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Geeks in Line</title>
		<link>http://vspug.com/wsspectacular/2009/10/22/geeks-in-line/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/22/geeks-in-line/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 14:29:23 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/?p=45</guid>
		<description><![CDATA[Here are some observations about the animal behaviors of Geeks.
 Geeks are a peculiar breed of human being.  Predominantly male, these creatures find that their preoccupation with abstract concepts places them far outside the social mores of commonly accepted behavior. 
 Geeks have a marvelously short attention span.  Geeks standing in line will, within 3-25 seconds, whip out [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some observations about the animal behaviors of Geeks.</p>
<p> Geeks are a peculiar breed of human being.  Predominantly male, these creatures find that their preoccupation with abstract concepts places them far outside the social mores of commonly accepted behavior. </p>
<p> Geeks have a marvelously short attention span.  Geeks standing in line will, within 3-25 seconds, whip out any mobile or electronic device and begin (playing/texting/speaking/staring off into space).  Studies have found that it doesn’t matter how long the line is, and in fact they may even be in the front.  Any stationary Geek will need to preoccupy himself with <em>something</em>.  (Note: Geeks who do not have mobile devices are outcasts even in their own outcast subculture.)</p>
<p> Geeks do not feel embarrassed about sitting on the floor if it means they can use their laptops.  They may even reject an available chair if it is not close to an electrical outlet.</p>
<p>Geeks with “bling” will proudly display it.  Logos, name badges, wristbands, hats, and all other types of adornment are seen as status symbols, even if 99.999% of the public has no idea what the slogans or logos mean.  Geeks seek status within their own outcast subculture.</p>
<p>Even for Geeks, sex sells.  If a vendor is advertising a relatively boring product, they may seek to employ a non-geek “hottie” who will do her best to dress scantily, wink, and flirt with Geeks passing by, to get them to stop and listen.  To wit: a “SharePoint Fairy” dressed in a costume with wings and wand can stop a Geek at a hundred paces.  A “SharePoint businesswoman” with a southern drawl and an easy wink can gather a throng of Geeks in minutes.  Geeks even be aware of this manipulation, but don’t care.  They are, after all, predominantly male.</p>
<p>Geeks don’t dance.  Ever.  A large sampling of 7500 Geeks at a recent Huey Lewis and the News concert shows that Geeks won’t do more than nod their heads to the beat even at the most catchy of tunes.  During this time it was observed that one Geekette was dancing, but she may have only been marginally Geeky.</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/22/geeks-in-line/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint Conference Notes: 10-20-09</title>
		<link>http://vspug.com/wsspectacular/2009/10/21/sharepoint-conference-notes-10-20-09/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/21/sharepoint-conference-notes-10-20-09/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 22:06:20 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/?p=42</guid>
		<description><![CDATA[First, a couple of links to items of interest:

Windows 7 preorders even topped Harry Potter 7?  Inconceivable!!
SharePoint 2010: Developer and IT Professional Learning Plan
Now that SharePoint 2010 has been announced, it&#8217;s interesting to take a look at the different flavors of it.  I was going to write this up, but fortunately it&#8217;s already done for [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="text-decoration: underline">First, a couple of links to items of interest:</span></strong></p>
<ul>
<li><a href="http://enews.penton.com/enews/windowsitpro/infodaily_/2009_october_21_102109/display">Windows 7 preorders even topped Harry Potter 7?  Inconceivable!!</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ac9a3851-c298-4f4f-b7f0-63d756d2bde9&amp;displaylang=en">SharePoint 2010: Developer and IT Professional Learning Plan</a></li>
<li><span style="font-family: Tahoma;color: #000000;font-size: x-small">Now that SharePoint 2010 has been announced, it&#8217;s interesting to take a look at the different flavors of it.  I was going to write this up, but fortunately <a href="http://www.cio.com/article/505530/SharePoint_2010_a_Guide_to_the_Many_Versions" target="_blank">it&#8217;s already done for me</a>.</span></li>
</ul>
<div dir="ltr"><span style="font-family: tahoma;font-size: x-small"><strong><span style="text-decoration: underline">Now, some thoughts about SharePoint 2010 and Social Computing:</span></strong></span></div>
<div dir="ltr"><span style="font-family: tahoma;font-size: x-small">Traditionally executives have nothing but scorn for &#8220;social computing&#8221; methods like blogging, Twitter, and Facebook.  According to one speaker yesterday, it all boils down to a fear of being sued.  She said there really isn&#8217;t much basis to fear social computing, because it is just another medium that should be covered by your company&#8217;s Electronic Communications policy, for example: an employee could write a toxic blog post just as easily as they could write a  toxic email, and the existing management should be able to handle either (and if you think about it, a blog post is easier to delete).  </span></div>
<div dir="ltr"> </div>
<div dir="ltr"><span style="font-family: tahoma;font-size: x-small">Steve Ballmer mentioned this during the keynote on Monday,<a href="http://vspug.com/wsspectacular/wp-admin/redir.aspx?C=69e37fd7690c47a4b3c5ce88879a4072&amp;URL=http%3a%2f%2fwww.readwriteweb.com%2fenterprise%2f2009%2f10%2fat-the-end-of-his.php" target="_blank"> as covered here</a>:</span> </div>
<blockquote>
<div dir="ltr"><em>At the end of his keynote on Monday at Sharepoint 2009, an interviewer asked Steve Ballmer about social computing. Ballmer recounted a story about a friend of his, a CEO for a Fortune 50 company. He said the guy is adamant in his opposition to social computing in his company. But if he had assurances that corporate data would be safe, then it might be a different story.</em></div>
<p dir="ltr"><em>It was an interesting end to Ballmer&#8217;s keynote. It was all Ballmer, practically yelling at the crowd to make his point about the ways the social web will make it into the enterprise. </em></p>
<div id="more-more" dir="ltr">
<p><span style="font-family: times new roman"><a href="http://vspug.com/wsspectacular/wp-admin/redir.aspx?C=69e37fd7690c47a4b3c5ce88879a4072&amp;URL=http%3a%2f%2fwww.youtube.com%2fwatch%3fv%3dKI90RTD6kOw" target="_blank"><em>http://www.youtube.com/watch?v=KI90RTD6kOw</em></a></span><em> </em></p>
<p><em>Ballmer sounded like a guy rallying his troops. He kissed his fingertips as if he were talking about a masterpiece. He then told the audience that after the conference they would be equipped to tell the Sharepoint story. And they will be the ones who bring social computing into the enterprise. </em></p>
<p><em>This may seem like arrogance to some, but we are further convinced that Ballmer&#8217;s remarks do reflect the monumental fears that top management has about social services like Twitter and Facebook. But it is also important to look at what Ballmer says and temper it with the reality of the market.</em></div>
</blockquote>
<div dir="ltr"><span style="font-family: tahoma;font-size: x-small">So there have been a number of sessions at the conference about rolling out social computing with SharePoint 2010.  I&#8217;ll admit that the &#8220;blog&#8221; and &#8220;wiki&#8221; features of MOSS 2007 tend to inspire a yawn, but there have been some real improvements in this area.  Keep in mind that Microsoft does own Facebook, and they have taken a lot of the things that work there and brought them in to SharePoint.  </span></div>
<div dir="ltr"> </div>
<div dir="ltr"><span style="font-family: tahoma;font-size: x-small">At a session I attended yesterday the speaker made the point that social computing is coming to the enterprise and that businesses need to face the fact.  More and more people are blogging, twittering, facebooking, and waving, and it will naturally spill over into the workplace.  And employers should recognize that social computing has its uses both on and off the clock.</span></div>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/21/sharepoint-conference-notes-10-20-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Conference Notes: 10-19-09</title>
		<link>http://vspug.com/wsspectacular/2009/10/20/sharepoint-conference-notes-10-19-09/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/20/sharepoint-conference-notes-10-19-09/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 17:44:53 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/2009/10/20/sharepoint-conference-notes-10-19-09/</guid>
		<description><![CDATA[What&#8217;s so damn special about SharePoint 2010? 
If you read the tech news, this sounds like a minor upgrade, adding a &#8220;handful of new features&#8220;.  (I guess when you&#8217;re a journalist for a tech magazine it takes a lot to impress you).  But from what I&#8217;ve seen, the new features are nothing compared to what happens [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What&#8217;s so damn special about SharePoint 2010? </strong></p>
<p>If you read the tech news, this sounds like a minor upgrade, adding a &#8220;<a href="http://searchwinit.techtarget.com/news/article/0,289142,sid1_gci1371743,00.html?track=sy192">handful of new features</a>&#8220;.  (I guess when you&#8217;re a journalist for a tech magazine it takes a lot to impress you).  But from what I&#8217;ve seen, the new features are nothing compared to what happens under the hood.</p>
<p><strong>Performance</strong> </p>
<p>For one thing, it performs a lot better.  Old SharePoint (Versions 2003 and 2007) were classic ASP.NET applications, which meant that when you load a page for the first time, you have to wait for it to compile and then successive page loads are much faster because they&#8217;re cached.  In all the demos I saw yesterday, SharePoint was lightning fast.  These were undoubtedly premium machines, overloaded with RAM and processing power, but nonetheless impressive, as it shows the possibilities of SharePoint in production.  Every page load and search result was returned nearly instantly.  It was refreshing to see, I can tell you, because SharePoint’s performance is usually the first thing people complain about.</p>
<p>In that vein, at a later session I learned about some of the IT features for SharePoint administrators.  There is an entire database devoted to logging and performance monitoring, and some of the metrics you can collect are what a user is doing, which pages are popular, etc.  but the one that caught my eye was the “slowest pages” report.  You can identify which pages or items are performing the slowest, and (if you’re an administrator) each page in SharePoint can be loaded in “diagnostic mode”, which reveals a panel at the bottom of the page with all kinds of information about what the page is doing.  So in the case of the demo, we had a very large graphic that someone had scaled down instead of resizing, and it was adding 5 seconds to the load time.  Once we swapped it out with a resized image, the load time went to zero.</p>
<p><strong>Scale</strong></p>
<p>SharePoint 2010 can now handle a much larger scale of data than it used to.  In MOSS 2007, they strongly advise you to limit document libraries to under 2000 items (because then they take a very long time to load in the web browser).  But the new SharePoint boasts of the capability to host millions, if not hundreds of millions, of documents in a single library.  SharePoint is now positioned to challenge file shares as an effective document storage solution.  Although storing data in SharePoint is still more expensive, there is a greater degree of control over the disposition and metadata of a document. </p>
<p><strong>Disaster Recovery</strong></p>
<p>Backup, restore, and disaster recovery in general has been revamped, addressing another (some would say <em>unforgivable</em>) weakness in SharePoint.  Now you can perform any level of backup and restore, from a multiserver farm to an item level restore. </p>
<p><strong>Search</strong></p>
<p>They spent a long time showing off the new search features.  With the current version of SharePoint, you have a rather dumbed-down experience that might return unpredictable results, and performs rather slowly.  Microsoft purchased a company named FAST, which has a very nice search technology, and this has been grafted in to SharePoint.  What this now means is that you can very quickly search or drill down via keywords until you have a small resultset of relevant items.  If you’ve seen the Bing! Search engine, it is very similar (except SharePoint doesn’t automatically assume you want to go shopping).  This search dialog, which appears as a sidebar in most places, also works on very large lists and libraries: in the example, one document library had over a million items, and the search dialog was able to narrow the results down, refreshing the resultset with each new filter, until we had just what we were looking for.  What impressed me, again, was the speed.  The demonstrators often channeled Emeril, shouting “BAM!” to emphasize how quickly the search worked. </p>
<p><strong>PowerShell</strong></p>
<p>SharePoint, along with all the next generation of servers being released in 2010, is heavily integrated with PowerShell.  There are over 500 new cmdlets you can use to administer and manipulate SharePoint.  Better face it guys, PowerShell isn’t going away.  Think of it as the return to the DOS prompt.</p>
<p><strong>Project Server 2010</strong></p>
<p> I attended a couple of sessions on Project 2010 and Project Server 2010.  While the first one almost put me to sleep, the second one was very interesting.  Project 2003 and 2007 make extensive use of legacy code and ActiveX controls, so you could only use Internet Explorer to browse the Project Web Access sites.  But it’s now been rewritten in Javascript, which means you can use any browser.  And the functionality of the interface is so good, I could not tell right away if we were working in Project Professional or Project Server.  They have simplified Project Server a great deal, so a once-daunting Project Server solution becomes a lot more straightforward and powerful. </p>
<p><strong>Hands-On Labs</strong></p>
<p>Maybe the best thing I did all day was take the time to sit through a couple of Hands-On Labs.  Here I got to work directly with Office 2010 and SharePoint, and it was very cool.</p>
<p><strong>So&#8230; What&#8217;s so damn special about SharePoint 2010? </strong></p>
<p>Let me make a comparison here.  One of my complaints about SharePoint 2007, for all its awesomeness, is that users do not feel compelled to use it.  They load the site, poke around, then go do something else.  They don’t feel inspired to play around.  They don’t think it’s “okay” to change anything.  It looks like your standard, boring, webmaster-controlled website.  Sorry Microsoft, but that’s the truth.</p>
<p>When I got my new iPhone, I felt the exact opposite.  Here was something that just naturally flowed, form following function, inviting me to learn more and do it all.  I think the new SharePoint is a step in this direction.  It’s still not as simple as a finger drag, but it doesn’t suck either.  I’m not comparing interfaces here, I am talking about the “invitiveness” of the interface.  When I see the new SharePoint site I immediately start thinking about how I would like to customize it.  It’s like handing a blank notepad and a box of crayons to a little kid.  It’s exciting.  That’s what I’m talking about.</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/20/sharepoint-conference-notes-10-19-09/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Tell Who Has Access to What in SQL Server</title>
		<link>http://vspug.com/wsspectacular/2009/10/08/how-to-tell-who-has-access-to-what-in-sql-server/</link>
		<comments>http://vspug.com/wsspectacular/2009/10/08/how-to-tell-who-has-access-to-what-in-sql-server/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 17:43:28 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://vspug.com/wsspectacular/2009/10/08/how-to-tell-who-has-access-to-what-in-sql-server/</guid>
		<description><![CDATA[I have written a PowerShell script to &#8220;walk&#8221; the security structure of each SQL instance to find:   


Each Login (Windows or SQL)


Its Server Roles
Every database to which the login is mapped

The associated &#8220;Database User&#8221; for this login


Its Database roles
Any explicitly assigned permissions 





This is not an &#8220;all encompassing&#8221; look at every piece of security, but it does [...]]]></description>
			<content:encoded><![CDATA[<p>I have written a PowerShell script to &#8220;walk&#8221; the security structure of each SQL instance to find:   </p>
<ul>
<li>
<div>Each Login (Windows or SQL)<span style="font-family:Times New Roman;font-size:12pt"><br />
</span></div>
<ul>
<li>Its Server Roles</li>
<li>Every database to which the login is mapped</li>
<li>
<div>The associated &#8220;Database User&#8221; for this login<span style="font-family:Times New Roman;font-size:12pt"><br />
</span></div>
<ul>
<li>Its Database roles</li>
<li>Any explicitly assigned permissions </li>
</ul>
</li>
</ul>
</li>
</ul>
<p>This is not an &#8220;all encompassing&#8221; look at every piece of security, but it does give a pretty comprehensive look at <strong><em>who has access to what</em></strong>.  I wrote a script because gathering this information manually would be very, very time consuming.  As far as I know, there is no function in SQL Server to collect all this information into one place.  I guess I could have used a series of TSQL scripts to pull the info out by other means, but I am on a PowerShell kick, and I wanted to do it this way.</p>
<p> Besides, using my method, you can automate the process and audit multiple instances at once. Sound like fun?</p>
<p> I wrote this quick-and-dirty so there is no error handling. There is, of course, no warranty expressed or implied and you should use caution when running this (or any other script you find on the Internet). That said, all of my calls to SQL are read-only, so I don&#8217;t think you&#8217;ll have any problems.  </p>
<p>I&#8217;ll go ahead and paste the script and then explain it below:</p>
<p># =================================================================================<br />
#<br />
# NAME: InventorySQLUserSecurity.ps1<br />
#<br />
# Comment: This script is designed to &#8220;walk&#8221; the security structure of each SQL instance to find:<br />
#<br />
#    · Each Login (Windows or SQL)<br />
#          o Its Server Roles<br />
#          o Every database to which the login is mapped<br />
#               § The associated &#8220;Database User&#8221; for this login<br />
#                    · Its Database roles<br />
#                    · Any explicitly assigned permissions<br />
#<br />
# The script is hard-coded to locate a text file with a list of instance names (Hostname\instancename format).<br />
# The text file should contain one instance per line.<br />
# All output is dumped to console.<br />
# About the only error checking included is to check whether a database is online before analyzing it.<br />
#  =================================================================================</p>
<p>#  =================================================================================<br />
#<br />
# Declare Functions<br />
#<br />
#  =================================================================================</p>
<p>Function GetDatabaseUser($Dbase)<br />
{<br />
 if ($dbase.status -eq &#8220;Normal&#8221;)<br />
   {$users = $Dbase.users | where {$_.login -eq $SQLLogin.name}<br />
       foreach ($u in $users)<br />
        {<br />
           if ($u)<br />
               {<br />
                 write-host $spc5 &#8220;===== Database: &#8221; $Dbase.Name<br />
                 write-host $spc5 &#8220;Login&#8217;s Database Mappings: &#8221;<br />
                 #$u | select-object name, login, parent, createdate, datelastmodified, DefaultSchema, HasDBAccess<br />
                    Write-host $spc10   &#8220;Name             : &#8221; $u.Name<br />
                    Write-host $spc10   &#8220;Login            : &#8221; $u.Login<br />
                    Write-host $spc10   &#8220;CreateDate       : &#8221; $u.createdate<br />
                    Write-host $spc10   &#8220;DateLastModified : &#8221; $u.datelastmodified<br />
                    Write-host $spc10   &#8220;DefaultSchema    : &#8221; $u.DefaultSchema<br />
                    Write-host $spc10   &#8220;HasDBAccess      : &#8221; $u.HasDBAccess</p>
<p>                 write-host $spc5  &#8220;Database Roles for this DBUser:&#8221;<br />
                 $DBRoles = $u.enumroles()<br />
                 if ($DBRoles)<br />
                    {$spc10 + $DBRoles}<br />
                 Else<br />
                {Write-host $spc10 &#8220;None.&#8221;}<br />
                write-host $spc5  &#8220;Explicit Database Permissions for this DBUser:&#8221;<br />
                $DBExplict = $Dbase.EnumObjectPermissions($u.Name) | select-object objectname, permissiontype, permissionstate<br />
                if ($DBExplict)<br />
                    {$spc10 + $DBExplict}<br />
                Else<br />
                    {Write-host $spc10  &#8220;None.&#8221;}<br />
           }<br />
 # This is commented out to make the output less wordy.<br />
        #else<br />
        #{Write-host $spc10 &#8220;None.&#8221;}</p>
<p>     } # Next user in database</p>
<p>    }</p>
<p> # This is commented out to make the output less wordy.<br />
    #else<br />
    #{write-host $spc10 &#8220;InventoryUserSecurity.PS1: Error connecting to database &#8221; $db.name &#8220;.  Skipping to next database.&#8221;}</p>
<p>}</p>
<p>#  =================================================================================<br />
#<br />
# Main Program Starts Here<br />
#<br />
#  =================================================================================</p>
<p>[reflection.assembly]::LoadWithPartialName(&#8220;Microsoft.SqlServer.Smo&#8221;) | out-null<br />
[string] $spc5 = &#8220;     &#8221;<br />
[string] $spc10 = &#8220;          &#8221;</p>
<p>foreach ($SQLsvr in get-content &#8220;C:\SomePath\Instances.txt&#8221;)<br />
{<br />
    $svr = new-object (&#8220;Microsoft.SqlServer.Management.Smo.Server&#8221;) $SQLsvr<br />
    write-host &#8220;=================================================================================&#8221;<br />
    write-host &#8220;&#8212;&#8211;&#8221;<br />
    write-host &#8220;&#8212;&#8211;         SQL Instance: &#8221; $svr.name<br />
    write-host &#8220;&#8212;&#8211;&#8221;<br />
    write-host &#8220;=================================================================================&#8221;<br />
    Write-host &#8220;SQL Version:&#8221; $svr.VersionString<br />
    Write-host &#8220;Edition:&#8221; $svr.Edition<br />
    Write-host &#8220;Login Mode:&#8221; $svr.LoginMode</p>
<p>    $SQLLogins = $svr.logins<br />
    foreach ($SQLLogin in $SQLLogins)<br />
    {<br />
        write-host &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;<br />
        write-host &#8220;&#8212;&#8211; Login: &#8221; $SQLLogin.name<br />
        write-host &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;<br />
        write-host $spc5  &#8220;Login Type: &#8221; $SQLLogin.LoginType<br />
        write-host $spc5  &#8220;Created: &#8221; $SQLLogin.CreateDate<br />
        write-host $spc5  &#8220;Default Database: &#8221; $SQLLogin.DefaultDatabase<br />
        write-host $spc5  &#8220;Has Access to this instance: &#8221; $SQLLogin.HasAccess<br />
        write-host &#8220;     &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8221;</p>
<p>        write-host $spc5  &#8220;Server Roles for:&#8221; $SQLLogin.name<br />
        $SQLRoles = $SQLLogin.ListMembers()<br />
        if ($SQLRoles)<br />
            {$spc10 + $SQLRoles}<br />
        else<br />
            {Write-host $spc10 &#8220;None.&#8221;}</p>
<p>        Write-host $spc5  &#8220;This login maps to database users in the following databases:&#8221;</p>
<p> # $SQLLogin.EnumDatabaseMappings(): this line of code first checks to see if the login is mapped to any databases. <br />
 # If not, it won&#8217;t bother running through all the different databases.  This results in a cleaner output,<br />
 # but it does slow things down a bit. </p>
<p>        if ($SQLLogin.EnumDatabaseMappings())</p>
<p>            {Write-host &#8221; &#8221;<br />
            foreach ( $DB in $svr.Databases)<br />
                {<br />
                GetDatabaseUser($DB)<br />
                } # Next Database<br />
           }<br />
        Else<br />
            {Write-host $spc10 &#8220;None.&#8221;}<br />
    } # Next Login<br />
} # Next Server</p>
<p> </p>
<p>The basic flow of the script is:</p>
<ul>
<li>
<div>Open the <strong>Instances.txt</strong> file, which is a simple text file with one instance per line.</div>
<ul>
<li>The script will loop through each of the instances and prepare a report for each of them.</li>
</ul>
</li>
<li>Provide some basic information about the instance.</li>
<li>
<div>For each Instance:</div>
<ul>
<li>
<div>Connect to the instance&#8217;s &#8220;Logins&#8221; collection.</div>
<ul>
<li>
<div>For each Login:</div>
<ul>
<li>
<div>Provide basic information about the login:</div>
<ul>
<li>Whether it is SQL or Windows security</li>
<li>When the login was created</li>
<li>What the login&#8217;s default database is</li>
<li>Whether or not the login currently has database access (i.e. disabled or not)</li>
<li>List any server roles</li>
<li>
<div>Find if the Login is associated with any database users.</div>
<ul>
<li>
<div>If the Login has any database users (i.e. the <strong>$SQLLogin.EnumDatabaseMappings()</strong> is not null) then:</div>
<ul>
<li>
<div>For Each Database:</div>
<ul>
<li>
<div>If the database is online (i.e. its status is &#8220;Normal&#8221;) then:</div>
<ul>
<li>Show the SQL Login and its associated Database Username</li>
<li>When it was created/modified</li>
<li>What its default schema is</li>
<li>Whether or not it has access to the database (i.e. denied or granted)</li>
<li>The Database user&#8217;s DB roles</li>
<li>Any explicitly granted permissions (e.g. to tables or stored procedures)</li>
</ul>
</li>
</ul>
</li>
<li>Next Database</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Next Login</li>
</ul>
</li>
</ul>
</li>
<li>Next SQL instance</li>
</ul>
<p>The output of this is a somewhat-formatted and fairly detailed look at what each person has access to. I&#8217;m sure I could have done this a myriad of other ways, but I was in a hurry.</p>
<p>Note that, depending on the number of logins and databases, this could chug for quite a while and output a <strong><em>lot</em></strong> of information (one instance I audited gave a 374-page report). The output is dumped to the console, which in PowerShell ISE is not a problem because it has a very large buffer. The next version of this will have the option to write to a text file, which isn&#8217;t much more difficult; I just didn&#8217;t have the reference in front of me on how to do that. So what I&#8217;ve been doing is copy/pasting the text into Word and finessing it from there.</p>
<p>My next version of this will probably be database-connected. I have been working on a PowerShell-based solution to inventory all SQL Servers on a network, including information on Hosts, SQL instances, Databases, Filegroups, and files; the end result is to have a comprehensive look at who owns what data and what resources the Business Units are consuming (e.g. Do the HR division&#8217;s databases take up more disk space than the Administration division&#8217;s databases?) This security audit data will be grafted into the database. If anyone&#8217;s interested I can write about that, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/10/08/how-to-tell-who-has-access-to-what-in-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troubleshooting SSRS 2008 and SharePoint Integration</title>
		<link>http://vspug.com/wsspectacular/2009/07/01/troubleshooting-ssrs-2008-and-sharepoint-integration/</link>
		<comments>http://vspug.com/wsspectacular/2009/07/01/troubleshooting-ssrs-2008-and-sharepoint-integration/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 18:45:00 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I recently implemented SQL Server 2008 Reporting Services in SharePoint Integration mode.&#160; Although I followed all the directions and walkthroughs, it took me two days to get it implemented.&#160; I was installing SSRS on an existing MOSS WFE, and though every indication showed a successful installation, it would not integrate.&#160; I finally did get it [...]]]></description>
			<content:encoded><![CDATA[<p>I recently implemented SQL Server 2008 Reporting Services in SharePoint Integration mode.&nbsp; Although I followed all the directions and <a href="http://blogs.southworks.net/ebella/2008/10/08/integrating-sql-server-2008-reporting-services-with-sharepoint-2007/">walkthroughs</a>, it took me two days to get it implemented.&nbsp; I was installing SSRS on an existing MOSS WFE, and though every indication showed a successful installation, it would not integrate.&nbsp; I finally did get it working, though.&nbsp; Here is what I did.</p>
<p>While I was testing the broken SSRS implementation the symptoms included: </p>
<ul>
<li>No report would open or display.</li>
<li>I could not configure any of the SSRS-specific properties of any SSRS object, including reports, models, and data sources.</li>
<li>The SharePoint-specific properties, such as version and metadata, were still editable.</li>
<li>Every failure resulted in the unhelpful error message: &quot;An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode.&quot;</li>
</ul>
<p>The SSRS logs and SharePoint logs did not have much in the way of useful information, except a generic .NET failure message: </p>
<table class="style2" style="width:100%;">
<tbody>
<tr>
<td class="style3"><strong>Timestamp&nbsp;&nbsp; </strong></td>
<td class="style3"><strong>Process&nbsp;&nbsp; </strong></td>
<td class="style3"><strong>TID&nbsp;&nbsp; </strong></td>
<td class="style3"><strong>Area&nbsp;&nbsp; </strong></td>
<td class="style3"><strong>Category&nbsp;&nbsp; </strong></td>
<td class="style3"><strong>EventID&nbsp;&nbsp; </strong></td>
<td class="style3"><strong>Level&nbsp;&nbsp; </strong></td>
</tr>
<tr>
<td valign="top" class="style5">
<p class="style4" style="margin:0in;color:black;">6/29/09 17:17</p>
</td>
<td valign="top" class="style6">
<p class="style4" style="margin:0in;color:black;">OWSTIMER.EXE (0&#215;0820)</p>
</td>
<td valign="top" class="style6">
<p class="style4" style="margin:0in;color:black;">0&#215;0FBC</p>
</td>
<td valign="top" class="style6">
<p class="style4" style="margin:0in;color:black;">Office Server</p>
</td>
<td valign="top" class="style6">
<p class="style4" style="margin:0in;color:black;">Office Server Shared Services</p>
</td>
<td valign="top" class="style5">7fy6</td>
<td valign="top" class="style6">
<p class="style4" style="margin:0in;color:black;">Exception</p>
<p class="style4" style="margin:0in;color:black;">&nbsp;</p>
</td>
</tr>
<tr>
<td colspan="7" class="style3"><span class="style1"><strong>Message: </strong></span></p>
<p style="margin:0in;font-family:Calibri;font-size:11.0pt;color:black;">System.IO.<span style="font-weight:bold;">FileNotFoundException</span>: </p>
<p style="margin:0in;font-family:Calibri;font-size:11.0pt;color:black;">Could not load file or assembly &#39;Microsoft<span style="font-weight:bold;">.ReportingServices.SharePoint.Common</span>, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91&#39; or one of its dependencies<span style="font-weight:bold;">. </span></p>
<p style="margin:0in;font-family:Calibri;font-size:11.0pt;color:black;"><span style="font-weight:bold;">The system cannot find the file specified.</span> File name: &#39;Microsoft.ReportingServices.SharePoint.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91&#39; at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark&amp; stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at blah blah blah&#8230;</p>
</td>
</tr>
</tbody>
</table>
<p>In the SharePoint site I set up to test SSRS, I put a Report Viewer Web Part on the page and attempted to link to an existing RDL file in a document library on the same site. When I clicked the browse button, instead of seeing the custom &quot;browse for file&quot; dialog, I saw a SharePoint page stating that a <span class="style7"><strong>401 error</strong></span> had been returned). This was not the generic IIS 401 page, but a SharePoint page.</p>
<p>This is where I had an &quot;aha!&quot; moment.&nbsp; SharePoint has a <a href="http://support.microsoft.com/kb/896861">known issue with a 401.1 error</a>, where access will be denied when attempting to browse to a host header that doesn&#39;t match the hostname of the server.</p>
<p>On my MOSS server, SharePoint integration is configured as follows:</p>
<table class="style2" style="width:100%;">
<tbody>
<tr>
<td class="style3" style="width:33%;"><strong>Service&nbsp;&nbsp; </strong></td>
<td class="style3" style="width:33%;"><strong>URL&nbsp;&nbsp; </strong></td>
<td class="style3" style="width:33%;"><strong>Port</strong></td>
</tr>
<tr>
<td class="style3" style="width:49px;">MOSS&nbsp;&nbsp; </td>
<td class="style3" style="width:436px;"><a href="http://portal%20(a%20host%20header">http://portal (a host header</a>)&nbsp;&nbsp; </td>
<td class="style3">80</td>
</tr>
<tr>
<td class="style3" style="width:49px;">SSRS&nbsp;&nbsp; </td>
<td class="style3" style="width:436px;"><a href="http://Moss1%20(a%20hostname">http://Moss1 (a hostname</a>)&nbsp;&nbsp; </td>
<td class="style3">8080</td>
</tr>
</tbody>
</table>
<p>The way MOSS and SSRS integrate is that reporting services creates an HTTP endpoint and hands off to MOSS (and vice versa). As far as the user is aware, the interface is seamless and only one URL (<a href="http://portal">http://portal</a>) is presented. That&#39;s the way it&#39;s supposed to work.</p>
<p>But since our MOSS portal is using a host header, this is triggering some built in security on Windows 2003&#39;s part. Since SP1, the default behavior has been to block host header browsing from the server itself. If you browse from any other machine to the server, it works fine. But on MOSS1, for example, I would not have been able to browse to http://portal , since this would be looping back on itself and possibly a reflection attack.</p>
<p>Normally this is a simple inconvenience. So what if you can&#39;t browse to a host-header site from the server it&#39;s hosted on? No biggie, right? </p>
<p>But SSRS is <strong><em>another web service</em></strong> trying to communicate to MOSS via a host header, and <strong><em>that</em></strong> is what broke. After modifying the registry to disable loopback protection and rebooting, the integration began working as expected.</p>
<p class="style1"><strong>References:</strong></p>
<ul>
<li><strong><em>Reporting Services HTTP 401 (Unauthorized) &#8211; Host Headers require your attention </em></strong>
<ul>
<li><a href="http://blogs.msdn.com/lukaszp/archive/2008/07/18/reporting-services-http-401-unauthorized-host-headers-require-your-attention.aspx">http://blogs.msdn.com/lukaszp/archive/2008/07/18/reporting-services-http-401-unauthorized-host-headers-require-your-attention.aspx</a> </li>
</ul>
</li>
<li><strong><em>Integrating SQL Server 2008 Reporting Services with SharePoint 2007: </em></strong>
<ul>
<li><a href="http://blogs.southworks.net/ebella/2008/10/08/integrating-sql-server-2008-reporting-services-with-sharepoint-2007/">http://blogs.southworks.net/ebella/2008/10/08/integrating-sql-server-2008-reporting-services-with-sharepoint-2007/</a></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/07/01/troubleshooting-ssrs-2008-and-sharepoint-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anybody seen this?  IE8 and Datasheet view</title>
		<link>http://vspug.com/wsspectacular/2009/04/21/anybody-seen-this-ie8-and-datasheet-view/</link>
		<comments>http://vspug.com/wsspectacular/2009/04/21/anybody-seen-this-ie8-and-datasheet-view/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 22:42:00 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ever since upgrading to Internet Explorer 8, I&#39;ve noticed one or two issues with SharePoint.&#160; I wonder if it&#39;s just my machine, but has anybody seen this? 
For users with Microsoft Office, SharePoint has the capability of displaying a list in DataSheet View, which is actually powered by a DLL from Microsoft Access.&#160; This gives [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since upgrading to Internet Explorer 8, I&#39;ve noticed one or two issues with SharePoint.&nbsp; I wonder if it&#39;s just my machine, but has anybody seen this? </p>
<p>For users with Microsoft Office, SharePoint has the capability of displaying a list in DataSheet View, which is actually powered by a DLL from Microsoft Access.&nbsp; This gives you a nice quick-editing experience.&nbsp; One of the things I commonly use is the &quot;Fill Handle&quot;.&nbsp; You know what I&#39;m talking about: it&#39;s that little dot on the lower right corner of a cell, where if you click and drag it will either copy the text of the cell into every cell you select, or if it&#39;s numeric it will auto-copy and increment the numbers in each cell.&nbsp; Handy!</p>
<p>Except after I upgraded to IE8, it stopped working.&nbsp; I&#39;ve observed this on several machines.&nbsp; Those with IE7 work just fine on the same list, but those with IE8 can&#39;t use the Fill Handle.&nbsp; The mouse pointer still changes when you attempt to drag, but it does not have any effect.</p>
<p>I&#39;ve simply put up with this, since I do like IE8 otherwise, but I&#39;ve been missing using the feature.&nbsp; </p>
<p><a href="http://blogs.technet.com/office_sustained_engineering/archive/2009/04/16/service-pack-2-for-the-2007-microsoft-office-system-due-to-ship-april-28th.aspx">The MOSS Service Pack 2 is coming out on April 28th</a>, and I am hoping that maybe this issue will go away.&nbsp; They do mention that this service pack &quot;adds support for IE8&quot;, so maybe this is one of the things they have fixed.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/04/21/anybody-seen-this-ie8-and-datasheet-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When SharePoint Pukes</title>
		<link>http://vspug.com/wsspectacular/2009/04/17/when-sharepoint-pukes/</link>
		<comments>http://vspug.com/wsspectacular/2009/04/17/when-sharepoint-pukes/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 00:43:00 +0000</pubDate>
		<dc:creator>moffitar</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Yes, we&#39;ve all seen it. SharePoint can become your worst nightmare when it goes down, especially when you&#39;re following behind someone who didn&#39;t quite know what he was doing. SharePoint goes down, the event logs are full of nasty, cryptic errors, and people are very, very nervous about losing their work forever. I guess I [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, we&#39;ve all seen it. SharePoint can become your worst nightmare when it goes down, especially when you&#39;re following behind someone who didn&#39;t quite know what he was doing. SharePoint goes down, the event logs are full of nasty, cryptic errors, and people are very, very nervous about losing their work forever. I guess I shouldn&#39;t be surprised when I see it; SharePoint is really easy to screw up, or at least to misconfigure. I know for a fact that a lot of IT guys read an article about SharePoint, get their hands on a CD, and put it into production without thinking about what might happen. </p>
<p>We all know that there are two things that could happen: </p>
<ol>
<li>The company&#39;s users ignore it, or avoid it like they owe it money. </li>
<li>The company&#39;s users love it, and find it more and more useful, until they want to use it for everything and move all their files onto it. </li>
</ol>
<p>We always expect Option #1, but if you think about it, Option #2 is terrifying. </p>
<p>What if the customer put a Basic-installation standalone SharePoint server out on the network running on SQL 2005 Express? Your scalability options are really limited, even if you put it on a powerful machine (remember, SQL Express can only use 1GB of memory and a single processor). </p>
<p>Or what if you see a dozen autonomous SharePoint farms crop up, each of them unmanaged and out of control? </p>
<p>And then how does your undertrained IT staff manage them? </p>
<p>And then let&#39;s say someone decides to apply SharePoint SP1 to one of the servers, but it <a href="http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/07008528-abfb-4f63-a661-d8c55f3552de">breaks because the GroupBoard Workspace 2007 Template is installed</a> on the farm? </p>
<p>Couple this with the fact that providing disaster recovery for SharePoint, at least at a granular level, isn&#39;t exactly easy or obvious unless you&#39;ve been around SharePoint for a while&hellip; and you have a perfect recipe for panic. Or a Benny Hill chase scene, with the implementer just two steps ahead of the mob. </p>
<p>I&#39;ve talked to a lot of Network Services folks, who are generally pretty smart to begin with, and they have told me that they find SharePoint a very complex product, and they are realizing more and more than they need a SharePoint tech on their payroll. While this is good news for folks like us, it could blow up in our faces if customers begin to decide that it&#39;s too complicated to support. </p>
<p>For all the glitz and glurge I&#39;ve read about SharePoint in the blogosphere, there doesn&#39;t seem to be a lot of focus on what happens when SharePoint goes down. And of course SharePoint does go down. It dies and it&#39;s messy and the event logs are full of blood. SharePoint Portal Server 2003 used to be worse; at least with MOSS the errors make sense. I&#39;ve fixed quite a few SharePoint messes, and I have to say that when SharePoint pukes, I&#39;d rather it was MOSS-puke I was cleaning up. </p>
<p>I had an interesting day, fixing a broken SharePoint server that had myriad issues: </p>
<ol>
<li>The server in question was a MOSS 2007 <strong><em>Trial Edition</em></strong> server, installed and forgotten about since the installer left the company long ago. </li>
<li>The farm was supposed to be a pilot/proof of concept, but the end users immediately began using it for production. </li>
<li>It was an in-place upgrade from SharePoint Portal Server 2003. </li>
<li>
<div>As mentioned above, the GroupBoard Workspace template was installed, which it turns out has a known issue with MOSS SP1. </div>
<ol>
<li>
<div>When browsing to the site, users simply saw this message: &#39; </div>
<p style="margin-left:36pt;">Server error: <a href="http://go.microsoft.com/fwlink?LinkID=96177">http://go.microsoft.com/fwlink?LinkID=96177</a> </p>
<ol>
<li>This link simply takes you to a TechNet site that talks about deploying updates for WSS. Lame! </li>
</ol>
</li>
<li>
<div>In the SharePoint logs were messages like this, basically saying that the configuration database was newer than the SharePoint binaries: </div>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:8pt;"><span style="color:#1f497d;">[SPDatabaseGbwSequence] [ERROR] [4/13/2009 11:41:47 AM]: </span><strong><span style="color:red;">Upgrade object too new</span> (build version = 12.0.0.<span style="color:red;">6219</span>, schema version = 3.0.1.0). Current server (build version = 12.0.0.<span style="color:red;">4518</span>, schema version = 3.0.1.0).</strong> </span></p>
<p style="margin-left:39pt;">&nbsp;</p>
<p style="margin-left:36pt;"><span style="color:#1f497d;font-family:Courier New;font-size:8pt;">[SPManager] [ERROR] [4/13/2009 11:41:47 AM]: CanUpgrade [SPContentDatabase Name=WSS_AdminContent Parent=SPDatabaseServiceInstance Name=OfficeServers] failed. </span></p>
<p style="margin-left:39pt;">&nbsp;</p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:8pt;"><span style="color:#1f497d;">[SPManager] [ERROR] [4/13/2009 11:41:47 AM]: The specified SPContentDatabase Name=WSS_AdminContent Parent=SPDatabaseServiceInstance Name=OfficeServers has been upgraded to a newer version of SharePoint. Please upgrade this </span><span style="color:red;"><strong>SharePoint application</strong></span><span style="color:#1f497d;"> server before attempting to access this object. </span></span></p>
<p style="margin-left:36pt;">&nbsp;</p>
</li>
<li>
<div>And in the event logs: </div>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Event Type:&nbsp;&nbsp;&nbsp;&nbsp;Error </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Event Source:&nbsp;&nbsp;&nbsp;&nbsp;Windows SharePoint Services 3 </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Event Category:&nbsp;&nbsp;&nbsp;&nbsp;Topology </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Event ID:&nbsp;&nbsp;&nbsp;&nbsp;5617 </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4/13/2009 </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Time:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11:36:33 AM </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">User:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N/A </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Computer:&nbsp;&nbsp;&nbsp;&nbsp;SHAREPOINT1 </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">Description: </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">The schema version (3.0.149.0) of the database WSS_Content on SHAREPOINT1OfficeServers is not consistent with the expected database schema version (3.1.3.0) on SHAREPOINT1. Connections to this database from this server have been blocked to avoid data loss. Upgrade the web front end or the content database to ensure that these versions match. </span></p>
<p style="margin-left:36pt;"><span style="font-family:Courier New;font-size:9pt;">. </span></p>
</li>
<li>
<div><span style="color:red;"><strong>I resolved this</strong></span> by uninstalling the GroupBoard Workspace and then running: </div>
<ol>
<li>STSADM.EXE -o upgrade -inplace -forceupgrade &ndash;url <a href="http://site">http://site</a> for each web application, then </li>
<li>psconfig -cmd upgrade -inplace b2b -wait &ndash;force </li>
</ol>
<p>&nbsp;</p>
</li>
</ol>
</li>
<li>
<div>Also, every thirty seconds or so: </div>
<p style="margin-left:72pt;">Event Type:&nbsp;&nbsp;&nbsp;&nbsp;Error </p>
<p style="margin-left:72pt;">Event Source:&nbsp;&nbsp;&nbsp;&nbsp;SharePoint Portal Administration Service </p>
<p style="margin-left:72pt;">Event Category:&nbsp;&nbsp;&nbsp;&nbsp;None </p>
<p style="margin-left:72pt;">Event ID:&nbsp;&nbsp;&nbsp;&nbsp;202 </p>
<p style="margin-left:72pt;">Date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4/13/2009 </p>
<p style="margin-left:72pt;">Time:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11:35:03 AM </p>
<p style="margin-left:72pt;">User:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N/A </p>
<p style="margin-left:72pt;">Computer:&nbsp;&nbsp;&nbsp;&nbsp;SHAREPOINT1 </p>
<p style="margin-left:72pt;">Description: </p>
<p style="margin-left:72pt;">Synchronization exception occurred </p>
<ol>
<li>This is what I meant about SPS 2003 and its cryptic errors. There isn&#39;t any intuitive way to tell, other than clairvoyance, what this error really means. Fortunately, though, there is always eventid.net. </li>
<li><a href="http://www.eventid.net/display.asp?eventid=202&amp;eventno=4814&amp;source=SharePoint%20Portal%20Administration%20Service&amp;phase=1">I found this was due to the server having been upgraded from SPS 2003</a>. This legacy service was jonesing for a content database and couldn&#39;t find one. I disabled the service and the error went away. </li>
</ol>
</li>
</ol>
<p>For what it&#39;s worth, the customer plans to retire this server and migrate all the content off to a real MOSS farm. Yay!</p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/wsspectacular/2009/04/17/when-sharepoint-pukes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
