Tuesday, August 16, 2011

Leaving Blogspot - Go to http://blog.expertpointsolutions.com

Hi All,

I finally came to terms with the fact that I don't like how blogspot uploads images and how you have to reference them ... is it difficult ... no, but it takes time.  Too much time actually, I was greatly discouraged from blogging after a while.  Wordpress has been refreshing, find my new blog at http://blog.expertpointsolutions.com

Also, blogspot wasn't letting me know when I was receiving comments ... I was not really getting back to anyone as such.  Things are changing, come check out the new blog.

Thank you,

Brian Culver
http://blog.expertpointsolutions.com
Friday, January 21, 2011

SharePoint 2010 Performance at the Houston SharePoint User Group

Hi All,

I did the technical presentation on Wednesday, Jan 19, 2011 at the Houston SharePoint User Group over SharePoint 2010: Boost the Performance of SharePoint Today!

The turn out was fantastic.  I can't thank you enough for coming.  As requested by many, I am posting my slides and the scripts used during the demo.
Presentation Summary:
Is your farm struggling to serve your organization? How long is it taking between page requests? Where is your bottleneck in your farm? Is your SQL Server tuned properly? Worried about upgrading due to poor performance? We will look at various tools for analyzing and measuring performance of your farm. We will look at simple SharePoint and IIS configuration options to instantly improve performance. Mr. Culver will discuss advanced approaches for analyzing, measuring and implementing optimizations in your farm.

Here are the slides and scripts I used to demo:

Saturday, May 1, 2010

First SharePoint Saturday in Houston

Today is a great day here in Houston. We are having our first SharePoint Saturday today. Over 400 people registered, the conference area is looking great. I met the speakers last night and we had a lot of fun even after the dinner. Today, I am presenting two sessions:

  • SharePoint 2010 Performance: Boost the Performance of SharePoint Today!
  • SharePoint 2010 Extranets & Authentication: How will SharePoint 2010 connect you to your partners?

I look forward to meeting our SharePoint community in Houston. Off to the conference.
Thursday, April 29, 2010

Presented at SharePoint Tech Dives Last Night

