SharePoint Connections – The Real Day 3

November 8th, 2007 by josef.nielsen

Well, today was already scheduled to be a short day, but between a VPC failure (seems to be a common theme… a few presenters also has this issue) and some issues back in the office, it looks like I'll probably miss the rest of the day.  It solves one challenge… Which presentation to go to at the end. 

Unfortunately, whoever scheduled the presentations set 3 or 4 really good presenters and topics all against each other, so the choice was tough…  I was leaning toward either Dustin's Data Part Deep Dive, or AC's Internet WCM, but Neil Iversen had a really good looking topic (MOSS PowerShell) that he teased us with earlier in his Advanced Features presentation, and Veli-Matti Vanamo had one that looked tempting called Branding your site with Site Definitions and Features. 

I did get a chance to catch Todd Baginski's BDC presentation though, as well as Neil Iversen's SharePoint Mobile presentation.  Here's my notes for both:

When using the BDC, you cannot authenticate with FBA.  This will cause issues with the BDC – Todd mentioned that he thought he remebers hearing/reading someone say they found a way around this, but couldn't find it later.  Also, when you index the BDC and rows are pulled for a search query, the action hyperlinked to the search result is the "default" action created by the system when you created the BDC Application.  You can modify the default to have the behavior you'd like on search results. 

There are two commonly used tools out there today for working with the BDC to get away from hand typing all the XML for an Application Definition file.  The BDCMetaMan (Which Todd used to be a part of before SharePoint Experts) and the MS BDC Tool, aka "Microsoft Business Data Catalog Definition Editor", which can be downloaded as a part of the August 2007 MOSS SDK.

There are a couple of major differences in usage and result between the BDC and it's OOB web parts and SPD and the Data View web part.  These are primarily that the BDC is very simple (when using a tool for the App Def file), fast to generate results, ghosted (or uncustomized) for performance and simplicity.  It can be customized using custom written Web Apps or through custom XSL, but these take away from the two biggest benefits, simplicity and speed.  The Data View wep part on the other hand is not quite a simple or fast (unless you're Dustin on one of those demos… Man, he flies through that!), but is worlds more customizable, can hook to more than just a web service or database, is unghosted (or customized), and generally offers much more control.

I took a chance on Neil Iversen's SharePoint Mobile presentation, as it is not a very popular topic generally speaking, but I heard Neil speak earlier on Features, and thought he did a good job, and I don't know much beyond the OOB mobile options that are in SharePoint, so I gave it a shot.  The audience was fairly small, but Neil took it in stride and gave a good presentation, rich in demos.  Here are a few notes I got from his presentation:

All SharePoint Site Templates map to one of two mobile templates, except for the central admin tremplates (and SSP) and the Meeting Site templates.  All others use the general Mobile template, or for Blog and Wiki sites, the Blog Mobile Template.  the Mobile files that map to the "/m" in the URL of a mobile site are held in the layoutsmobile folder in "12".  ASP.Net web controls are mapped to ASP.Net Mobile controls, which in many cases is similar, in other is compltely different, such as the date picker.  In a regular site this is a calender pop-up picker, but on a mobile site, this is just a text box.  Another example is the multiple upload interface.  In a regular site it is virtually unlimited, but on a mobile site it is limited to 3 files.

The SDK contains some good detail on changing some of the templates for mobile, as well as the mobile restriction parameters, such as how many characters to show on a line before displaying the "…".  These settings can easily be changed with a feature.  Neil said he would post some samples of this on his blog in a few days,  I also noticed during his presentation that he is definately a DOS/Notepad kind of guy… Don't see many of those anymore without a penguin on thier shirts ;)  

He also mentioned that occassionally, mobile sites have cache issues that prevent them from showing some of the new changes (template and parameters) even after an IIS Reset.  He recommended using the "Fiddler" tool from Microsoft to monitor and possible flush the cache if you experience this issue.

Overall, there was a lot of good stuff this year, but I have to agree with Eric Shupps on his observations of the conference (Day 1, Day 2, Day 3).  1) The wireless was pretty darn lousy.  Very spotty, and sporadic with performance. 2) What is the deal with the Vendor Hall?  It kept being closed then opened, then closed the opened, them closed for good before the conference was even over!  Hopefully the 42 comment cards I filled out with that info gets in the hands of the right people :)  

 

SharePoint Connections – The Real Day 2

November 8th, 2007 by josef.nielsen

I started off by trying out Veli-Matti Vanamo's Introduction to Web Part Development presentation.  He was actually a substitute for his co-worker, Emer McKenna.  The majority of the content was from their new book to be released in Dec, Microsoft SharePoint 2007 Technologies: Planning, Design and Implementation.

While the majority of the presentation was slide deck, there was still some good information to be had there.  A few notes from this session I took were as follows:

Web part management is almost identical between SharePoint and ASP.Net 2.0.  The two primary differences are that in SharePoint, you can add the Microsoft.SharePoint.dll reference to get additional functionality, and when using SharePoint, the webpartmanager is overridden by the spwebpartmanager, to apply SharePoint specific details to the rendering.

There are three acceptable types of web parts:

  1. The ASP.Net 2.0 Web part, which uses the System.Web.dll for it's inheritance, and is compatibility with both ASP.Net Web Part Zones, and SharePoint/WSS 3.0 Web Part Zones.  These web parts are usually labeled with a .webpart extension.
  2. The WSS 2.0 web part, which uses the Microsoft.SharePoint.dll library for its inheritance, and is a deprecated method for creating web parts.  The compatibility is still there for moving web parts from WSS 2.0 to WSS 3.0.  These web parts have a .dwp extension.
  3. The Hybrid web part, which uses both the above mentioned dll libraries for inheritance, and is specific to WSS 3.0/MOSS.  This allows for all the new ASP.Net 2.0 functionality, and provides access to the personalization objects, as well as the SharePoint Object model.  This is also required for creating asynchronous functionality in a web part.

There are three opportunities to execute code prior to the generally used "body" of a web part , which is the Render() method.  These are (in order): OnInit(), OnLoad(), and OnPreRender().  They can all be overridden to allow pre-execution code to be run.

The Visual Studio SDK (2005) contains a great tool for retrieveing Stong Names for assemblies, called sn.exe.  The usage is sn.exe -t mylibrary.dll, and the returned value is just the strong name of the library.

There are three things needed to debug web parts.  1) You must elevate your privileges above WSS_Minimal, as it does not allow debugging.  2) Set Debug = true in the Web.config.  3) Set CustomErrors = off in the Web.config.

The interesting thing I noticed was that the more slide deck there was in presentations, the more notes I took.  The more example/demo work that was done (and the more engaging a speaker was) the less notes I took. :)   My biggest wish (and comment on all my comment cards) is that there was a way to Webinar record the presentations, and pass those out, rather than just a slide deck.  A lot more value there , I think.

