Welcome to TechNet Blogs Sign in | Join | Help

Hello,

now it’s time to play with SharePoint 2010. The product group release the Public Beta for WSS v4 called as SharePoint Foundation 2010 and Microsoft SharePoint Server 2010. Below you see the complete list of the whole SharePoint 2010 family.

The Public Beta has build level 14.0.4514.1004.

 

SharePoint Foundation 2010 (Windows SharePoint Services 2010 Beta)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=906c9f5a-6505-4eba-bf24-95e423ac1703

Microsoft SharePoint Server Enterprise 2010 Beta
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=77c30c6c-47fc-416d-88e7-8122534b3f37

Microsoft SharePoint 2010 Products (Beta) Management Pack
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c8a9d749-b7a8-412a-b2db-f3e464ed3fcf

Microsoft SharePoint Foundation 2010 (Beta) Management Pack
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=43d5ee9a-b9a6-441d-a35e-8a7b9b15e20c

Microsoft FAST Search Server 2010 for SharePoint Beta
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bcc37c48-11fb-40a2-8cfb-743de20260f6

Microsoft SharePoint Server for Internet Sites Enterprise 2010 Beta
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=580fc452-4948-44ab-9995-a0599271ad48

Microsoft SharePoint Designer 2010 Beta (64-bit)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=eeda9ab1-ac53-4870-9e1c-38940343d677

Microsoft SharePoint Designer 2010 Beta (32-bit)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=82df15bd-16a5-460e-a7c4-22599c669bb1

 

And for the ones who want to start with customizing SharePoint 2010, this help:

Visual Studio 2010 Tools for SharePoint Development (Download VS 2010 Beta2)
http://msdn.microsoft.com/en-us/magazine/ee309510.aspx


Enjoy it.

 

regards

Patrick

Hello,

last time i need to identify all Publishing Pages in a site collection and do some actions on all of them. Therefore i wrote a short tool for this.

To do this action you can normally use more than one way to reach the target. But in my case the site collection has a size of 60 GB and the code need to run over more then 26000 Pages.

So it makes a difference to have execution time of 8 hours or less than 2 hours. :-)

My first solution was to identify Publishing pages on their “Pages” Library. Such an implementation runs completely on WSS, so on Microsoft.SharePoint namespace and is not optimized.

using (SPSite site = new SPSite(url))
{ 
    foreach (SPWeb web in site.AllWebs)
    {
        try
        {
            SPList list = web.Lists["Pages"];
            foreach(SPListItem item in list)
            {
                // do my stuff on each Pages
                // ...
            }
        }
        catch (exception e)
        {}
    }
}

Disadvantage of using only WSS namespace

Multi-Languages SPWeb-object have difference Pages-Library names like (Pages, Seiten, Paginas, …), so your code need to be aware of each languages.

 

It’s more efficient to use the Publishing namespace: Microsoft.SharePoint.Publishing

using (SPSite site = new SPSite(url))
{ 
    foreach (SPWeb web in site.AllWebs)
    {
        try
        {  
            if (PublishingWeb.IsPublishingWeb(web))
            {
                PublishingWeb pubweb = PublishingWeb.GetPublishingWeb(web);
                PublishingPageCollection pages = pubweb.GetPublishingPages();
    
                foreach (PublishingPage page in pages)
                {
                    // do some stuff 
                    // ...
                }
            }
        }
        catch (exception e)
        {}
    }
}

the second solution is faster &  multilingual.

regards

Patrick

Hello again,

next question from TechEd:

How to enable Developer Dashboard and how to use this?

 

Enable / Disable over stsadm:

stsadm –o getproperty –pn developer-dashboard

get the current setting from developer dashboard (On |Off | OnDemand )
image

stsadm –o setproperty –pn developer-dashboard –pv “On”

set the setting from developer dashboard (On |Off | OnDemand)
image

Enable / Disable over powershell

Turn On: Set-SPFarm –DeveloperDashboardEnabled

Turn Off: Set-SPFarm –DeveloperDashboardEnabled $false

 

Mode of developer dashboard:

On – creates everytime the output at the end of the page content

Off – switch off developer dashboard and nothing is rendered

