Monday, September 7, 2009

Passed MS 70-630 Certification exam

I recently took the MS 70-630 Certification exam and passed it.

Here are some resources that I used to prepare for this exam:

Books
http://www.amazon.com/MCTS-Microsoft-Office-SharePoint-Configuration/dp/0470226633
http://www.microsoft.com/mspress/books/9537.aspx

Virtual labs
http://technet.microsoft.com/en-us/virtuallabs/bb499670.aspx
http://msdn.microsoft.com/en-us/cc707678.aspx

Topics covered in the exam
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-630#tab2

I found the "MCTS: Microsoft Office SharePoint Server 2007 Configuration Study Guide: Exam 70-630" particularly useful. It covers all the exam topics and provides "to-the-point" info. This is a "must have" book for preparing for this exam. Also, I would definitely recommend completing the BDC, Excel Services, and Enterprise Search Virtual Labs. In addition to the above resources, hands-on experience with MOSS 2007 is a necessity to pass this exam.

Tuesday, June 23, 2009

CAML Query Builder for SharePoint

Here is a link to a very useful CAML Query Builder tool for SharePoint Server 2007 and 2003:

CAML Query Builder

Tuesday, March 17, 2009

SharePoint and PowerShell

I have been hearing a lot about PowerShell these days and how it allows SharePoint Administrators to manage SharePoint outside of the conventional tools such as Central Administration and the powerful STSADM (command line) tool.

Here are some resources that I found online. They have great examples and show how to install and use PowerShell:

Windows Powershell Overview
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

Windows Powershell Scripting Resources
http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx


Windows Powershell Download Page
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx

All PowerShell articles by Karine Bosch
http://www.u2u.info/Blogs/karine/Lists/Categories/Category.aspx?Name=PowerShell

SharePoint PowerShell for Beginners by Karine Bosch
http://www.u2u.info/Blogs/karine/Lists/Posts/Post.aspx?ID=9

Bill Baer's PowerShell page
http://blogs.technet.com/wbaer/archive/2007/08/17/scripting-sharepoint-with-powershell.aspx

More Power"Shell" to you!

Monday, March 2, 2009

SharePoint site inaccessible after installing WSS 3.0 and MOSS 2007 Infrastructure Updates

We applied the WSS 3.0 and MOSS 2007 Infrastructure Updates (found here) recently on our SharePoint Server. The "SharePoint Productions and Technologies Configuration Wizard" which needs to be run after these Updates are installed did not complete successfully. It reported the error shown in the screen shot below:





At this point, the SharePoint Portal site was inaccessible. The Central Admin site was still accessible, but not the "user-facing" Portal site.

The SharePoint ULS log contained these errors:

02/27/2009 19:37:11 6 INF Resource retrieved id PostSetupConfigurationFailedEventLog is Configuration of SharePoint Products and Technologies failed. Configuration must be performed in order for this product to operate properly. To diagnose the problem, review the extended error information located at {0}, fix the problem, and run this configuration wizard again.

02/27/2009 19:37:11 6 ERR Configuration of SharePoint Products and Technologies failed. Configuration must be performed in order for this product to operate properly. To diagnose the problem, review the extended error information located at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS\PSCDiagnostics_2_27_2009_19_9_39_988_1181254095.log, fix the problem, and run this configuration wizard again.

02/27/2009 19:37:11 6 INF Resource retrieved id PostSetupConfigurationFailedUserMessage is Configuration of SharePoint Products and Technologies failed. Configuration must be performed before you use SharePoint Products and Technologies. For further details, see the diagnostic log located at {0} and the application event log.

02/27/2009 19:37:11 6 INF Sending a task driver stop event: TaskDriverEventArgs.EventCriticalityType error, TaskDriverEventArgs.EventType.stop, Configuration of SharePoint Products and Technologies failed. Configuration must be performed before you use SharePoint Products and Technologies. For further details, see the diagnostic log located at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS\PSCDiagnostics_2_27_2009_19_9_39_988_1181254095.log and the application event log.


The Applciation Event Log reported these errors:

Error 1

Failed to upgrade SharePoint Products and Technologies.
Failed to upgrade SharePoint Products and Technologies. Further information regarding this failure can be found at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS\Upgrade.log.
An exception of type Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException was thrown. Additional exception information: Failed to upgrade SharePoint Products and Technologies.
Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException: Exception of type 'Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException' was thrown.
at Microsoft.SharePoint.PostSetupConfiguration.UpgradeTask.Run()
at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()


Error 2

Event Type: Error
Event Source: Windows SharePoint Services 3
Event Category: (807)
Event ID: 5617
Date: 2/27/2009
Time: 7:58:51 PM
User: N/A
Computer: xxxxxxx

Description:
The schema version (3.1.3.0) of the database WSS_Portal on is not consistent with the expected database schema version (3.1.5.0) on . Connections to this database from this server have been blocked to avoid data loss. Upgrade the web front end or the content database to ensure that these versions match.

Error 2 in the Application Event Log gave me a fighting chance to fix this issue. I learned that I need to run the following stsadm command to upgrade the database schema version. So I ran the following command on the SharePoint Server:

stsadm –o upgrade –inplace –url http://your_site_url_here

This took a few minutes and then reported that the upgrade completed successfully.

I then re-ran the "SharePoint Products and Technologies Configuration Wizard" and this time it completed successfully...no errors. And I was able to access our Portal site again.

This particular stsadm upgrade command is a life-saver.

Be sure to include this awesome command in your SharePoint Survivor toolkit.

Sunday, February 15, 2009

To Dispose or Not To Dispose is the Question

Answer - Do not call the Dispose() method on SPWeb, if you obtain the SharePoint SPWeb using the GetContextWeb method as shown below. If you call Dispose() on the SPWeb object obtained this way, it may cause the SharePoint object model to behave unpredictably or fail. This is due to an internal list that is kept in the SPSite and SPWeb objects derived in this way. Internally, the object model enumerates over this list after page completion to dispose of the objects properly.

web = SPControl.GetContextWeb(Context)

Here is a link to a best practices article titled "Best Practices: Using Disposable Windows SharePoint Services Objects"

http://msdn.microsoft.com/en-us/library/aa973248.aspx

Microsoft has a tool called, SPDisposeCheck, that will evaluate compiled assemblies and identify improper usage of SharePoint objects (such as SPWeb and SPSite) in your code. These objects, if improperly used, will cause memory leaks.

Here are links relevant to SPDisposeCheck:

http://code.msdn.microsoft.com/SPDisposeCheck

http://blogs.msdn.com/sharepoint/archive/2009/01/29/spdisposecheck-released.aspx

http://blogs.msdn.com/rogerla/archive/2009/01/29/automate-sharepoint-dispose-code-reviews-with-spdisposecheck.aspx

Thursday, January 22, 2009

Bug in .NET FileUpload control

I discovered a bug in the .NET FileUpload control yesterday. I found that when I select a file and click on the Upload button, the "Click" event would fire TWICE. This issue was not easily identifiable until I added some additional code that called a SQL Job after the file was uploaded. I was getting the following SQL Server Agent Warning in the Event Viewer:

Exception information: Exception type: SqlException Exception message: SQLServerAgent Error: Request to run job (from User ) refused because the job already has a pending request from User .

I found out that the SQL Job was being called twice and therefore causing the above error. I then added lots of debugging statements in my code and found that "Click" event was firing two times. And I did not have any looping constructs in my code. As a result my file was being uploaded TWICE, and the SQL Job was also being called TWICE. Uploading the file twice was not an issue in my case, as the goal was to overwrite if the file exists already. But calling the SQL Job twice was an issue.

Turns out that you DON'T NEED to specify the OnClick event in the button code like this. Having the OnClick event in the button code will cause the event to fire twice.

<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />

To prevent the Click event from firing twice, DO NOT specify the OnClick event. The updated code is shown below. This will cause the Click event to fire once.

<asp:Button ID="btnUpload" runat="server" Text="Upload" />

Happy Uploading!