The next presentation I went to was Todd Baginski's SharePoint Object Model demo.  I got an opportunity to hang out with Todd for a bit at Andrew Connell's after hours party on Tuesday, and he's a great guy.  Comes across as very approachable and down to earth, yet is quite a smart guy.  This showed in his presentation too.

His presentation was really almost 100% demo… In fact I don't even remember what was on the slide or two he showed us early on, except maybe the title of his demo.  He used most of his time showing us various methods that expose and allow manipulation of SharePoint objects.  He's written a great little app called the MOSS 2007 Toolkit that he promised he'd hand out by USB to anyone who wanted a copy.  After about 15 minutes of the demo, he asked how many people were going to want a copy of the code, and a couple hundred hands went up.  He paused for a minute then decided that his poor USB key would probably get worn out from all those laptops, and announced that he'd make it available on his blog site soon (including the source code) instead.  UPDATE: He posted it this morning and it can be downloaded from here. (11/8/07//jn)

It is basically a winform app that you run on a SharePoint server that connects to the object model and allows you to both see and modify various settings and objects.  At a high level (there were TONS of actions and vies for each of these), these are the main areas the tool covers, and he showed:

  • Site Metadata
  • Site Details
  • Create/Delete a Site
  • Modify Top or Quick Navigation Bars
  • Modify USers and Groups
  • Add/Remove/Modify List items (including Document Libraries)

The funny part was that after ending with a few minutes for questions, a gaggle of guys surrounded Todd, and even when he was packing up so Dustin could set up Mac (yes, he presented from a Mac), he was still surrounded.  As he left the auditorium, he was followed by an entourage of guys still asking questions.  Definitely a popular presentation.

After that, I couldn't resist hanging around for Dustin Miller's SharePoint Designer, it's for Developers Too presentation.  This is very similar to the infamous "The Wave" presentation he gave at TechEd this year.  I was waiting to see if he'd go in to his pre-session warm up and get the crowd on their feet, but he had a bit of technical difficulty getting setup (he claims it was NOT the Mac), and didn't bother with it, although there was one guy up front who decided to do the wave anyways… A wave of 1 is not very impressive :)

Dustin is a very engaging speaker who never losses an opportunity to drop in a joke or a bad pun.  I think I counted at least three Ghostbusters quotes during the hour plus that his demo ran.  He also is always full of great advice on how to get things done, like how to get away with taking a nap in your office.  Apparently the trick is to drop a bunch of papers on the floor first, then rest you head in you arm over the edge of your desk.  That way if someone walks in, you can wake up and say "Oh, I was just picking up these papers".  Never a dull moment in this session :)

Seriously though, Dustin used the Data Viewer web part to show just how easy and powerful both it and SharePoint Designer could be.  He showed some list linking, which was fairly straight forward.  He then got in to some fun stuff… He grabbed the URL from a Google news search result and create a link to it from the web page in SPD, pushing values from the data viewer web part in to the web call parameters (specifically the "q" parameter) for Google to allow you to push a field value straight out to Google news for a search, dynamically.

He then showed a more complex example of the same thing, by deconstructing the results URL for Yahoo Weather, and showing how we could utilize it in SDP and push values out to it, returning an RSS feed result and displaying it exactly how we want to in a data viewer web part, without any manual XSLT work.  He even included a weather image from the feed.  Cool stuff.

He also showed how in todays high security, paranoid world, as a responsible technology expert, you must always click "yes" on those annoying security pop-ups "Are you sure you want to…" and "Warning…".  Definitely engaging.  I'll have to see if I can make it to his Data Viewer Deep dive… It's at the same time as about 3 other good one's I'd like to hit, so we'll see.

This ended up being a lot longer than I had anticipated, but then it is a whole days worth of information, jammed on to one blog entry ;)   

SharePoint Connections – The Real Day 1…

November 7th, 2007 by josef.nielsen

Well, thus ends the first "real" day of Connections 2007…  Lots of good warm-up stuff to get everybody on-deck for tomarrow and the begining of some of the deeper dive sessions…  Here's a couple notes I got from the conference:

Tom Rizzo gave a couple good presentations today, and pointed out a number of little known tidbits, resources, and a news announcement (with demo).  First, the tidbits:

Annonymous access being enabled will disable the ability to set item-level permissions in a list.  I didn't know this.  This is appearently by design, as there were a number of complexities in the security model, or at least that is the assumption presented. 

Another great bit is that apparently the ISA guys played really nice with the OWA guys from Exchange 2007, and as a result, internal SharePoint sites that are linked/embedded in an email message can  can be passed through ISA from the Internet when ISA is configured properly.  That is, without any proxy or vpn.

Next, the resources:

Tom gave some examples of public facing Internet sites on SharePoint…  The first few are well know examples everyone points to… The last few, not as much.

  • Hawaiian Air
  • Glu Mobile
  • TV Guide – While this looks like MOSS, it is actually an AJAX front end to a MOSS back-end.
  • Migros - A good example of localization for a site (foreign)
  • Viacom/MTV – with a redirector to hide the "pages" from the URL, and a flash plug-in in the middle of the page

Additionally, I gleened the following resources from Tom's presentation…

  • MS included a BDC editor in the August SDK for MOSS 2007.  I missed this one, so I'll have to check it out.
  • The SharePoint Learning Kit has excellent resources for assembling End User Training, and follows the SCORM training methodologies.
  • The End User Training Blog at Microsoft has been available for a bit over a month now. 

Lawrence Liu also had a few gems to share, as well as reiterating some of ones given earlier by Tom:

  • Adding fields from a custom content type to a document library will cause files opened (or created) to show the "Document Properties" toolbar with the appropriate MOSS fields in Word or Excell 2007.
  • Many people know about the Calendar and Task 2-way syncronization with Outlook, but many people overlook the contact and discussion forum 2-way sync that also exists.  The document lirary 1-way (read-only) view was supposed to be 2-way, but appearently there we issues around conflict resolution and the quality of this syncing that kept the 2-way version out of the release… Might be back on the table in the next version :)
  • For those that did not know, Lawrence is a huge FaceBook and OpenSocial fan… Not so big on MySpace… In fact he scolded those who admitted to having them :)   See Lawrences FaceBook Profile here.
  • The MS Fanastic 40 can be downloaded at http://www.microsoft.com/sharepoint/templates.mspx