OnDemand – creates a DeveloperDashboard icon to make dashboard output visible as needed

image
example of an oob publishing page

 

Now with the next Page Load, the troubleshooting output is created:

DeveloperDashboard Icon is displayed at the upper right side

image(exist only in OnDemand-Mode)

image

 

 

How to use the Developer Dashboard?

Developer dashboard is designed to find performance bottleneck during the page load.

To get an overview about the whole page load performance take a look in the upper right side  on category “web server”. On my test environment the total time of page rendering  is 438.79 milli seconds.

image

At the left side you will see the ASP.NET rendering process of all involved controls with their time to render. Here is makes sense to focus only on long running controls.

image
In this case the longest operation is “EnsureListItemsData with 293,34 ms)

Because sharepoint controls will request data from database, the developer dashboard lists also corresponding sql requests with their execution time.

image

If you click on the sql command than a popup windows display more details. The long running sql request on my test environment is “Declare @…”

image
During this request i see the complete SQL query and the corresponding call stack to identify the correct control. Additionally at the end we see the IO Stats in case of a slow running SQL server based on too many IO-operations. 

One additional category exist for webparts to identify the slow running ones. In this case the ListView-Webaprt of the “Shared Document Library” is the slowest one.

image

Regards

Patrick

Hello,

today is my first day after TechEd Berlin and here you will see the answer of the most common question: What’s the Top-10 Features in SharePoint 2010?

My Answer is now:
Nice Videos from Richard Riley & Arpan Shah – SharePoint 2010 Top Features for ITPro (Duration 30 min)
Topics: SharePoint – Best Practise Analyzer, Performance Troubleshooting in 2010, Large Lists, using Health Analyzer, Using new UI, Upgrade Process, using Powershell, …

Enjoy it.

Regards

Patrick

Hello @all,

today i play a bit with our new powershell cmdlets in O14.

1) how to get a list of all available cmtlets?
Answer: get-help *
(i prefer to write the output into a text file by: get-help * > c:\o14_pws_cmdlet.txt)

As next step how to create new contentdbs, attach, detach and remove them

2) How to create new contentdb for a web application:
Answer: New-SPContentDatabase

image

e.g: New-SPContentDataBase –webapplication http://o14-4514 –Name o14_4514_WSS_Content_3

image

3) enumerate all contentdbs of one WebApplication:
Answer: GET-SPContentDatabase –webapplication http://o14-4514

image

4) how to detach a contentdb?
Answer: Dismount-SPcontentdatabase –identity <GUID>

image

Note: the contentdb exist still in SQL server.
image

5) how to attach a contentdb?
Answer: mount-SPcontentdatabase –name o14_4514_WSS_content_3 –webapplication <url>

image

The next command is new, please be careful with
6) how to delete a database on SQL server?
Answer: Remove-SPcontentdatabase –identify <guid>

image

image

Now , take a  look on SQL Server: *RIP for “o14_4514_WSS_content_3”, it’s deleted on SQL server
image

Regards

Patrick

Hello @all,

end of last week the SharePoint conference in las  vegas ends. One of the speaker was Arpan Shah and he publish his SharePoint 2010 powerpoint slides on his blog.

Playing with SharePoint 2010 is great and here come some more details why:

Upgrading from MOSS2007 to Sharepoint2010 prevent you for upgrade errors:
- using stsadm –o preupgradecheck

image
(Note: detect SiteOrphans, Content Orphans, Invalid Hostnames, …)

Visual Upgrade: During the upgrade you can decide between 2 UI Types of SharePoint 2010 (MOSS 2007 Style & SharePoint 2010 Style)

image 
Tip: upgrade first your content before upgrading UI. Use first MOSS 2007 UI style before all Users are ready for 2010 Style.

For Developer: using SharePoint feature “Developer Dashboard” to check custom code performance.

image

Additionally my colleague Steve Chen creates a good summary of available SharePoint 2010 content in this blog.

 

regards

Patrick

Hello,

today it's time to focus a bit into a topic scalability. To make your content available it's nice to use content query webparts or custom webparts which create a CAML-Query to display specific content like:

- display content from many Lists of a specific type over the SiteCollection