So last night, I had the pleasure to present at the SharePoint Tech Dives (http://www.sptechdives.com/) group on "Building a SharePoint 2010 Extranet using Claims Based Authentication". I had a whole lot of fun and I enjoyed the crowd. They had many great questions and feedback. We also had a good time following the presentation at Rajun Cajun.

Here is a link to the slides:
http://www.slideshare.net/bculver/sharepoint-2010-extranets-and-authentication-how-will-sharepoint-2010-connect-you-to-your-partners
Thursday, April 22, 2010

SharePoint Server 2010 RTM is on MSDN

So I make my coffee, get on my laptop and I think ... I should check out MSDN (https://msdn.microsoft.com/en-us/subscriptions) to see what new goodies are there ....

I notice a download for SharePoint Server 2010. And yes! It is the RTM bits ... no more BETA2 bits. Go get your bits. I am grabbing mine ... so wait and don't slow down my download. ;) Good day to all btw.

File Name: en_sharepoint_server_2010_x64_dvd_518634.iso
Date Published (UTC): 4/22/2010 8:49:57 AM Last Updated (UTC): 4/22/2010 8:57:09 AM
Available to Levels: VS Pro with MSDN Premium (Empower); Developer AA; VS Premium with MSDN (MPN); VS Pro with MSDN Premium (MPN); MSDN Universal (VL); BizSpark Admin; BizSpark; VS Ultimate with MSDN (VL); VS Premium with MSDN (VL); VS Premium with MSDN (Retail); VS Ultimate with MSDN (Retail);
Wednesday, March 31, 2010

Presenting at FEDSPUG April 1st via LiveMeeting

Topic: How will SharePoint 2010 connect you to your partners? SharePoint 2010 Extranets and Authentication
How will SharePoint 2010 allow organizations to collaborate and share knowledge with clients and partners? SharePoint empowers organization to build extranet sites and partner portals inexpensively and securely. Learn what exactly is claims based authentication and how can to use it. Learn about the new multi-authentication mode in SharePoint 2010. Learn how SharePoint 2010 can help your organization open its doors to its clients and partners securely.

This is a livemeeeting presenstation, come join us.
April 1st from 1PM-3PM Central
Wednesday, March 24, 2010

SharePoint 2010 Extranets and Authentication: How will SharePoint 2010 connect you to your partners?

Here is the SlideShare Presentation I made at the San Antonio SharePoint User Group:
Saturday, March 20, 2010

Presentation: SharePoint 2010 Extranets and Authentication

I will be presenting in San Antonio at the SharePoint User Group this Tuesday, March 23rd.

Topic: How will SharePoint 2010 connect you to your partners? SharePoint 2010 Extranets and Authentication
How will SharePoint 2010 allow organizations to collaborate and share knowledge with clients and partners? SharePoint empowers organization to build extranet sites and partner portals inexpensively and securely. Learn what exactly is claims based authentication and how can to use it. Learn about the new multi-authentication mode in SharePoint 2010. Learn how SharePoint 2010 can help your organization open its doors to its clients and partners securely.
Sunday, February 28, 2010

Enhancing User Profiles with BDC Data

The goal of using the BDC with the User Profile is to extend and/or enhance the User Profile Information. An example where this is often used is when a company stores much information in PeopleSoft (HR info usually) and well as AD. Regardless of the medium and the content, the assumption here is that the new information will add value and enhance the user profiles.

For this sample, I assume the following:
  • A database in SQL Server containing your BDC user information.
    • A column with the user account Id’s
    • Additional columns to supplement data into the User Profile Properties
  • Proper access to a SharePoint farm to do this.
  • A non-production SharePoint farm (this should be properly tested and scripted before any production implementation).
  • A good cup of coffee

    Ensure proper access to the BDC Data Source

    Depending on the type of security you wish to use to connect to the data source, you have a couple options:


    Authentication Mode

    Applies To

    Description

    PassThrough

    Databases and Web Services

    This authentication uses the identity of the end user. IIS impersonates the user by default, but in order to avoid losing the impersonated user’s identity when the Business Data Catalog authenticates to the back-end server (or data source), Kerberos delegation must be enabled between the IIS and the back-end server (or data source). Kerberos delegation enables a receiving server (IIS) to send the authentication request to the back-end server (or data source).

    RevertToSelf

    Databases and Web Services

    This authentication reverts to the application pool account.

    Credentials

    Web Services

    This authentication uses basic or digest authentication depending on the configuration of the Web service. Be sure to use SSL or IPSec to encrypt the communications.

    WindowsCredentials

    Databases and Web Services

    This authentication uses the Windows credentials from its default single sign-on (SSO) service.

    More on BDC authentication here.

    We will be using RevertToSelf; therefore, the Application Pool account needs to have access (read access) to the database.  In our example, we have a User Database with four fields: AccountName, City, State and LastModifiedDate.

    SQL Server Table Columns

    Create the Application Definition File


    Manually creating an ADF file is error prone and cumbersome. Save time and use a good tool. Two common tools are BDCMetaman and Microsoft’s Business Data Catalog Definition Editor which are both good options.

    Run BDCMetaman and choose “Connect to datasource:” and choose the SQL Server option with the appropriate information.

    BDCMetaman Entity

    Once the LitwareUserData database structure has been loaded, add the UserData table to the Designer on the right.

    BDCMetaman Line of Business Application

    Be sure to explore your options in the tool. In our example, we will use RevertToSelf as the authentication mode; therefore, we use the tool to make that change.

    BDCMetaman Authentication

    Configure the location where to create the ADF file and the MOSS SSP values.

    BDCMetaman Configuration

    After saving the Configuration options, right-click on the blue area and click on Edit Entity.

    Configure the Title Column to AccountName as shown below. Click on Save.

    BDCMetaman Entity Properties

    Once all these steps are completed, click on Build or Generate Application Definition to create the Application Definition file. We have created the application definition file for our BDC Application. You can open the file in your favorite text editor and you will appreciate the tool. Application Definition Files are lengthy and complex.

    Application Definition File (ADF)

    Import the BDC Application Definition


    With our ADF file, we are ready to upload it into MOSS. Browse to your Shared Service Provider and click on Import Application Definition.

    Shared Service Provider

    Choose the Application Definition file that we created and click on Import.

    Import Application Definition Page

    Once the import has completed, click on OK to view the BDC Application page.

    ADF Import Successful

    Review the BDC application information and make changes as needed.

    View Application Page

    Depending on your specific security needs, you may need to modify the permissions to allow your application pool or BDC content access account proper access in the BDC Application. Click on the Manage Permission link. Once in the Manage Permission screen, add the appropriate account and give it rights to read and execute the BDC definition (Application). I usually have found that Execute and Selectable in Clients works for me.. Click on Save to continue. Important: Now click on Copy all permissions to descendants to propagate the permission to the lower application objects, such as the entities.

    Create a New Import Connection for BDC

    In order to use our BDC data, we need to configure the User Profiles to consume the BDC data. This requires two basic steps: Create an import connection and map the BDC data to the User Profiles. Browse to your Shared Service Provider, click on the User Profile and Properties page. Click on View Import Connections.

    User Profiles and Properties Page

    In the View Import Connections page, click on Create New Connection.

    View import Connections

    In the Add Connection page, configure the connection as follows:

    Type: Business Data Catalog
    Connection Name: LitwareUserDataLOBSystem (the name of your BDC Application)
    Business Data Catalog Entity: dbo.UserData (use the selector to choose the entity)
    Connection Mapping: AccountName (select the field by which the data will map to the user profiles)

    New Import Connection

    Once completed, click on OK. In the View Import Connections page, verify the new connection.

    View import Connections

    Browse back to the View Profile Properties page and click on Add User Profile Property. Enter the appropriate Name, Display Name and a useful Description. Towards the bottom, choose the Source Data Connection and the data source field to map. Click on OK and repeat as needed. In this example, we are also modifying the Policy Settings for the field where Everyone can see the field. This will make the property visible to Everyone when they visit a user’s profile page.

    New Profile Property - City

    In our example, we created two new Profile Properties: City and State.

    New Profile Properties

    Once the profile properties have been added, browse back to the User Profile and Properties page and start a Full Import.

    User Profiles and Properties

    Verify Successful Import

    Once the full import has completed, the user profiles should contain the new data. We will start by choosing a user account from the BDC data source. We use the SQL Server Management Studio to query our source table. In this example, we use LITWAREINC’AdinaA to test our data. Therefore, in MOSS we will find that AdinaA has City and State populated as Boulder and Colorado.

    Query Results

    A simple quick test is to view the user profile in the Shared Services Provider. In the Shared Services Provider, browse to View User Profile and click on Edit User on the account we wish to see (i.e. LITWAREINC’AdinaA).

    View User Profiles

    In the Edit Profile page, we can verify the account name and the field mappings to that account. Notice the city and state are correct for Adina Hagege (LITWAREINC’AdinaA).

    User Profile Properties

    User Profile Properties - City and State

    Our last step is to verify that our end-users can also see the new information in the public profile pages for all users. Browse to a web application and perform a search for our user (People Search). Open the user profile page in the search results. There are other ways to find users as well, searching works particularly well in MOSS.

    People Search

    In the public profile page, you will see the new profile properties containing the appropriate values.

    Public Profile Page

    Congratulations, you have enhance the user profiles using the BDC as a data source.
    Wednesday, February 24, 2010

    San Antonio SharePoint User Group - Feb 23rd, 2010

    Yesterday, I was in San Antonio at the San Antonio SharePoint User Group meeting (SASUG) where I enjoy where Paul Schaeflein (MVP) discussed the proper usage of elevated permissions and impersonation.  Paul an excellent job, I learned a couple new things.  After the meeting, we enjoyed a couple SharePint's and margaritas at the Firehouse Pub & Grill.  This was a good crowd.  I will be speaking at the next meeting over "SharePoint 2010: Extranets and Authentication".  I look forward to seeing this group again.
    Friday, February 19, 2010

    New Microsoft Certified SharePoint Master in Houston

    So I have been very quiet for the last several months.  I have also been very busy.  On February 8th, 2010, I finally completed my last qualification to become a Microsoft Certified SharePoint Master.  My journey started early in 2008 when the program was announced.  I was accepted into the program on my second try.

    My first attempt (during the interviews) was a humbling lesson where it highlighted my strengths and it opened my eyes to areas I had not ventured into.  I had been working with SharePoint for about four years around that time.  Through much determination and perseverance, I read the pre-reading list with 81 items and sought out opportunities with my clients to exercise my growing knowledge.

    My second attempt was still a humbling lesson, SharePoint is an enormous platform and framework which can be used in so many ways.  The news was exciting, I was accepted into the fourth MCM rotation.

    The three weeks in Seattle were brutal and exhausting, but every day I could only think "awesome".  Every candidate and instructor is very skilled, knowledgeable, experienced and on top of their game.  The experience and knowledge shared during the three weeks makes the entire process worth every bit of effort, time and, of course, money.  I have to add that this certification is not for everyone.  It is very difficult, very challenging and it will impact your life and family.  The pre-reading really is a requirement and it still may not be enough. You have to read all of it before you get there if you are to succeed.  You should also experience as much of it as well.  I cannot say enough about the support my family has given to me.  I spent countless weekends, holidays, car trips and rides reading, practicing, discussing and breaking SharePoint in new creative ways in preparation.  The entire last year (and some) has been one of the most rewarding years as a result of this journey.  I hope to continue this journey as we welcome SharePoint 2010 and I look forward to contributing to the SharePoint community.


    Monday, October 12, 2009

    WSS 3.0 & MOSS 2007 Licensing

    The question of how much does WSS or MOSS cost to license is always being asked.  Getting the information is not always that easy either, so I will provide a quick summary and the appropriate links to follow to simplify this.  One thing to highlight is that the licensing and versions of the "MOSS Suite" changed as of April 1, 2009.  What that means is that Forms Server 2007 was discontinued as a standalone product, SharePoint Designer 2007 is free now and PerformancePoint Server 2007 is now included at no cost with MOSS 2007 Enterprise.

    The licensing model for WSS 3.0 is different from MOSS 2007.

    Windows SharePoint Services 3.0 Licensing

    WSS 3.0 "conforms to the Windows Server 2003 licensing model".  What that means is that WSS 3.0 is part of Windows 2003 Server for free.  You have to license Windows 2003 Server properly to use WSS 3.0.  Will your WSS 3.0 site serve as an external facing site, internal for your employees or both?

    Microsoft Office SharePoint Server 2007 Licensing
     
    MOSS 2007 is licensed separately based on the following versions:


    Office SharePoint Server 2007 for Internet Sites (no CALs required)
    -This is you external facing site (anonymous)


    Office SharePoint Server 2007 (CALs also required)
    -This is you intranet site, you have to buy CAL's for each user.   To use MOSS 2007 Enterprise you have to buy both an standard CAL and an enterprise CAL for each user.

    Client Access License
    Office SharePoint Server 2007 Standard CAL
    Office SharePoint Server 2007 Enterprise CAL

    The MOSS 2007 search engine is basically Microsoft Search Server 2008 but it is integrated and not a standalone product.  Microsoft Search Server 2008 is available as a standalone product:

    Microsoft Search Server 2008 Licensing


    Microsoft Search Server 2008 (no CALs required)
    Microsoft Search Server 2008 Express (no CALs required)     Free Download

    Supplemental Licensing Information for Windows SharePoint Services
    http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb684457.aspx

    Windows Server 2003 R2 Client Access Licensing Overview
    http://www.microsoft.com/windowsserver2003/howtobuy/licensing/caloverview.mspx

    Microsoft Office SharePoint Server 2007 and Related Technologies pricing
    http://office.microsoft.com/en-us/sharepointserver/FX102176831033.aspx?ofcresset=1
    - Always go to the Microsoft site to verify the latest pricing and licensing.
    Sunday, May 3, 2009

    Display QueryString and Form its on Page

    I know this probably is one of the most common posts out on the web (for .Net coders), but I can never seem to find it when I need it. So it is here for my reference.

    When you are trying to debug an ASP.Net page and you need to see the form collection after a POST or the QueryString (for convenience) for a GET or POST, simply copy the method add it to a page and call it from one of the Page Lifecycle Event Handlers, such as OnInit, OnLoad, etc. I think it is poor practice to hide this output in the body of a page as a comment so I am not doing that (and strongly recommend that you don't do that either) ... simply remove the code or call (if you add it to a library as a static method). I have seen too many people leave the output as commented (html) code ... simply bad.

    Nonetheless, here is the code snippet:


    /// <summary>
    /// Display the QueryString Collection and Form Collection information for a ASP.Net Page
    /// </summary>
    private void RenderRequestInfo() {

    //Iterate the Request.QueryString collection
    Page.Response.Write(string.Format("<b> Request.QueryString ({0})</b><br />", Page.Request.QueryString.Count.ToString()));
    foreach (string queryItem in Page.Request.QueryString) {
    Page.Response.Write(queryItem);
    try {
    Page.Response.Write("='" + HttpUtility.HtmlEncode(Page.Request.QueryString[queryItem]) + "'<br />");
    } catch (Exception ex) {
    Page.Response.Write(string.Format("=[Error during render.] {0}<br />", ex.Message));
    }
    }
    Page.Response.Write("<br />");

    //Iterate the Request.Form collection
    Page.Response.Write(string.Format("<b> Request.Form ({0})</b><br />", Page.Request.Form.Count.ToString()));
    foreach (string formItem in Page.Request.Form) {
    Page.Response.Write(formItem);
    try {
    Page.Response.Write("='" + HttpUtility.HtmlEncode(Page.Request.Form[formItem]) + "'<br />");
    } catch (Exception ex) {
    Page.Response.Write(string.Format("=[Error during render.] {0}<br />", ex.Message));
    }
    }
    Page.Response.Write("<br />");
    }


    Cheers!
    Wednesday, January 7, 2009

    Rename a WSS3/MOSS Server

    I took this from Mirjams blog. I have verified that it works. I am adding it here so that I can find it when I need it, and as I mentioned, it works great.

    Renaming a WSS3 or MOSS server requires very specific tasks in a specific order. If you don’t follow the following instructions precisely, the chances are that you may need to reconfigure your whole MOSS environment.

    Here are the steps to take, and the order in which to take them if you want to rename a server that has WSS3 or MOSS already installed and configured on it:

    *** NOTE: Use only letters, digits and minus for the machine name (so no underscores), max 15 characters.

    1. Change each alternate access mapping for your WSS3 or MOSS deployment in Central Administration:


      • Open Central Administration, "Operations" Tab, "Alternate access mappings" link

      • Modify each mapping item to reflect your newly chosen server name



    2. Use stsadm.exe to invoke the "renameserver" command option:


      • Open a command prompt window

      • cd "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN"

      • stsadm -o renameserver -newservername <newname> -oldservername <oldname>


    3. Rename your Server via Change Name Operation in Windows Server 2003:


      • Start Menu | Control Panel | System, "Computer Name" tab, "Change" button.

      • Input your new server name


    4. Reboot the server NOW.

    5. Update the MOSS farm creadentials


      • After reboot, open command prompt

      • cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN

      • stsadm -o updatefarmcredentials -userlogin <domainuser> -password <password>


    6. iisreset /noforce

    7. Check all application pool identities in IIS, update where the old machine name is still there.

    8. If you already have a search index drop this, and rebuild it

    9. Congratulations, your server is now renamed.

    Monday, November 3, 2008

    Useful MOSS Tools

    Below, I am making a list of the tools I use most frequently for MOSS development, diagnosis and some maintainance.

    SharePoint Manager 2007

    http://www.codeplex.com/spm

    This tool is a MOSS swiss army knife. It traverses the MOSS object model and displlay the properties for a vast number of MOSS objects. The tool also allows the user to make changes on the spot and commit the changes to MOSS. I can't emphasize enough how good this tool is.

    U2 CAML Tool

    http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1315
    This tool makes building and testing CAML queries a simple task. It connects to MOSS and allows you query build live queries and test them accordingly.

    Web Service Studio 2.0

    http://mattharrah.com/blog/web-tools/net-web-service-studio-20/
    This tool allows you view SharePoint through it web services. I use this tool for verifying data, extracting xml to verify and assimilate MOSS objects. Through it you can invoke webmethods interactively by providing a WSDL endpoint. The tool fetches the WSDL, generates .NET proxy from the WSDL and displays the list of methods available. Then you can invoke any method (with custom input parameters). The SOAP request is sent to the server and the response is displayed in the UI.

    WSP Builder

    http://www.codeplex.com/wspbuilder
    This tool This tool is used for create web solution packages (wsp) from a folder structure. There is also a Visual Studio Add-in which allows you to build a wsp for a project at a time. This tool saves hours of configuration and testing per project. This tool is a must for building SharePoint solutions.

    FireBug (for FireFox)

    https://addons.mozilla.org/en-US/firefox/addon/1843

    This tool integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page. It allows you to explore and modify the document object model (DOM) of a Web page. This includes the styles, style sheets and other resources. The Developer Toolbar can be pinned to the Firefox browser window or floated separately.

    IE Developer Toolbar

    http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en

    This tool allows you to explore and modify the document object model (DOM) of a Web page. This includes the styles, style sheets and other resources. The Developer Toolbar can be pinned to the Internet Explorer browser window or floated separately.

    I will add more tools as I remember and/or encounter them. I will use the MOSS Tools label.
    Friday, April 25, 2008

    MOSS 2007 Column Limitations

    I recently had a meeting with a client where it was asked if SharePoint 2007 (MOSS) still suffered from the SharePoint 2003 limitations. I began testing and ran into no limitations. I stopped at 190 fields successfully. I also tested the 190 fields with content types, and adding and editing documents using the content type.

    Background

    In SharePoint 2003, the following limitations were well known (1):

    • 64 Single line of text and Choice (drop-down menu or radio buttons)
    • 31 Multiple lines of text and Choice (check boxes (allow multiple sections))
    • 32 Number and currency
    • 32 Hyperlink
    • 16 Date and time
    • 16 Lookup
    • 16 Yes/No
    • 8 Calculated
    Findings

    I found Microsoft literature specifying the following “guidelines for acceptable performance” for columns (2):

    • 2,000 per document library
    • 4,096 per list

    “This is not a hard limit, but you might experience library and list view performance degradation as the number of columns in a document library or list increases.”

    I found a blog article where Ishai Sagi tested the performance of creating 2000 text fields. Here is a summary of his findings:

    Average time per fields as more fields created

    I looked into SharePoint 2007 to figure out exactly how Microsoft overcame the limitations in SharePoint 2003. SharePoint has a table called “AllUserData” where they have the following fields:
    • 8 datetime (DateTime)
    • 12 float (Number, Percentage)
    • 16 int (Integer)
    • 16 bit (Boolean)
    • 32 ntext (Note)
    • 64 nvarchar (Text, Url, Choice)
    • 8 sql_variant
    In a nutshell, if the limit of any of the column types is reached, SharePoint uses a second row to begin populating the data. The new row will have a field called rowOrdinal incremented to 1. Therefore, if the column once again exceed their limit, the rowOrdinal will be incremented to 2 and so on.

    1 - To read more about the SharePoint 2003 limits: http://support.microsoft.com/default.aspx?scid=kb;en-us;823555

    2 - To read more about the SharePoint 2007 (MOSS) limits: http://technet.microsoft.com/en-us/library/cc262787.aspx

    3 - To read more about the performance testing of columns: http://www.sharepoint-tips.com/2006/06/sharepoint-2007-column-limits.html

    Sunday, March 16, 2008

    Best Practices: Closing and Disposable of MOSS Objects

    Several blogs out there talk about the need to close and/or dispose of the SPSite and SPWeb objects. I took this to heart but then I started receiving the occasional error stating:

    "Trying to use an SPWeb object that has been closed or disposed and is no longer valid."

    The purpose of this blog entry is to clear this up (at least for me). The following link is to Microsoft's documentation on this matter: http://msdn2.microsoft.com/en-us/library/aa973248.aspx

    In summary:

    • If you create SPSite object using the "new SPSite()" constructors (any constructor override), then you need to call the "SPSite.Dispose()" method.
    • If you create the SPSite object using SPControl.GetContextSite(), then you should NOT dispose of the object.

    This is Microsoft's explanation as to why you should not dispose of the object when instantiated through using SPControl.GetContextSite():

    "Because the SPWeb and SPSite objects keep an internal list that is derived in this way, disposing of the object may cause the SharePoint object model to behave unpredictably. Internally, Windows SharePoint Services enumerates over this list after page completion to dispose of the objects properly."

    Thursday, July 12, 2007

    Office SharePoint Server 2007 on a single server install failed

    I have had a situation happen on occasion where Office SharePoint Server 2007 on a single server (the basic install option) fails. The error can occur for a variety of reasons, needless to say the error log message maybe obscure (it was to me). So here is what it looks like when I was installing:

    I installed Microsoft Office SharePoint Server 2007 as a "Basic" install. Then I kicked off the install ...








    Somewhere along the configuration wizard, the install would fail. I tried a couple more times after trying different things ... nothing would work.


    The log file had the following error:

    06/26/2007 01:43:48 8 INF Creating connection string for config db SharePoint_Config_21cd986b-83ca-4908-a9f7-89871f6e458d server MOSSMACHINE\OfficeServers
    06/26/2007 01:43:48 8 INF Creating connection string for admin content db SharePoint_AdminContent_9752c1e5-fd30-4a9b-9dbb-e853e39bc837 server MOSSMACHINE\OfficeServers
    06/26/2007 01:43:48 8 INF Using NTLM for sql connection string
    06/26/2007 01:43:48 8 INF Openning configdb so that I can join it at server MOSSMACHINE\OfficeServers database SharePoint_Config_21cd986b-83ca-4908-a9f7-89871f6e458d in eval mode
    06/26/2007 01:43:48 8 INF Now joining to farm at server MOSSMACHINE\OfficeServers database SharePoint_Config_21cd986b-83ca-4908-a9f7-89871f6e458d
    06/26/2007 01:43:48 8 ERR Task configdb has failed with an unknown exception
    06/26/2007 01:43:48 8 ERR Exception: System.InvalidOperationException: Windows SharePoint Services configuration infrastructure is not initialized. You must wait until completion before joining another server to the farm.
    at Microsoft.SharePoint.Administration.SPFarm.Join()
    at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()
    at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()
    at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()


    Somehow it just couldn't connect to the configuration database. As I mentioned above, I tried all the things that made sense to me ... to no avail. Fortunately I ran into this article on TechNet: Install Office SharePoint Server 2007 on a stand-alone computer

    In it, I found the following line:

    Note:

    If you uninstall Office SharePoint Server 2007 and then later install Office SharePoint Server 2007 on the same computer, the Setup program could fail when creating the configuration database causing the entire installation process to fail. You can prevent this failure by either deleting all the existing Office SharePoint Server 2007 databases on the computer or by creating a new configuration database. You can create a new configuration database by running the following command:

    psconfig -cmd configdb -create -database


    Running that line solved my problem ... if this solves your problem, remember to delete the configuration databases which were created from the failed attempts and aren't being used.


    Hope this helps someone. Good luck!

    And my family grows

    Its been a while since I have written. Well its time to break the news ... we had a beautiful baby girl. She's great ... time consuming and fun. We are trying to get back into the swing of things. Here is one of my favorite pictures of her. This is our first baby after eight years of marriage. I am happy we had eight years to solidify our relationship ... I can see a new baby straining a young fresh marriage; it can be done nonetheless. Babies are great though ... I have to admit though: I am beginning to have a better understanding of my parents.
    Tuesday, March 27, 2007

    VMWare Virtual Hard Disk Resize

    We use various VM templates which we sysprep after configuring. I have used both Virtual PC and VMWare Workstation. I have had far better results and experiences with VMWare workstation. Most of our VM templates were created using 8 GB virtual hard drives. Often we added a second drive to handle additional data and expand our capacity. Recently my work with SharePoint 2003 and MOSS 2007, I have had very little success keeping my primary drive to obediently remain a nice 7GB or below (to prevent swapping and such). I’ve even moved the virtual paging memory file to my secondary virtual drive, but in the end this has been frustrating and limited.

    In my frustrationfrustrated smiley, I sought out a solution on the web. I tried various methods for resize my existing virtual drive … some with more success than others. I am sharing the method which I found the easiest and least error prone for what I needed. Having said that, this may not work for you and you should backup your VM’s and data before attempting any of this. Try this at your own risk!

    I found a program called Virtual DiskManager from RDPSoftware which does that trick. This program is a front-end for VMWare’s vDiskManager. The VM templates were created in VMWare Workstation 4.5. Currently (at the time of this writing), I am using VMWare Workstation 5.5. The following are the steps I took to resize my virtual drive from 8 GB to 30 GB (you can easily resize it to any size you require as far as I can tell):

    Resizing the Virtual Hard Drive

    1. Opened the original VM Template in VMWare and upgraded it to a 5.5 VM.
    2. Create a full clone from the VM to eliminate any snapshots.
    3. Run Virtual DiskFactory (VMWare DiskManager would work too) and click on the Expand tab.Disk Factory image of the Expand interface
    4. Enter the desired target size (30 GB in my case).
    5. Browse and choose the Virtual Disk Drive to resize.
    6. Click on Expand Disk. Mine was disabled because I did step 5 and then step 4; Click on the browse button and close the dialog … it should enable the button.
    7. Go get coffee while you wait Smiley
    8. Once complete, you can use your newly resized VM Template. I have backed up these VM Templates so that I don’t have to perform these tasks again.
    Virtual Disk Resize from 8 GB to 30 GB
    Repartitioning to use the new space

    Now for the interesting part … if you open the VM (don’t do it yet) you will find that you have a 30 GB drive but you still have the 8 GB partition. In this example, I want to use all 30 GB but this poses a problem since the operating system is sitting on the primary partition; the same drive I want to repartition. My solution is to map this virtual drive as a secondary drive to a different temporary VM. I have created a separate temporary VM from the same VM template for repartitioning the resized virtual drives.

    1. Create another VM instance (preferably from the same VM Template) to use for repartitioning.
    2. Run Virtual DiskFactory (VMWare DiskManager would work too) and click on the Rename tab.
    3. Rename the newly resized virtual drive to make sure it won’t conflict with the virtual drive from our repartitioning VM. I renamed my virtual drive to “RenamedDisk.vmdk”.
    4. Run Virtual DiskFactory (VMWare DiskManager would work too) and click on the Convert tab. This step may not be necessary for you, you can try step #6. If you cannot add the drive, come back to this step.
    5. Convert your virtual drive to a Growable … catch up on some emails and the latest YouTube videos.
    6. Edit the Virtual Machine Settings and add the existing virtual drive (i.e. RenamedDisk.vmdk). Mine is now on IDE2.
    7. Start the VM.
    8. Go to the Administrative Tools and run the Computer Management console. Under Disk Management, make sure the second drive is recognized and has a drive letter. If not, add it and give it a drive letter.
    9. Using the diskpart.exe tool from Microsoft and the “How to use DiskPart.exe”. Force the partition to take the new partition size. This is from the How-To with a couple modifications:
      1. In a command prompt, run "diskpart.exe"
      2. Type "list volume" to display the existing volumes on the computer.
      3. Type "Select volume [volume number]" where volume number is number of the volume that you want to extend.
      4. Type "extend [size=n] [disk=n] [noerr]" to extend the volume. For example, in my case I used "extend" to use all the space.
      5. Once done, type "exit" to quit Diskpart.exe.
    10. Now you can restore the resized, extended ad renamed virtual disk to the original VM location. You can remove the old drive reference and add the new drive as is, or you can rename the disk to its original name. The VM should load just fine, and the drive should have taken its specified size.