Tom also announced (after leading a blurry eyed Vegas crowd that was still desperate for more coffee/caffeinated pop/<insert stimulant of your choice here>) Microsoft Search Server 2008 (MSS), and its Express counterpart, which are in Beta now, and will ship in 1Q08.  basically a rewrapped MOSS for Search, with a better admin console, and best of all… wait for it… Federated Search.  Cool stuff… uses the OpenSearch Standard Amazon helped set.  Good news for use MOSS users too… There will be an upgrade pack to add the new features in to Full MOSS… downside is, it will not be released until probably 2Q08.

I also had a fun time at Andrew Connell's after-hours get together…  It was cool getting to put some faces to the voices I've talked to and the names I've read…

The rest of the day was a blur, as I met way too many vendors in a row, and forgot to bring my notebook to any other sessions.  I now have approximately 2 1/2 tree's worth of vendor handouts in my hotel room, covering half the couch and two chairs.  If I get a spare week or two, I'll read through all the pamphlets and post something about the good ones (I must be a masochist).

I'm also now the proud owner of 5 demo CD's, 4 logo-covered pens (2 of which don't seem to work), 3 sticky note pads, 2 T-shirts that don't fit,  and a backpack that doesn't fit my laptop or the ream and a half of papers I collected…  Hmmm… Reminds me of Christmas…  Well, my kids will be happy…  Look what daddy got you from Vegas!

Roll on tomorrow! High-lights I'm looking forward to are Dustin's SPD for Developers (we'll see if he can get a wave out of everyone before lunch), and it's a toss-up whether I'll hit Todd's SSO in the real-world or Andrew's Building Publishing Sites with WCM… only time will tell! :)  

Full site customiztion…

October 29th, 2007 by josef.nielsen

A very interesting topic in that is coming up more and more today.  A customer wants to customize SharePoint, not just the user viewed screens, but also the administrative (Application Pages) functions.  In many cases, creating customer list templates and web parts to view those lists can fullfill the need to customized the consumable portions of a site, and a bit more effort can be put in to customizing the data entry interfaces that the site's content editors will interface with frequently.

The challenge is that last bit.  In "Teams" or ad-hoc collaboration site generation, it is just not practical to "Wrap" the application pages in that fashion.  We ran in to this very issue, and ended up scrapping (or at least temporarily tabling) a good portion of work for this very reason.  If you haven't read Cameron Moll's Blog Authentic Boredom (He is our lead designer for this effort), he posted a great article there on this problem.

The bit that really chaps my hide, is that we initially heard that what we were trying to do was fairly unique, and others were not trying to do this.  Since then, this has appearently become a much bigger request and frustration to multiple people.

If you've ever heard the MS party-line on modifying system/app files (ie, layouts folder items), you'll get a real kick out of thisEric Shupps posted a great article about the new KB944105 (Customizing app pages in the layouts folder).  Yes, you read that right.  Apparently it is now accepatable to do what we are not supposed to do.  Never mind the fact that there are about 400 aspx files in that folder to skin/brand.  It will be interesting to see where this conundrum leads us.

 

Pulling site collections details via direct SQL query

October 9th, 2007 by josef.nielsen

I certainly don't recommend making changes to your content DBs directly in SQL, but there's no harm to be had pulling data from the DB's.  I found that this was the easiest way to poll data about all farm content DBs and Web Apps listed by Site Collection.  Hope you find this useful!

/* SiteReport.sql
written by Josef Nielsen
September 2007 
 
NOTE: You must create a linked server if you use multiple SQL server to house you content DBs
*/ 
 
BEGIN
DECLARE @ts1 varchar(1000), @ConfigDB VARCHAR(128) 
 
– Set your Config DB Name here if it is different
SET @ConfigDB = 'SharePoint_Config' 
 
– This creates a temp table to hold the list of content DBs referenced by the Config DB
CREATE TABLE [#TempDbList]
      (
      DBname VARCHAR(128),
      DBInstance VARCHAR(128),
      DBServer VARCHAR(128)
      ) 
 
– Populate the temp table with content DBs
SET @ts1 = 'INSERT INTO #TempDbList
                  SELECT [DbName].[Name] AS ''DatabaseName'',
                        [Instance].[Name] AS ''DatabaseInstance'',
                        [Server].[Name] AS ''DatabaseServer''
                  FROM '+'['+@ConfigDB+']'+'.[dbo].[Objects] AS [DbName]
                        LEFT JOIN '+'['+@ConfigDB+']'+'.[dbo].[Objects] AS [Instance]
                              ON [DbName].[ParentId] = [Instance].[ID]
                        LEFT JOIN '+'['+@ConfigDB+']'+'.[dbo].[Objects] AS [Server]
                              ON [Instance].[ParentId] = [Server].[Id]
                  WHERE [DbName].[Properties] LIKE ''%SPContentDatabase%''
                        AND [DbName].[Properties] NOT LIKE ''%WebApplication%'''
EXEC (@ts1) 
 
DECLARE @ts2 VARCHAR(1000) 
 
–This creates a temp table to hold the end results of the Site Collection lists from all Content DBs
CREATE TABLE [#TempSiteList](
    FullURL VARCHAR(128),
    WebApp VARCHAR(128),
    DBServer VARCHAR(128),
    DBName VARCHAR(128),
    Megs BIGINT,
    Quotamax VARCHAR(128),
    Quotawarning VARCHAR(128),
    Userquota VARCHAR(128),
    Siteowner VARCHAR(128),
    OwnerEmail VARCHAR(128),
    Sitecreationdate VARCHAR(128),
    Lastcontentchange VARCHAR(128)
) 
 
– Create a cursor to walk through each content DB
DECLARE DB_cursor CURSOR
      FOR
            SELECT [DBServer], [DBInstance], [DBName]
             FROM [#TempDbList] 
OPEN DB_Cursor
DECLARE @vDBServer VARCHAR(128)
DECLARE @vDBInstance VARCHAR(128)
DECLARE @vDBName VARCHAR(128)
FETCH NEXT FROM DB_cursor INTO @vDBServer, @vDBInstance, @vDBName
WHILE @@FETCH_STATUS = 0
      BEGIN
      DECLARE @DBv1 VARCHAR(2000) 
 
– Add a backslash for DBServers that are not default instances
      DECLARE @slash VARCHAR(128)
      IF @vDBInstance = ''
            SET @slash = ''
      ELSE
            SET @slash = '' 
 
– Script to insert Site Collection details to the temp site summery table
      SET @DBv1 = 'INSERT INTO [#TempSiteList]
            SELECT [Webs].[FullUrl],
            [ConfigObjects].[Name] AS ''WebApp'',
            (SELECT ''' + @vDBServer+@slash+@vDBInstance + ''') AS ''SQL Server'',
            (SELECT ''' + @vDBName + ''') AS ''Content DB Name'',
            (([Sites].[diskused])/1024)/1024 AS ''Megs'',
            (([Sites].[diskquota])/1024)/1024 AS ''Quota max'',
            (([Sites].[diskwarning])/1024)/1024 AS ''Quota warning'',
            (([Sites].[userquota])/1024)/1024 AS ''User Quota'',
            [User].[tp_login] AS ''Site Owner'',
            [User].[tp_email] AS ''Owner E-mail'',
            CAST([Sites].[timecreated] AS char(30)) AS ''Site Creation Date'',
            CAST([Sites].[lastcontentchange] AS char(30)) AS ''Last Content Change''
      FROM
            ['+@vDBServer+@slash+@vDBInstance+'].['+@vDBName+'].[dbo].[sites] AS [Sites] WITH (NOLOCK)
            LEFT JOIN ['+@vDBServer+@slash+@vDBInstance+'].['+@vDBName+'].[dbo].[webs] AS [Webs] WITH (NOLOCK) ON [Webs].[siteID] = [Sites].[Id]
            LEFT JOIN ['+@vDBServer+@slash+@vDBInstance+'].['+@vDBName+'].[dbo].[userinfo] AS [User]  WITH (NOLOCK) ON [User].[tp_SiteID] = [Sites].[Id]
            LEFT JOIN '+'['+@ConfigDB+']'+'.[dbo].[SiteMap] AS [ConfigSiteMap]  WITH (NOLOCK) ON [ConfigSiteMap].[Id] = [Sites].[Id]
            LEFT JOIN '+'['+@ConfigDB+']'+'.[dbo].[Objects] AS [ConfigObjects]  WITH (NOLOCK) ON [ConfigSiteMap].[ApplicationID] = [ConfigObjects].[Id]
      WHERE
            [Webs].[ParentWebId] IS NULL
            –AND [User].[tp_SiteID] = [Sites].[Id]
            AND [User].[tp_SiteAdmin] = 1
            AND [User].[tp_id] = 1'
      EXEC (@DBv1)
 
FETCH NEXT FROM DB_cursor INTO @vDBServer, @vDBInstance, @vDBName 
 
END 
 
CLOSE DB_cursor 
DEALLOCATE DB_Cursor 
 
END 
 
– Cursor is closed and released, ad now we select the results of the scan
SELECT * FROM #TempSiteList ORDER BY [WebApp], [FullURL] GO 
 
– Clean up to get rid of those temp tables
DROP TABLE [#TempDbList]
DROP TABLE [#TempSiteList] 

Good bye Hard Drives… Hello ioDrive!

October 3rd, 2007 by josef.nielsen

A couple of friends of mine, David Flynn and Rick White of Fusion-IO (http://www.fusionio.com), demoed their new product the ioDrive at DEMOfall a few days ago… Very awesome stuff!  It is a Silicon-Based NAND Flash storage solution.  It is a PCIe (x4) card that currently holds up to 640GB of solid state NAND Flash storage with a built in controller. Plans for next year will expand it to 1.2TB.

640GB ioDrive from Fusion-IO 

It's got 160 parallel channels to the flash chips and can do about 100,000 IOPS per card, with sustained reads of 700-800 MB/sec and sustained writes of up to 600 MB/sec.  That's about 8-9 times fast that high performance Ultra SCSI disk.  It's also about 40 times faster than Intel's SSD solid state drive. 

To put it in more directly realized terms, this data rate is equal to copying about 1 full DVD's worth of data in about 8 seconds.  Now that's fast! 

Add to that the ability to RAID multiple cards together in the same chassis for added performance and storage capacity… 

Check out the recorded demo and review that TG Daily did at DEMOfall07 with David Flynn, CTO, and Rick White, CEO, of Fusion-IO, here.  You can get the entire demo here, but no review article.

Here's another interesting review from Techworld.

Here's a chart of sustained data rates in comparison to the new ioDrive.

This stuff really rocks.  As with most new technologies, the initial costs are high (currently about $30/GB), but compared to similar breakthrough technologies, fairly comparable (ie initial GB speed network switches, the 1st 1GB hard drive, etc.).  I remembering paying $250 (at a wholesale cost) for a 400MB hard drive back in '93… That's over $600/GB… 

The future direction of this technology is where it really shakes up our current preceptions.  As more investors come online, as demand drives prices down, and competition tries to mimic this new technology, prices will dip to levels where this stuff can begin to creep in and take over in Extreme Gaming systems, Video Editing/Rendering and Multimedia systems, and high-end Business/Development PCs, as well as just the enterprise servers that are the current primary contact.  And who knows what the future may bring… The team they have at Fusion-IO is working hard on many new ways to break-down the current paridigms of the storage world, and their next announcements will shake it up as much as this one did!

Background on My SharePoint Links

September 12th, 2007 by josef.nielsen

So recently we had some issues that came up around the "My
SharePoint Links" option that exists on default master pages under the
menu option "My Links".  Our issue was that a few sites never showed up
on that list for some people during testing.  This spawned a number of
questions about this process, which I decided to share, as I couldn't
find much on the Internet currently about this.  This is the
information I've found, seen, and some is my best guess, based on the
behavior of the system. 

When My SharePoint Sites shows up

My SharePoint Links only shows up when you have multiple Site Collections.  If you are working with one Site Collection, the list item for these links will not appear.  After adding another collection, there is a waiting/polling period before it appears.  This seems to be 5-30 minutes usually.  My best guess is that this is linked to an sptimer job, although I haven't found information on that yet.  This appears to be the same job that "converts" a new site to standard security objects (see below).

Which Sites show up on the My SharePoint Sites list

So which sites belong on that list?  Any site for which the current logged in user is in the configured "Members" group.  Owners, Admins, and Visitors make no difference for this list, only Members.  This is the same list that is populated on MySites in the profile section labeled "Memberships".  You can manage these at http://<mysite_root_url>/_layouts/MyMemberships.aspx…

How security is setup originally

As far as I've been able to tell, any given site, when created, contains a custom list for security that is not linked to actual security objects.  It does seem to link to AD security principles (the "Account" field), but the rest on the information is just standard editable fields (see screen shot below).   

 New Site Security Columns 

You can get to this first screen by adding _layouts/people.aspx to your
site address (It's the people section of People and Groups), then
select settings, list settings.

New Site User Edit Screen

This second screen is accessed by just clicking on the user's name or image in a security group or the All Users screen.

 After a 5 to 30 minutes time period (this seems to be about the same time period – and perhaps the same sptimer job? – as updates to your MySite "About Me" section, which appears in the user info screen), the security information is updated, and looks like the screen shots below. 

Updated Site Security Columns 

Notice that there are only two columns listed (above), and all the fields in the User Information (below) are now read-only.

  Updated User Edit Screen

At the time when this change happens, the site will now appear on the My SharePoint Sites list.  My belief is that this conversion process changes the security table to a series of objects that are now readable by SharePoint's core system as security, rather than a list.  The My SharePoint Links object calls a security lookup that cannot read from those unconverted sites, only from converted ones. 

 

When things break… 

So what exactly was the problem we were seeing then?  Based on the above information, I found that the few sites we had that never populated on the My SharePoint Links list all still had that "new site" security list that had not yet been converted.  The sites had been created days ago, in a few cases over a month ago, but the sites never changed.

This led me to alter my belief about this possible sptimer job.  The behavior makes me believe that there is a "convert flag" somewhere in the site information that tells SharePoint if it is a new site, or a converted site.  This (possibly fictional) sptimer job only converts sites where the flag has not yet been set, and it sets this flag after the conversion. 

 


How to fix it when "things break"…

Unfortunately, my call to MS Premiere ended up being a bit more of an educational session for them, and I still do not have a reasonable answer to this issue, although the issue is still open and they are researching this behavior now.  I did find that I could easily use my MOSS backup solution, AvePoint's DocAve, to backup content and restore it to a new site that had been converted, but this still leaves the question of how to fix a site without a 3rd party tool and a bunch of delete/recreate operations.  I'm still waiting for that answer, but now I think I understand how this part of SharePoint functions a bit better.  I'll post the answer (if there is one) whenever I get it…

 

MSCS Rolling upgrade to Windows 2003 SP2

September 4th, 2007 by josef.nielsen

So I went to do a standard rolling upgrade last week of our production x64 2003 SQL cluster to windows 2003 SP2… Not so standard after all…  Our MS TAM is investigating to see if this is an isolated issue, but here's what happened for us.

 

Here's the technical details of the cluster and the upgrade:

ú         Windows 2003 R2 x64

ú         Standard Quorum Failover cluster with SAN disk

ú         Was at Windows 2003 SP1 – Rolling upgrade attempted to SP2

ú         Cluster service would not start after SP2 and a reboot.  Issued a number of SCSI bus resets because of communication failure

ú         No problems with network communication between heartbeat adapters or public adapters (public adapters are Mixed-Mode as per best-practices)

ú         SP2 node cluster service would come online with no errors if it was the first node (but then the SP1 would not join)

ú         Once they were both SP2, there were no problems joining the cluster at all

 

Here's an excerpt from the Cluster Log of the service trying to come online with a couple notes from me (Sorry this is long, but it is good stuff, especially if you are not familiar with the cluster log):

 

00000384.00000c78::2007/08/31-00:30:04.171 INFO [CS] Cluster Service started – Cluster Node Version 4.3790
00000384.00000c78::2007/08/31-00:30:04.171 INFO                                OS Version 5.2.3790 – Service Pack 2 (ADS 03000112L)
00000384.00000c78::2007/08/31-00:30:04.171 INFO                                Local Time is  2007/08/30-18:30:04.171
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [CS] Service Starting…
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [INIT] ClusterInitialize called to start cluster.
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [EP] Initialization…
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [DM] Initialization
00000384.00000ba4::2007/08/31-00:30:04.187 ERR  [DM] DmInitialize: The hive was loaded- rollback, unload and reload again
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [DM] DmpRestartFlusher: Entry
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [DM] DmpUnloadHive: unloading the hive
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [Qfs] QfsSetFileAttributes C:WINDOWSClusterCLUSDB.BKP$ 80, status 2
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [Qfs] QfsDeleteFile C:WINDOWSClusterCLUSDB.BKP$, status 2
00000384.00000ba4::2007/08/31-00:30:04.187 INFO [DM] Loading cluster database from C:WINDOWSClusterCLUSDB
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [DM] DmpStartFlusher: Entry
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [DM] DmpStartFlusher: thread created
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [NM] Initializing…
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [NM] Local node name = CLUSTERNODE1.
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [NM] Local node ID = 1.
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [NM] Creating object for node 1 (CLUSTERNODE1)
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [NM] Initializing networks.
00000384.00000ba4::2007/08/31-00:30:04.203 INFO [NM] Initializing network interfaces.
00000384.00000ba4::2007/08/31-00:30:04.218 WARN [NM] Failed to open cluster parameters key, status 2.
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [NM] Initialization complete.
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [FM] Starting worker thread…
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [API] Initializing
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [LM] LmInitialize Entry.
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [LM] TimerActInitialize Entry.
00000384.00000d50::2007/08/31-00:30:04.218 INFO [FM] Worker thread running
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [CS] Service Domain Account = DomainServiceAccount
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [CS] Initializing RPC server.
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [INIT] CspRegisterDynamicLRPCEndpoint: Successfully registered LRPC endpoint with EP mapper
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [INIT] Attempting to join cluster CLUSTERNETNAME
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [JOIN] Spawning thread to connect to sponsor 10.97.130.141
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [JOIN] Spawning thread to connect to sponsor 10.255.255.143
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [JOIN] Spawning thread to connect to sponsor 10.101.130.141
00000384.00000cd4::2007/08/31-00:30:04.218 INFO [JOIN] Asking 10.255.255.143 to sponsor us after delay of 0 milliseconds.
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [JOIN] Spawning thread to connect to sponsor CLUSTERNODE2
00000384.00000ba4::2007/08/31-00:30:04.218 INFO [JOIN] Spawning thread to connect to sponsor 10.97.130.142
00000384.00000cd4::2007/08/31-00:30:04.234 WARN [JOIN] Unable to get join version data from sponsor 10.255.255.143 using NTLM package, status 5.
 
This seems to be the failure point.  It looks like the version data for the “Join” command was invalid (from SP1 to SP2).  The next couple of errors are the retries.
 
00000384.00000cd4::2007/08/31-00:30:04.234 WARN [JOIN] JoinVersion data for sponsor 10.255.255.143 is invalid, status 5.
00000384.000005d8::2007/08/31-00:30:05.218 INFO [JOIN] Asking CLUSTERNODE2 to sponsor us after delay of 1000 milliseconds.
00000384.00000d18::2007/08/31-00:30:05.218 INFO [JOIN] Asking 10.101.130.141 to sponsor us after delay of 1000 milliseconds.
00000384.00000cd8::2007/08/31-00:30:05.218 INFO [JOIN] Asking 10.97.130.141 to sponsor us after delay of 1000 milliseconds.
00000384.00000cd8::2007/08/31-00:30:05.218 WARN [JOIN] Unable to get join version data from sponsor 10.97.130.141 using NTLM package, status 5.
00000384.00000cd8::2007/08/31-00:30:05.218 WARN [JOIN] JoinVersion data for sponsor 10.97.130.141 is invalid, status 5.
00000384.000005d8::2007/08/31-00:30:05.218 WARN [JOIN] Unable to get join version data from sponsor CLUSTERNODE2 using NTLM package, status 5.
00000384.000005d8::2007/08/31-00:30:05.218 WARN [JOIN] JoinVersion data for sponsor CLUSTERNODE2 is invalid, status 5.
00000384.00000730::2007/08/31-00:30:06.218 INFO [JOIN] Asking 10.97.130.142 to sponsor us after delay of 2000 milliseconds.
00000384.00000730::2007/08/31-00:30:06.218 WARN [JOIN] Unable to get join version data from sponsor 10.97.130.142 using NTLM package, status 5.
00000384.00000730::2007/08/31-00:30:06.218 WARN [JOIN] JoinVersion data for sponsor 10.97.130.142 is invalid, status 5.
00000384.00000d18::2007/08/31-00:30:37.218 INFO [JOIN] Sponsor 10.101.130.141 is not available (JoinVersion), status=1722.
00000384.00000d18::2007/08/31-00:30:37.218 WARN [JOIN] JoinVersion data for sponsor 10.101.130.141 is invalid, status 1722.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [JOIN] Got out of the join wait, CsJoinThreadCount = 1.
00000384.00000ba4::2007/08/31-00:30:37.218 ERR  [JOIN] Unable to connect to any sponsor node.
00000384.00000ba4::2007/08/31-00:30:37.218 WARN [INIT] Failed to join cluster, status 53
 
At this point the node is assuming that the cluster is down because it could not correctly communicate, so it will try to create the cluster by forcing the quorum disk online.  These all fail, as the other node is actively locking those disks, so they cannot be released.  This is behavior by design.
 
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [INIT] Attempting to form cluster CLUSTERNETNAME
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [API] Online read only
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Creating group 16f59b7a-3ddf-41cf-b2f4-dcc74134ef72
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Initializing group 16f59b7a-3ddf-41cf-b2f4-dcc74134ef72 from the registry.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Name for Group 16f59b7a-3ddf-41cf-b2f4-dcc74134ef72 is 'ClusterNetName – MSCS'.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Group 16f59b7a-3ddf-41cf-b2f4-dcc74134ef72 contains Resource 6dca06aa-84ec-4ded-bc2e-3079612f4533.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Creating resource 6dca06aa-84ec-4ded-bc2e-3079612f4533
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Initializing resource 6dca06aa-84ec-4ded-bc2e-3079612f4533 from the registry.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Name for Resource 6dca06aa-84ec-4ded-bc2e-3079612f4533 is 'Cluster IP Address'.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleEntry: adding node 1 as possible host for resource 6dca06aa-84ec-4ded-bc2e-3079612f4533.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpQueryResTypeInfo: Calling FmpAddPossibleNodeToList for restype IP Address
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleNodeToList: adding node 1 to resource type's possible node list
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleNodeToList: Warning, node 2 not found
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] All dependencies for resource 6dca06aa-84ec-4ded-bc2e-3079612f4533 created.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Group 16f59b7a-3ddf-41cf-b2f4-dcc74134ef72 contains Resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Creating resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Initializing resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762 from the registry.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Name for Resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762 is 'Cluster Name'.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleEntry: adding node 1 as possible host for resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpQueryResTypeInfo: Calling FmpAddPossibleNodeToList for restype Network Name
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleNodeToList: adding node 1 to resource type's possible node list
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleNodeToList: Warning, node 2 not found
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762 depends on 6dca06aa-84ec-4ded-bc2e-3079612f4533. Creating…
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] CreateResource, Opened existing resource 6dca06aa-84ec-4ded-bc2e-3079612f4533
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] All dependencies for resource 70e2212b-e8bd-49bd-aa27-ae3c14e99762 created.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Group 16f59b7a-3ddf-41cf-b2f4-dcc74134ef72 contains Resource c3aea6d9-2a3d-48e9-80a5-18421c028341.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Creating resource c3aea6d9-2a3d-48e9-80a5-18421c028341
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Initializing resource c3aea6d9-2a3d-48e9-80a5-18421c028341 from the registry.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Name for Resource c3aea6d9-2a3d-48e9-80a5-18421c028341 is 'Disk Q:'.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleEntry: adding node 1 as possible host for resource c3aea6d9-2a3d-48e9-80a5-18421c028341.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpQueryResTypeInfo: Calling FmpAddPossibleNodeToList for restype Physical Disk
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleNodeToList: adding node 1 to resource type's possible node list
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpAddPossibleNodeToList: Warning, node 2 not found
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Found the quorum resource c3aea6d9-2a3d-48e9-80a5-18421c028341.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] All dependencies for resource c3aea6d9-2a3d-48e9-80a5-18421c028341 created.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Arbitrate for quorum resource id c3aea6d9-2a3d-48e9-80a5-18421c028341.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Initializing resource c3aea6d9-2a3d-48e9-80a5-18421c028341 from the registry.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Name for Resource c3aea6d9-2a3d-48e9-80a5-18421c028341 is 'Disk Q:'.
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] FmpRmCreateResource: creating resource c3aea6d9-2a3d-48e9-80a5-18421c028341 in shared resource monitor
00000d28.00000d94::2007/08/31-00:30:37.218 INFO [RM] Main: Initializing.
00000d28.00000d94::2007/08/31-00:30:37.218 INFO [RM] RmpGetDynamicEndpointName: Successfully got LRPC endpoint info, EP name is LRPC00000d28.00000001
00000384.00000ba4::2007/08/31-00:30:37.218 INFO [FM] Resmon LRPC EP name is LRPC00000d28.00000001
00000384.00000c84::2007/08/31-00:30:37.218 INFO [FM] Calling RmNotifyChanges in monitor 0d28.
00000d28.00000e3c::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] Waiting for PnP interface registration to complete.
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] PnP window created successfully.
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?fdc#generic_floppy_drive#6&211ce946&0&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Skipping floppy volume \?Volume{c6dc1c17-242a-11dc-8ad3-c73f05f62cd6}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?fdc#generic_floppy_drive#6&211ce946&0&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} – processed
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?ide#cdromhl-dt-st_dvd-rom_gdr-d10n_______________3.00____#5&2270d2f8&0&0.0.0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Skipping CDROM volume \?Volume{c6dc1c16-242a-11dc-8ad3-806e6f6e6963}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?ide#cdromhl-dt-st_dvd-rom_gdr-d10n_______________3.00____#5&2270d2f8&0&0.0.0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} – processed
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?storage#volume#1&30a96598&0&signature269b269boffset4000length8787ec000#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Attempting to add volume \?Volume{c6dc1c15-242a-11dc-8ad3-806e6f6e6963}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: adding volume ??Volume{c6dc1c15-242a-11dc-8ad3-806e6f6e6963}
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: \?storage#volume#1&30a96598&0&signature269b269boffset4000length8787ec000#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 'C', 7 (1052176)
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Online request not queued for signature 269b269b
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?storage#volume#1&30a96598&0&signature269b269boffset4000length8787ec000#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} – processed
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] PnP interface registration complete.
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] Setting PnP interface registration event.
00000d28.00000184::2007/08/31-00:30:37.250 INFO Physical Disk: [PnP] NotifierThread is waiting for messages.
00000384.00000ba4::2007/08/31-00:30:37.250 INFO [FM] FmpRmCreateResource: created resource c3aea6d9-2a3d-48e9-80a5-18421c028341, resid 1313632
00000384.00000ba4::2007/08/31-00:30:37.250 INFO [MM] MmSetQuorumOwner(1,1), old owner 0.
00000384.00000ba4::2007/08/31-00:30:37.250 INFO [FM] Set membership mask of 0×0 returns status 1
00000d28.00000e3c::2007/08/31-00:30:37.250 INFO Physical Disk <Disk Q:>: [DiskArb] Wait for offline thread to complete…
00000d28.00000e3c::2007/08/31-00:30:37.250 INFO Physical Disk <Disk Q:>: [DiskArb]——- DisksArbitrate ——-.
00000d28.00000e3c::2007/08/31-00:30:37.250 INFO Physical Disk <Disk Q:>: [DiskArb] DisksOpenResourceFileHandle: Attaching to disk with signature 9e1c3236
00000d28.00000e3c::2007/08/31-00:30:37.250 INFO Physical Disk <Disk Q:>: [DiskArb] DisksOpenResourceFileHandle: Disk unique id present trying new attach
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] DisksOpenResourceFileHandle: Retrieving disk number from ClusDisk registry key
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] DisksOpenResourceFileHandle: Retrieving handle to PhysicalDrive1
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] DisksOpenResourceFileHandle: Returns success.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitration Parameters: ArbAttempts 5,  SleepBeforeRetry 500 ms.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Read disk geometry to get the sector size.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetSectorSize on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] GetSectorSize completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] ArbitrationInfo.SectorSize is 512
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info to insure the disk is accessible.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitrate for ownership of the disk by reading/writing various disk sectors.
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] Successful read  (sector 12) [CLUSTERNODE2:64830] (0,a4f8bd6e:01c7e8b1).
00000d28.00000e3c::2007/08/31-00:30:41.250 INFO Physical Disk <Disk Q:>: [DiskArb] No reservation found. Read'n'wait.
00000d28.00000184::2007/08/31-00:30:41.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?STORAGE#Volume#1&30a96598&0&Signature9E1C3236Offset7E00Length3FBB8600#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
00000d28.00000184::2007/08/31-00:30:41.250 INFO Physical Disk: [PnP] AddVolume: Attempting to add volume \?Volume{32b79673-2435-11dc-bb9d-806e6f6e6963}
00000d28.00000184::2007/08/31-00:30:41.250 INFO Physical Disk: [PnP] AddVolume: adding volume ??Volume{32b79673-2435-11dc-bb9d-806e6f6e6963}
00000d28.00000184::2007/08/31-00:30:41.250 INFO Physical Disk: [PnP] AddVolume: \?STORAGE#Volume#1&30a96598&0&Signature9E1C3236Offset7E00Length3FBB8600#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 'Q', 7 (1049568)
00000d28.00000184::2007/08/31-00:30:41.250 INFO Physical Disk: [PnP] AddVolume: Online request not queued for signature 0
00000d28.00000184::2007/08/31-00:30:41.250 INFO Physical Disk: [PnP] AddVolume: Adding Name \?STORAGE#Volume#1&30a96598&0&Signature9E1C3236Offset7E00Length3FBB8600#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} – processed
00000d28.00000e3c::2007/08/31-00:30:48.250 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to read  (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:30:48.750 WARN Physical Disk <Disk Q:>: [DiskArb] Retry arbitration, 4 attempts left
00000d28.00000e3c::2007/08/31-00:30:48.750 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info to insure the disk is accessible.
00000d28.00000e3c::2007/08/31-00:30:48.750 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:48.750 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:48.750 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitrate for ownership of the disk by reading/writing various disk sectors.
00000d28.00000e3c::2007/08/31-00:30:48.750 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to read  (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:30:48.750 INFO Physical Disk <Disk Q:>: [DiskArb] We are about to break reserve.
00000d28.00000e3c::2007/08/31-00:30:48.750 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing BusReset on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:50.843 INFO Physical Disk <Disk Q:>: [DiskArb] BusReset completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:52.843 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info from the disk to insure disk is accessible.
00000d28.00000e3c::2007/08/31-00:30:52.843 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:53.843 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:53.843 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to write (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:30:54.343 WARN Physical Disk <Disk Q:>: [DiskArb] Retry arbitration, 3 attempts left
00000d28.00000e3c::2007/08/31-00:30:54.343 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info to insure the disk is accessible.
00000d28.00000e3c::2007/08/31-00:30:54.343 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:54.343 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:54.343 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitrate for ownership of the disk by reading/writing various disk sectors.
00000d28.00000e3c::2007/08/31-00:30:55.343 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to read  (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:30:55.343 INFO Physical Disk <Disk Q:>: [DiskArb] We are about to break reserve.
00000d28.00000e3c::2007/08/31-00:30:55.343 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing BusReset on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:30:57.343 INFO Physical Disk <Disk Q:>: [DiskArb] BusReset completed, status 0.
00000d28.00000e3c::2007/08/31-00:30:59.343 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info from the disk to insure disk is accessible.
00000d28.00000e3c::2007/08/31-00:30:59.343 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:00.343 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:01.343 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to write (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:31:01.843 WARN Physical Disk <Disk Q:>: [DiskArb] Retry arbitration, 2 attempts left
00000d28.00000e3c::2007/08/31-00:31:01.843 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info to insure the disk is accessible.
00000d28.00000e3c::2007/08/31-00:31:01.843 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:01.843 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:01.843 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitrate for ownership of the disk by reading/writing various disk sectors.
00000d28.00000e3c::2007/08/31-00:31:01.843 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to read  (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:31:01.843 INFO Physical Disk <Disk Q:>: [DiskArb] We are about to break reserve.
00000d28.00000e3c::2007/08/31-00:31:01.843 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing BusReset on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:03.843 INFO Physical Disk <Disk Q:>: [DiskArb] BusReset completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:05.843 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info from the disk to insure disk is accessible.
00000d28.00000e3c::2007/08/31-00:31:05.843 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:06.843 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:06.843 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to write (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:31:07.343 WARN Physical Disk <Disk Q:>: [DiskArb] Retry arbitration, 1 attempts left
00000d28.00000e3c::2007/08/31-00:31:07.343 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info to insure the disk is accessible.
00000d28.00000e3c::2007/08/31-00:31:07.343 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:07.343 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:07.343 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitrate for ownership of the disk by reading/writing various disk sectors.
00000d28.00000e3c::2007/08/31-00:31:08.343 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to read  (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:31:08.343 INFO Physical Disk <Disk Q:>: [DiskArb] We are about to break reserve.
00000d28.00000e3c::2007/08/31-00:31:08.343 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing BusReset on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:10.343 INFO Physical Disk <Disk Q:>: [DiskArb] BusReset completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:12.343 INFO Physical Disk <Disk Q:>: [DiskArb] Read the partition info from the disk to insure disk is accessible.
00000d28.00000e3c::2007/08/31-00:31:12.343 INFO Physical Disk <Disk Q:>: [DiskArb] Issuing GetPartInfo on signature 9e1c3236.
00000d28.00000e3c::2007/08/31-00:31:13.343 INFO Physical Disk <Disk Q:>: [DiskArb] GetPartInfo completed, status 0.
00000d28.00000e3c::2007/08/31-00:31:14.343 ERR  Physical Disk <Disk Q:>: [DiskArb] Failed to write (sector 12), error 170.
00000d28.00000e3c::2007/08/31-00:31:14.343 INFO Physical Disk <Disk Q:>: [DiskArb] Arbitrate returned status 170.
 
At this point, the service has recognized that it cannot force control of the Quorum disk, either because it is online of because of a system failure, and it initializes the service shutdown procedures.
 
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [MM] MmSetQuorumOwner(0,0), old owner 1.
00000384.00000ba4::2007/08/31-00:31:14.343 ERR  [FM] FmGetQuorumResource failed, error 170.
00000384.00000ba4::2007/08/31-00:31:14.343 ERR  [INIT] ClusterForm: Could not get quorum resource. No fixup attempted. Status = 5086
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [INIT] Cleaning up failed form attempt.
00000384.00000ba4::2007/08/31-00:31:14.343 ERR  [INIT] Failed to form cluster, status 5086.
00000384.00000ba4::2007/08/31-00:31:14.343 ERR  [CS] ClusterInitialize failed 5086
00000384.00000ba4::2007/08/31-00:31:14.343 WARN [INIT] The cluster service is shutting down.
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [EVT] EvShutdown
00000384.00000ba4::2007/08/31-00:31:14.343 WARN [FM] Shutdown: Failover Manager requested to shutdown groups.
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [FM] FmpCleanupGroups: Entry
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [FM] FmpCleanupGroups: Exit
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [Dm] DmShutdown
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [DM] DmpShutdownFlusher: Entry
00000384.00000ba4::2007/08/31-00:31:14.343 INFO [DM] DmpShutdownFlusher: Setting event
00000384.00000e24::2007/08/31-00:31:14.343 INFO [DM] DmpRegistryFlusher: got 0
00000384.00000e24::2007/08/31-00:31:14.343 INFO [DM] DmpRegistryFlusher: exiting
00000384.00000ba4::2007/08/31-00:31:14.343 WARN [MM] MMLeave is called when rgp=NULL.
00000384.00000ba4::2007/08/31-00:31:14.343 ERR  [CS] Service Stopped. exit code = 5086
00000d28.00000d94::2007/08/31-00:31:14.562 WARN [RM] Going away, Status = 1, Shutdown = 0.
00000d28.00000d94::2007/08/31-00:31:14.562 ERR  [RM] Active Resource = 00000000
00000d28.00000d94::2007/08/31-00:31:14.562 ERR  [RM] Resource State is 1,  ""
00000d28.00000d94::2007/08/31-00:31:14.562 INFO [RM] Posting shutdown notification.
00000d28.00000c5c::2007/08/31-00:31:14.562 INFO [RM] NotifyChanges shutting down.
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: Terminate, ResourceEntry @ 00000000000F33E0  Valid 0
00000d28.00000184::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: [PnP] Stop watching PnP events for disk 9e1c3236
00000d28.00000184::2007/08/31-00:31:15.062 WARN Physical Disk <Disk Q:>: [PnP] RemoveDisk: WatchedList is empty
00000d28.00000184::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: [PnP] Stop watching disk 9e1c3236 – processed
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: DiskCleanup started.
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: [DiskArb] StopPersistentReservations is called.
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: [DiskArb] StopPersistentReservations is complete.
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: DiskCleanup returning final error 0
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: DisksMountPointCleanup: Cleanup mount point information
00000d28.00000d94::2007/08/31-00:31:15.062 INFO Physical Disk <Disk Q:>: [DiskArb] ArbitrationInfoCleanup.
00000d28.000004c8::2007/08/31-00:31:15.062 INFO [RM] RmpPollerThread: Asked to exit…
00000d28.000004c8::2007/08/31-00:31:15.062 INFO [RM] PollerThread stopping. Shutdown = 1, Status = 1, WaitFailed = 0, NotifyEvent address = 288.

 

SQL 2005 Embedded Edition… What the heck is that?

August 23rd, 2007 by josef.nielsen

So I ran in to a copy of SQL 2005 Embedded today… first time I've seen it.  It was on a MOSS install that some folks were testing, and they wanted the content moved over to our Production environment. No Problem, says I… I went to go make a backup of the Context DB to import in to the Production farm to move the content, but I couldn't connect to the DB server with my Management Studio. 

Scratching my head with a perplexed look on my face, I loaded the Management Studio on the local server and tried opening it up there.  No Dice…  Apparently, it is an IP disabled version that only allow local named pipes connections, or something. 

The only way I found to connect to the thing was by telling the Management Studio to connect to \.pipemssql$microsoft##sseesqlquery 

 Not very intuitive… but it works…

What was the stsadm.exe operation name for a site backup…?

August 21st, 2007 by josef.nielsen

Oh, never mind… I'd rather use AvePoint's DocAve for MOSS2007 anyways!  

   

It's really quite a product (an no, I'm not being paid to say that!).  You can create multiple backup jobs, each with multiple schedules.  You can set retention policies and schedule system archives to clear out old content. 

You can also preform real-tie SPS2003 to MOSS2007 content migrations.  It actually converts the 2003 data in to the new 2007 formats, inserting it in to whatever site you designate. 

The most powerful use I've found so far is for quick, simple site moves, when a self-provisioned team site has been named incorrectly, or when a sub-site (3rd tier) needs to be converted to it's own site collection (2nd level).  They have a demo version you can try out to experiment and determine if it fits your needs… I've had pretty good support from them.  Contact Kevin Kane for more info…