This can be done very easy with a CAML-Query objects like SPQuery or SPSiteDataQuery.  It's a very fast way to get in contact with all requested items and it's better then iterations. But what happens if your CAML-Query runs over larger content/Scopes? 

SPQuery - Scope - represent a Query in a ListView -> soft limit for Performance= 2000 Items per list view, so you should be aware of performance issues in case your query collects more then 2000 items as result.

SPSiteDataQuery - Scope - perform across multiple lists in mutiple web sites on the same site collection -> soft limit for Performance=2000 Items per list view as result & think about the content source on which in query will be executed! (because the Scope is a Site Collection!)

Why it's important to check the content source size of the SPSiteDataQuery?

A site collection is bind to one contentdb. MS recommendation is to have not more then 100 GB in one contentdb because of backup/restore time. Normally a developer of custom code is not aware of performance in case the content is very small and a CAML query is the best way to collect data. Day per Day and many user can create much more Data (e.g. Subsites, Lists, ListItems) and it comes the day that you will have a large content size inside your site collection.

At the end of the Scenario / Information design it looks like this:

1 site collection = in one Contentdb
   |
  200 subsites (recommendation not more then 2000 Subsites per SPWeb)
              |
           10 List on each subsite
                   |
               1 of these list exist with a our suffice templateID (e.g. 115 - XML Form library) 

You should see that in the beginning your query (SPSiteDataQuery) run in a empty site collection much fast then over a full filled site collection.

Back to this information design:
What's do the SPSiteDataQuery in case you want to search over the whole site collection inside all Lists with template ID 115?

The CAML query will be transformed to a SQL query by SharePoint-API. Using SQL profiler Trace you are able to see the query. The created sql query looks like this structure:

exec sp_executesql N'
       Declare @temporaryTable(... some coumns, ... ,... )
              
       -- insert into temporary table (this is done for each of the 200 Form sites that are children of the site collection root site)
       insert into @temporaryTable Select ... ,... , ...

     -- Select statement to retrieve form column values that were specified in CAML query
      Select UserData.[column], ... ,.... from ... inner join .... where .... order by ...

    -- Select output of tempTable
    Select [column1],[...],[columnsX] from @temporaryTable
'

The SQL query runs over each subweb and on each List inside your site collection. In case you have a site collection with a size of 1, 5, 10 or 50 GB then the execution time of the SQL query takes seconds until minutes.

With each second the user need to wait on the content, you will lose user experience.

To avoid such long running query which decrease the usability, try to split such a long query into smaller parts or let a custom timer job run the query.

How the timer job can  help here?

  1. create a timer job and a hidden list
  2. let the timer job execute such a big query every 10 minutes or what time you want
  3. timer job: store the result of the big query into the hidden list
  4. to render the content for a user, you should be able to use now the query result from that hidden list. This increase the usability because the hidden list has already the content you need.

I hope this help you for further performance issue in long running queries.

regards

Patrick

Hello @all,

it's every time good to see large SharePoint environments where every feature inside the farm was activates and each of them is completely used, Languages Packs were installed and so on...

Such a farm blow up with the time but unfortunately the farm documentation increase with a documentation gaps.

Such a documentation is necessary in case you need to upgrade your farm to the next version. losing such a info will bring you in trouble for the many scenarios like:

  • disaster recovery
  • Patching
  • Upgrades
  • ...

To fill the gap, here comes my favorites:

1. In which architecture SharePoint is installed

Answer: check registry,

32bit:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS\InstalledProducts\90120000-110D-0000-0000-0000000FF1CE

64bit:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS\InstalledProducts\90120000-110D-0000-1000-0000000FF1CE

2. In which language SharePoint was installed?

Answer: check registry

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS\ServerLanguage\<LCID>

here you should see only one LCID

3. Which SharePoint language packs were installed?

Answer: check registry

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS\InstalledLanguages\<LCID>

here you will see something like this:

LCID - Reg_SZ - {language pack build level}

1033 - Reg_SZ - 12.0.4518.1000

1031 - Reg_SZ - 12.0.4518.1000

...

or

LCID - Reg_SZ - {language pack build level}

1033 - Reg_SZ - 12.0.6219.1000

1031 - Reg_SZ - 12.0.6219.1000

...

Note: It's important to have all language packs on the same build level!

4. Which server role is installed on each the server?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\WSS\ServerRole

Value = {Application || WebFrontEnd ||Standalone}

To get an overview about all Microsoft LCIDs you can use this article: Local ID (LCID) chart

Here are my favorites:

Locale description

Short string

Hexadecimal value

Decimal value

English - United States

en-us

0x0409

1033

French - France

fr-fr

0x040C

1036

German - Germany

de-de

0x0407

1031

Spanish - Spain (Traditional)

es-es

0x040A

1034

Italian - Italy

it-it

0x0410

1040

5. Which Custom Code was installed on the farm?

Answer:

a) Get All WSP-Files from FARM using SharePoint Farm Solution Extractor 

b) Check if features were installed without wsp files!

using WssAnalyzeFeatures to get a list of all featureID's inside the farm. Then you need to compare the featureID's with the 12-Hive-Features-folder. Here you should find for each featureID the feature binaries.

c) In case you do not have the feature binary any more it's important to remove the feature completely from SharePoint using WssRemoveFeatureFromSite.

regards

Patrick

[update: 02.10.2009] the product group release a new version of AugustCU with build level 12.0000.6514.5004 

Hello @all,

today we could investigate an important issue with upgrade to AugustCU. (this happens only with AugustCU build level: 12.0000.6514.5002)

Normally it's every time a good idea to detach the contentdb's before installing the patches/service packs. Reattach them after the update of the Farm was successful.

  1. detach contentdb
  2. install wss / moss patches
  3. run psconfig / configuration wizard
  4. reattach contentdb back to sharepoint

On upgrading to AugustCU you can see something like this on point 4.

stsadm -o addcontentdb

Callstack from ULS logs:

General                        72ju High     stsadm: Index was outside the bounds of the array. Callstack:    at System.Data.SqlClient.SqlDataReader.ReadColumnHeader(Int32 i)     at System.Data.SqlClient.SqlDataReader.IsDBNull(Int32 i)     at Microsoft.SharePoint.Administration.SPContentDatabase.GetDatabaseInformation(String name)     at Microsoft.SharePoint.Administration.SPContentDatabase.get_DatabaseId()     at Microsoft.SharePoint.Administration.SPContentDatabaseCollection.UseDatabaseId(SPFarm farm, SPContentDatabase db)     at Microsoft.SharePoint.Administration.SPContentDatabaseCollection.Add(Guid newDatabaseId, String strDatabaseServer, String strDatabaseName, String strDatabaseUsername, String strDatabasePassword, Int32 warningSiteCount, Int32 maximumSiteCount, Int32 status, Boolean provision, Boolean allowUpgrade, Boolean fl...

To avoid this problem it requires an other migration path:

    1. detach contentdb
    2. install wss / moss patches
    3. run psconfig / configuration wizard
    4. reattach contentdb back to sharepoint

If it's not possible to do this on production then you can also upgrade the contentdb over a TEST-Farm to upgrade the content database schema to augustCU. Then it looks like:

    1. detach contentdb
    2. install wss / moss patches on production farm
    3. run psconfig / configuration wizard on production farm
    4. attach contentdb to TEST-FARM
    5. upgrade TEST-FARM
      1. install WSS / MOSS augustCU
      2. run psconfig
    6. if upgrade of TEST-FARM runs successful then
      1. detach contentdb from TEST-FARM
      2. attach contentdb to product-FARM

kind regards

Patrick

[update 02.10.2009] - AugustCU is back online. the new Build Level is 12.0000.6514.5004

[update 17,09,2009] - AugustCU was pulled out of a regressions.

Hello @all,

last night the product group completed the creation and tests of the august CU ueber packages of WSS and MOSS and publish the packages.

KB Download Build number
973400 WSS ueber package 12.0000.6514.5004
973399 MOSS ueber package 12.0000.6514.5004

Inside the AugustCU we have a new stsadm command: MigrateGroup. We all know the nice feature to migrate users using:

stsadm.exe -o migrateuser -oldlogin <NTSHAREPOINT\Jsmith> -newlogin <NTSHAREPOINT\bway> -ignoresidhistory

In the past it was not possible to migrate AD groups, now the time is ripe to migrate AD groups too:

stsadm.exe -o migrategroup -oldlogin <Domain1\groupA> -newlogin <Domain1\GroupB> -ignoresidhistory

kind regards

Patrick

Hello @all,

today I want to publish my tool on MSDN Code Gallery. In the past I found some SharePoint Server were nobody has the customization stored in a separate Storage.

This tool "SharePoint Farm Solution Extractor" will extract/download the installed solution as wsp file from SharePoint Farm to a specified path. In farm Migration scenarios it's very easy to build a duplicate farm, like for testing, etc..

Usage

SharePointFarmSolutionExtractor.exe -list
(This command list all WSP-Solution installed on the SharePoint Farm)

SharePointFarmSolutionExtractor.exe -extractAll c:\SharePointSolutions
(This command download all WSP-Solutions installed on the SharePoint Farm to the specified path)

SharePointFarmSolutionExtractor.exe -extractById c:\SharePointSolutions <GUID of the Solution>
(This command will download all WSP-Solution with matching the SolutionGUID to the secified path)

SharePointFarmSolutionExtractor.exe -extractByName
c:\SharePointSolutions <Name of the Solution>
(This command will download all WSP-Solution with matching the SolutionName to the secified path)

Requirements:
- .NET 2.0
- Microsoft.SharePoint.dll

regards

Patrick

Hello @all,

this week the SharePoint product group release the JuneCU for WSSv3 and MOSS2007 with Build number of the 6510.

WSS v3
- KB 971538
- KB 970946

MOSS 2007
- KB 970948
- KB 972569 
- KB 970947 (language specific)
- KB 972562 (language specific)
- KB 972564 

Currently the ueber package is not released.

regards

Patrick

Hello @all,

may you can remember the SharePoint Side Effect in installing Service Pack 2? If not here is my last post: MOSS 2007 Service Pack 2 side effect

We have a Manual Workaround: KB 971620 and now the product group release a Hotfix to solve the issue:

KB 971620 - When you install the 2007 Microsoft Office servers Service Pack 2, the product expiration date is activated incorrectly

And here is the direct download link:

32-bit version: Download

64-bit version: Download

Regards

Patrick

Hello @all,

the installation of Office Server Service Pack 2 (incl. Office SharePoint Server 2007, Project Server 2007, Form Server 2007, Search Server 2008 and Search Server 2008 Express) has a side effect.

The installation of SP2 properly activate the licence expiration date. To resolve the issue you need to reenter the licence information on the "Central Administration / Operation / Convert License Type".

What does it means for your farm?
A trial version runs 180 days before you need to add the licence key. An Enterprise farm with properly activate the licence expiration date will run 180 day. In case you did not reenter the licence key in the 180 days limit (expiration date) then the SharePoint farm is down/inaccessible for users. The content in the farm is not effected.

Additionally we are trying to fix this problem in the next release builds of Service Pack2.

Windows SharePoint Services 3.0 SP2 is not affected on the problem.

Original link to product group post: Link

Manual Workaround: KB 971620

Regards

Patrick

[UPDATE] - Hotfix available for SP2 Side effect: read more...

Hello @all,

today my colleague Steve Chen solve an interesting issue. He had the problem that the SQL script from my blog post "how to defrag sharepoint databases" fails with error message:

Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.

Additionally, information that is similar to the following may appear in the SQL Server 2005 Exception.log file:

<date> <time> spid 56 Exception 0xc0000005 EXCEPTION_ACCESS_VIOLATION reading address 00000020 at 0x0110B72B 2.

Normally the script runs successful and it was crazy to see this error message, BUT we are living in the support and everything has a cause and Steve found it:

It's written in KB 910416 - Error message when you run certain queries or certain stored procedures in SQL Server 2005: "A severe error occurred on the current command"

In this case problem was that the SQL server was on patch level SQL SP2 with an previous Hotfix (Patch level smaller then SP2-Level) installed. So the pre-SP2 Hotfix overwrites SP2 files that cause the error.

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2005. Installing SP3 (KB 955706) for SQL 2005 and after that, the query to defrag databases runs successful.

regards

Patrick

More Posts Next page »
 
Page view tracker