Jesper M. Christensen

SharePoint and Security

Category Archives: Microsoft Sharepoint

SharePoint 2013 limits


During some reading up on the SharePoint 2013 exams I created a little remember-diagram for myself to help me memorize the limits/boundaries and recommendations of the different SharePoint elements.

SharePoint 2013 limits

Optimizing SQL Server performance for Microsoft SharePoint 2010/2013


This is a duplicate post from my SharePoint Community blog: http://sharepoint-community.net/profiles/blogs/optimizing-sql-server-performance-for-microsoft-sharepoint-2010

– | –

During my time as a consultant I see a lot of environments. More and more I have been involved in setting up the SQL Servers for SharePoint and I would like to share this information with you all.

Please consult a SQL Server Database Administrator and a SharePoint Administrator and discuss the settings before making any adjustments in your environment(s) – I can only give advice and not be responsible for any wrong configurations – remember that every environment is different!

90% of all data of a Microsoft SharePoint 2010/2013 farm is placed in the SQL Server databases, and every transaction from the users, all SharePoint services and SharePoint timer-jobs are working with these databases at the same time. SharePoint is depends on the performance of the web frontend servers and SQL servers. If the users should have the best experience of SharePoint, you need to optimize the resources that are used by SharePoint.

On the web frontend servers the Internet Information Server (IIS) delivers the content to the users. CPU and especially memory is important here as SharePoint uses the server memory to cache the information requested by the users. Usually this is not an issue as IT administrators can monitor these resources and do as a normal performance evaluation of Microsoft servers.

Fewer IT administrators or Database Administrators has knowledge of how SharePoint use the SQL Server and which components to optimize for delivering the best SharePoint end user experience. This article is about giving a little insight on this subject.

Physical or virtual servers?
Running the Windows Server and SQL Server directly on the hardware itself will give you the optimal performance. You will not have the advantages of the virtual environments such as failover, backup/restore and flexibility for the IT administrators. In my experiences a good virtual setup is as good as a physical one – and is the most chosen of my customers.

The SQL Server instance
On the SQL server we have some general best practices to follow and this means that the database administrators must change some default values to make the SQL server, and thereby also the applications, to perform better. SQL servers that host SharePoint databases are no exception, but certain settings should be changed to give even more power to the SharePoint servers. These settings can also have influence on other databases in the same SQL instance so it is advised to have a separate SQL Server for SharePoint – or at least a separate instance on an existing SQL Server.

If you choose to run multiple instances of SQL Server on a single Windows Server you need to control your CPU usage, minimum + maximum memory usage and database placement on disks. If the load on the databases and the SharePoint servers is small to medium you will achieve okay performance. But still, try to separate the SQL Servers to multiple Windows Servers as the used network bandwidth also has an effect on performance.

Memory is also used by the SQL Server for caching data requested by the applications. Therefore you should have plenty memory allocated to the SQL Server for best performance. It can be hard to evaluate how much memory is required as the SQL Server adjust the memory used depending on how much memory is available.

The CPU is used to perform calculations, queries and sorting the data. CPU usage can easily be monitored and evaluated if more CPU power is needed.  Multiple processors with multiple cores is highly recommended as the SQL Server can take advantage of these.

The default file location of database and log should be set according to your needs (see the section Disk and file locations)

SQL Server version
The SQL Server should be a SQL Server 2008 (64 bit) with SP1 and CU 5 (or later version) installed even though former versions this edition of SQL Server is optimized for 64-bit and Microsoft SharePoint 2010/2013 can take advantage of the new functionality giving you’re a better overall performance. SharePoint will detect the SQL Server version and adjust the queries accordingly to the features available.

Memory limits
Add as much memory as possible on the Windows Server – the SQL Server will automatically allocate and cache based on the amount of RAM for the SQL Server instance.

The SQL Server will control the memory usage according to predefined rules in the SQL Server dynamic memory management.

If you only have one SQL Server instance on the server there’s not need to do memory adjustments!

If other applications or instances of SQL Server run on the same Windows Operating system then you need to adjust every SQL Server instance memory limits. By default the SQL Server dynamic memory management will use all available RAM on the operating system and release memory of this is required. Microsoft states this at http://msdn.microsoft.com/en-us/library/ms177455(v=sql.105).aspx

The minimum memory limit is set to a value that the SQL Server instance cannot go below if it passes this limit. This value should be set to avoid the server to avoid unnecessary release of memory resources that the serve

The maximum memory limit defines the maximum memory the SQL Server instance is allowed to use. If you have multiple instances on the same Windows Server then evaluate how much each SQL Server instance should be allowed to use and how much should be available to the operating system and other programs.

Disk and file locations
You have the possibility to set the default locations for the database and the database log files for each SQL Server instance on the Windows Server. It is advised to use separate physical disks as the requirements for database files and log files are different. Performance wise you should also evaluate the load of the different databases as some might require more resources than others. Log files requires good write performance and the database files most read and caching performance

It is advised to place non-SharePoint databases on separate physical drives because SharePoint is very database transaction intensive.

The optimal disk cluster size (is set during formatting the drive) is 64k. Using this recommended cluster size the server reads 64k at the time and can deliver larger chucks of data to the SQL Server.

For the best performance you can add additional transaction log files to separate disks (not disks you are using for database files) Create same sized files on separate disks for tempdb, Content and Search databases. Use the same number of files as physical processor socket on your SQL Server to take advantage of the CPU’s (e.g. 2 data files on a 2 socket machine, 4 data files on a 4 socket machine).

System databases and SharePoint
The Model database, “Model”, is a system database that defines how a new database is default created by administrators and SharePoint. Set the default size on the Model-database to what size the future databases should be. If is advised to set this to what size each of your content database is believed to be in 1½-2 years. You should set the size to one value before the SharePoint installation and change this to your future default content database size afterwards.

The default created size could differ from what settings you want on non-SharePoint databases and therefore it is advised to have a separate SQL Server or SQL Server instance for the SharePoint databases.

In my experience the growth rate is not adjusted on new databases with these are created by SharePoint – so please check the database file growth periodically (you can use my remote Windows PowerShell script which can be found here: Checking SQL database db and log file sizes and growth with PowerSh…)

The Temp database, “Tempdb”, is also a system database and this is used in a special way by SharePoint. It is used only as a working area and do not contain data that is important. At every SQL Server reboot the Temp database is rebuild. We should set the recovery mode to SIMPLE as we do not need to recover any information in the tempdb database.

The Temp database should be placed on a very fast drive for best performance on sorting and filtering operations. Microsoft SharePoint views are never faster than the “tempdb” can deliver data.

Database settings
Microsoft SharePoint use different databases for different purposes. Some contain configuration data and others the actual content. Most databases are created during the installation of the SharePoint farm so you must have your SQL Server settings correct before installing the product if you want to avoid performance issues or reconfiguration.

To make sure that putting content in your SharePoint databases is fast I recommend you to pre-grow these. Set the Database and log-sizes to what you expect within a year. This will also help reducing fragmentation and performance impact.

You should evaluate the usage of every database and adjust the

  • Database and log files
    • Location (fast separate drives)
    • Size (~ what you expect within 1 years)
    • Growth (~ 25% of the db size)
    • Recovery Model (FULL recommended)
    • Auto-shink -> set to the default: OFF

You should set the recovery mode to FULL on every SharePoint database to make sure that your data can be restored properly if a disaster happens – remember to do database and log backups to avoid running out of disk space. Also consult a SQL Server Administrator to ensure this is set up correctly – and check the backups with test-restore so you know that everything is good (and the restore time is okay with you).

It is advised that the Search databases are placed on even different physical disks or even a separate SQL Server, as the crawler- and index service is performing many transactions during a crawl and index propagation.

A small side-note: If you database administrators creates new databases for you, they must create these with a collation of Latin1_General_CL_AS_KS_WS. During the installation of the SQL instance they could set this to the default for new databases. If databases is created from the SharePoint user Interface, this value is set automatically.

Shrinking the logfiles – when?
The database transaction logfiles seems to keep on growing – especially if you do not back these up. This is because every transaction is put in these and not “flushed” until you do a backup. When you perform a backup the file gets “empty” and is ready for new transactions. If your transaction logfiles is too big then you need to shrink these – but please leave some empty space and don’t shrink to the minimum size. When a file needs to grow it has a large impact on performance.

Network
As all data is sent over the network the bandwidth between all servers must be optimal. A 1Gbit network connection on the servers is advised at all times. Also be sure that devices can handle the load – such as network routers, switches and firewalls.

Key takeaways
Here are some key adjustments from this article:

I made a little graphical overview also:

Optimizing SQL Server Performance for Microsoft SharePoint 2010-2013

What I did not cover
Adjusting the SQL Server for optimal performance is not easy and I can only give you my experiences. There are a lot of possibilities and scenarios that I did not cover here and some of these are

  • SAN optimization
  • Database partitioning

Please contact me or reply to this article if you have comments, suggestions or any other thoughs.

Set SharePoint 2013 Navigation Settings from PowerShell


Hi everyone,

I just got a large SharePoint 2013 site to set up and wanted to set all the sites navigation settings through Windows PowerShell.

It seems to be quite easy, but when I set the “Current Navigation” settings to Structured the UI (user interface) settings page do not show these settings – it Works though, but is a bit confusing. Actually nothing is checked in the boxes, but for now I am good – hope I found out why this is happening. Anyone knows this?

navigationsettings

I use the script below to connect to a site Collection, set this navigation settings and afterwards all sub sites. This script do not handle Metadata Navigation.

################################################################
#
# Powershell script by Jesper M. Christensen
# Blog: http://JesperMChristensen.wordpress.com
#
# Set the SharePoint 2010 and 2013 Navigation Settings on Sites
#
# SetupNavigationSettings.ps1 version 1.0 - Edited January 2013
#
################################################################
Write-Host -ForegroundColor White "Set the SharePoint 2010 and 2013 Navigation Settings on Sites"

#Set the Site Collection
$SPSite = Get-SPSite -Identity "http://extrico-demo2.dev.extrico.local/sites/demo1"

#Go through each site in the Site Collection
foreach ($SPWeb in $SPSite.AllWebs)
{
if ($SPWeb.IsRootWeb)
{#Process the root web
Write-Host -ForegroundColor Gray $SPWeb.Url":" -NoNewLine
#Save the AllowUnsafeUpdatesStatus property value
$AllowUnsafeUpdatesStatus = $SPWeb.AllowUnsafeUpdates
$SPWeb.AllowUnsafeUpdates = $true

#Set the Publishing Web
$SPPubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($SPWeb)

#Global Navigation Settings
$SPPubWeb.Navigation.InheritGlobal = $false
$SPPubWeb.Navigation.GlobalIncludeSubSites = $true
$SPPubWeb.Navigation.GlobalIncludePages = $false
$SPPubWeb.Navigation.GlobalDynamicChildLimit = 21

#Current Navigation Settings
#
# -Display the same navigation items as the parent site: InheritCurrent = $true and ShowSiblings = $false
# -Structural Navigation: Display the current site, the navigation items below the current site, and the current site's siblings: InheritCurrent = $false and ShowSiblings = $true
# -Structural Navigation: Display only the navigation items below the current site: InheritCurrent = $false and ShowSiblings = $false
#
$SPPubWeb.Navigation.InheritCurrent = $false
$SPPubWeb.Navigation.ShowSiblings = $true
$SPPubWeb.Navigation.CurrentIncludeSubSites = $false
$SPPubWeb.Navigation.CurrentIncludePages = $false
$SPPubWeb.Navigation.CurrentDynamicChildLimit = 21

# Sorting
$SPPubWeb.Navigation.OrderingMethod = "Manual" # "Automatic" "ManualWithAutomaticPageSorting"
$SPPubWeb.Navigation.AutomaticSortingMethod = "Title" # "CreatedDate" "CreatedDate" "LastModifiedDate"
$SPPubWeb.Navigation.SortAscending = $true

#Update the Publishing Web Navigation Settings
$SPPubWeb.Update()
Write-Host -ForegroundColor Green " Done"
}
else
{#Process all sub-webs to the root web

Write-Host -ForegroundColor Gray $SPWeb.Url":" -NoNewLine

#Save the AllowUnsafeUpdatesStatus property value
$AllowUnsafeUpdatesStatus = $SPWeb.AllowUnsafeUpdates
$SPWeb.AllowUnsafeUpdates = $true

#Set the Publishing Web
$SPPubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($SPWeb)

#Global Navigation Settings
$SPPubWeb.Navigation.InheritGlobal = $true
$SPPubWeb.Navigation.GlobalIncludeSubSites = $true
$SPPubWeb.Navigation.GlobalIncludePages = $false
$SPPubWeb.Navigation.GlobalDynamicChildLimit = 21

#Current Navigation Settings
$SPPubWeb.Navigation.InheritCurrent = $false
$SPPubWeb.Navigation.ShowSiblings = $true
$SPPubWeb.Navigation.CurrentIncludeSubSites = $false
$SPPubWeb.Navigation.CurrentIncludePages = $false
$SPPubWeb.Navigation.CurrentDynamicChildLimit = 21

# Sorting
$SPPubWeb.Navigation.OrderingMethod = "Manual" # "Automatic" "ManualWithAutomaticPageSorting"
$SPPubWeb.Navigation.AutomaticSortingMethod = "Title" # "CreatedDate" "CreatedDate" "LastModifiedDate"
$SPPubWeb.Navigation.SortAscending = $true

#Update the Publishing Web Navigation Settings
$SPPubWeb.Update()
Write-Host -ForegroundColor Green " Done"
}

#Revert the AllowUnsafeUpdatesStatus property value
$SPWeb.AllowUnsafeUpdates = $AllowUnsafeUpdatesStatus

#Dispose the SPWeb object
$SPWeb.Dispose()
}

#Dispose the SPSite object
$SPSite.Dispose()

Windows Azure – Can we use it for SharePoint now?


I head the great news on the Microsoft TechEd 2012 Europe conference: You can even install Microsoft SharePoint on the Windows Azure virtual machines!

I see endless possibilities in Azure for testing purposes, data and active directory redundancy, external access and extranets and the list just continues.

New functionality in Windows Azure

The new functionality that had been introduced in Windows Azure which makes it possible to work with:

  • Virtual Machines (Windows & Linux from templates or own vhd-images)
  • Virtual Networks (separation of networks in Windows Azure)
  • Site-to-Site VPN connection (e.g. to your own LAN)
  • …much more

With these new features we are in fact able to run almost any type of program, server or service in the cloud – including Microsoft SharePoint.




Fig. 1 – Diagram of Windows Azure and the internal network connection

If you already have Microsoft Hyper-V machines (VHD-files) the good news is that these are fully compatible with Windows Azure. You can actually just copy the files between your environment and Windows Azure as you please. For this process please check out my blogpost “Using CloudXplorer to access Windows Azure Storage“.

I was determined to check this out right away and started my setup of test environment. This included installing a new domain controller, SQL Server and SharePoint farm in the cloud. I would connect this Windows Azure environment to my internal network with the new site-to-site VPN functionality – even though I had SonicWALL as firewall. At present time Windows Azure only supports (or actually provides the configuration details) to Cisco and Juniper VPN devices.

Getting started

Signing up for a Windows Azure account is quite easy – just enroll on http://www.WindowsAzure.com

The pricing on Windows Azure services is in my opinion very fair as you only pay for what you use – space, usage and time. The price calculator is easy to use and gives you an exact overview of your spending.

Fig. 2 – Example of the monthly fee for 24 hours Windows Azure Windows Server

If you are connected to a Microsoft Partner or own a MSDN subscription you are entitled to activate some “free resources”. Read more on the Pricing, Member offers section on the website.

Preparing the environment for SharePoint

This blogpost provides you with a quick introduction of Windows Azure and do not go into much detail. You can read more information about Windows Azure and the services on the Microsoft Windows Azure website

I will post installation guides for the following setup soon:

This will provide you with an environment that is ready for a Microsoft SharePoint installation. More guides will follow on installation and access configuration to the SharePoint sites.

I will update the above headlines with the links to these blogposts.

Considerations regarding your data

Microsoft will keep the virtual machines and data online according to the service you buy. As default the data is stored on three physical drives but it is possible to buy local and geo redundant storage locations.

Please make sure you also make a backup/restore plan for your data as Microsoft only provides Infrastructure as a Service (IaaS). Of course you also need to have the licensing in place for the products you run.

Also check the support possibilities and make sure all the above matches your needs.

Bulk change list item metadata in SharePoint 2010


Sometimes we need to change one or multiple items in a SharePoint list, and this PowerShell script helps us accomplish this task very easy:

Change a single item (with a known ID)

$SPAssignment = Start-SPAssignment
$SPWeb = Get-SPWeb http://intranet.domain.local/sitename -AssignmentCollection $spAssignment
$SPList = $SPWeb.Lists[“Contacts”]
$SPItem = $SPList.GetItemById(“37”)
$SPItem[“Company”] = “New value”
$SPItem.Update()
Stop-SPAssignment $SPAssignment

 

Change multiple items (with a known field value)

$SPAssignment = Start-SPAssignment
$SPWeb = Get-SPWeb http://intranet.domain.local/sitename -AssignmentCollection $spAssignment
$SPList = $SPWeb.Lists[“Company”]
$SPItems = $SPList.Items | Where { $_[“Company”] -eq “Old value” }
foreach($item in $SPItems){
$item[“Konsulent”] = “New value”
$item.Update()
}
Stop-SPAssignment $SPAssignment


 

A late night installing PowerPivot on an existing SharePoint 2010 Farm


“Okay, this feature should be a quick installation and afterwards I want to test my new ideas…..”

-like many products out there today this was no walk in the park either. 8 hours of troubleshooting, reading TechNet articles and blogs I finally nailed it!

I found a GREAT installation guide on installing PowerPivot for SharePoint 2010 that Cornelius J. van Dyk wrote, and I came 98% of the way.

Still I need 100% to have a working installation J

The error I constantly got was: The given key was not present in the dictionary

Digging through the log files I found an error – not a SQL Server installation issue but a result of the SharePoint Product and Services Configuration part of the installation (see the full error log last the end of the blog post):

2011-12-28 22:37:05 Slp: Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException: The given key was not present in the dictionary. ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. 
2011-12-28 22:37:05 Slp: at System.ThrowHelper.ThrowKeyNotFoundException() 
2011-12-28 22:37:05 Slp: at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
2011-12-28 22:37:05 Slp: at Microsoft.SharePoint.Utilities.SPUtility.GetUserPropertyFromAD(SPWebApplication webApplicaiton, String loginName, String propertyName) 

-so I checked the permissions in Active Directory and found I have missed setting the READ flag on the SPServices and SPFarmAdmin accounts.

I followed this guide and if someone has a better solution, please advise me J

  1. Open up “Active Directory Users and Computer”
  2. Select “Advanced features” from the “View” menu
  3. Right-click the relevant account and select “Properties”
  4. Select the “Securities” Tab
  5. Scroll down and select “Authenticated users”
  6. Allow “Read” permissions
  7. Hit Ok

Afterwards I installed the PowerPivot again and it completed successfully.

Thanks again Cornelius – you lead me almost there and saved a good night’s sleep

Full error log:

2011-12-28 22:37:03 AS: Performing configuration task 3 of 3 
2011-12-28 22:37:03 AS: Finalizing the SharePoint Products configuration... 
2011-12-28 22:37:03 AS: 
2011-12-28 22:37:03 AS: Successfully completed the SharePoint Products configuration. 
2011-12-28 22:37:03 AS: 
2011-12-28 22:37:03 AS: Total number of configuration settings run: 3 
2011-12-28 22:37:03 AS: Total number of successful configuration settings: 3 
2011-12-28 22:37:03 AS: Total number of unsuccessful configuration settings: 0 
2011-12-28 22:37:03 AS: Successfully stopped the configuration of SharePoint Products. 
2011-12-28 22:37:03 AS: Configuration of the SharePoint Products has succeeded. 
2011-12-28 22:37:03 AS: Running function ConfigExistingFarmFirstASserverUseSharedService(). 
2011-12-28 22:37:03 AS: Running function GetSolutionProductVersion(). 
2011-12-28 22:37:03 AS: File name is Microsoft.AnalysisServices.SharePoint.Integration.DLL 
2011-12-28 22:37:03 AS: Found solution location in regsitry setting 
2011-12-28 22:37:03 AS: The location is C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.AnalysisServices.SharePoint.Integration.DLL. 
2011-12-28 22:37:03 AS: The product version of solution is 10.50.1600.1. 
2011-12-28 22:37:03 AS: Running function UpdateEngineServiceInstanceIMBIVersionAndUnprovisionedBySetupBit(). 
2011-12-28 22:37:03 AS: Running function GetLocalEngineServiceInstance(). 
2011-12-28 22:37:03 AS: Found Gemini Engine Service instance on current machine. 
2011-12-28 22:37:03 AS: Found Gemini Engine Service instance on current machine. 
2011-12-28 22:37:03 AS: Current IMBI version of engine service is null. It means the engine service is newly installed. It should be turned on by Setup if its version is desirable. 
2011-12-28 22:37:03 AS: Existing IMBI version is null 
2011-12-28 22:37:03 AS: CurrentIMBIVersion property of Gemini Engine Service instance on machine SHARE2010 is set to 10.50.1600.1 
2011-12-28 22:37:03 AS: Running function GetSolutionProductVersion(). 
2011-12-28 22:37:03 AS: File name is Microsoft.AnalysisServices.SharePoint.Integration.DLL 
2011-12-28 22:37:03 AS: Found solution location in regsitry setting 
2011-12-28 22:37:03 AS: The location is C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.AnalysisServices.SharePoint.Integration.DLL. 
2011-12-28 22:37:03 AS: The product version of solution is 10.50.1600.1. 
2011-12-28 22:37:03 AS: Running function UpdateMidTierServiceSolutionVersion(). 
2011-12-28 22:37:03 AS: CurrentSolutionVersion property of Gemini Mid Tier Service instance on machine is set to 10.50.1600.1. 
2011-12-28 22:37:03 AS: Entering function ChangeUserAccount() 
2011-12-28 22:37:03 AS: Switching Service Account to desired user 
2011-12-28 22:37:03 AS: Action: Failpoint id: Switching_Service_Account 
2011-12-28 22:37:03 AS: Result: Success 
2011-12-28 22:37:03 AS: Action: (Utility) Detecting Service Name 
2011-12-28 22:37:03 AS: Result: (Utility) MSOLAP$POWERPIVOT 
2011-12-28 22:37:05 AS: Exception!! 
2011-12-28 22:37:05 AS: The given key was not present in the dictionary. 
2011-12-28 22:37:05 Slp: Error: Action "Microsoft.SqlServer.Configuration.AnalysisServices.ASSPIInstallFarmAction" threw an exception during execution. 
2011-12-28 22:37:05 Slp: Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException: The given key was not present in the dictionary. ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. 
2011-12-28 22:37:05 Slp: at System.ThrowHelper.ThrowKeyNotFoundException() 
2011-12-28 22:37:05 Slp: at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
2011-12-28 22:37:05 Slp: at Microsoft.SharePoint.Utilities.SPUtility.GetUserPropertyFromAD(SPWebApplication webApplicaiton, String loginName, String propertyName) 
2011-12-28 22:37:05 Slp: at Microsoft.SharePoint.Administration.SPManagedAccount.GetUserAccountControl(String username) 
2011-12-28 22:37:05 Slp: at Microsoft.SharePoint.Administration.SPManagedAccount.Update() 
2011-12-28 22:37:05 Slp: at Microsoft.SharePoint.Administration.SPProcessIdentity.Update() 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Configuration.AnalysisServices.ASSPIConfigExtension.ChangeUserAccount(String userName, SqlSecureString password) 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Configuration.AnalysisServices.ASSPIInstallFarmAction.ConfigExistingFarmFirstASServerUseSharedService() 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Configuration.AnalysisServices.ASSPIInstallFarmAction.ExecuteAction(String actionId) 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream) 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(TextWriter statusStream, ISequencedAction actionToRun) 
2011-12-28 22:37:05 Slp: --- End of inner exception stack trace --- 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(TextWriter statusStream, ISequencedAction actionToRun) 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionWithRetryHelper(WorkflowObject metaDb, ActionKey action, ActionMetadata actionMetadata, TextWriter statusStream) 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.InvokeAction(WorkflowObject metabase, TextWriter statusStream) 
2011-12-28 22:37:05 Slp: at Microsoft.SqlServer.Setup.Chainer.Workflow.PendingActions.InvokeActions(WorkflowObject metaDb, TextWriter loggingStream) 
2011-12-28 22:37:05 Slp: The configuration failure category of current exception is ConfigurationFailure 
2011-12-28 22:37:05 Slp: Watson Bucket 1 
 Original Parameter Values 
2011-12-28 22:37:05 Slp: Parameter 0 : SQL Server 2008 R2@RTM@ 
2011-12-28 22:37:05 Slp: Parameter 1 : Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper 
2011-12-28 22:37:05 Slp: Parameter 2 : System.ThrowHelper.ThrowKeyNotFoundException 
2011-12-28 22:37:05 Slp: Parameter 3 : Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException@1203@1 
2011-12-28 22:37:05 Slp: Parameter 4 : System.Collections.Generic.KeyNotFoundException@-2146232969 
2011-12-28 22:37:05 Slp: Parameter 5 : ASSPIInstallFarmAction 
2011-12-28 22:37:05 Slp: Parameter 6 : INSTALL@STARTUPFINALIZE@ANALYSIS_SERVER_SPI 
2011-12-28 22:37:05 Slp: 
 Final Parameter Values 
2011-12-28 22:37:05 Slp: Parameter 0 : SQL Server 2008 R2@RTM@ 
2011-12-28 22:37:05 Slp: Parameter 1 : 0xD42B86D4 
2011-12-28 22:37:05 Slp: Parameter 2 : 0xA0A72FEE 
2011-12-28 22:37:05 Slp: Parameter 3 : 0x30E00066@1203@1 
2011-12-28 22:37:05 Slp: Parameter 4 : 0xD05BC945 
2011-12-28 22:37:05 Slp: Parameter 5 : ASSPIInstallFarmAction 
2011-12-28 22:37:05 Slp: Parameter 6 : 0x0FF251A7 
2011-12-28 22:37:09 Slp: Sco: Attempting to write hklm registry key SOFTWARE\Microsoft\Microsoft SQL Server to file C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20111228_222512\Registry_SOFTWARE_Microsoft_Microsoft SQL Server.reg_ 
2011-12-28 22:37:09 Slp: Sco: Attempting to write hklm registry key SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall to file C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20111228_222512\Registry_SOFTWARE_Microsoft_Windows_CurrentVersion_Uninstall.reg_ 
2011-12-28 22:37:09 Slp: Sco: Attempting to write hklm registry key SOFTWARE\Microsoft\MSSQLServer to file C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20111228_222512\Registry_SOFTWARE_Microsoft_MSSQLServer.reg_ 
2011-12-28 22:37:09 Slp: Sco: Attempting to write hklm registry key SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server to file C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20111228_222512\Registry_SOFTWARE_Wow6432Node_Microsoft_Microsoft SQL Server.reg_ 
2011-12-28 22:37:09 Slp: Sco: Attempting to write hklm registry key SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall to file C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20111228_222512\Registry_SOFTWARE_Wow6432Node_Microsoft_Windows_CurrentVersion_Uninstall.reg_ 
2011-12-28 22:37:09 Slp: Sco: Attempting to write hklm registry key SOFTWARE\Wow6432Node\Microsoft\MSSQLServer to file C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20111228_222512\Registry_SOFTWARE_Wow6432Node_Microsoft_MSSQLServer.reg_ 
2011-12-28 22:37:12 Slp: The given key was not present in the dictionary. 
2011-12-28 22:37:14 Slp: Watson bucket for exception based failure has been created 
2011-12-28 22:37:14 Slp: at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionEngine.RunActionQueue()Error: Action "ASSPI_Install_ASSPIInstallStartupFinalize_Cpu64" failed during execution.

Browser error: ”Only secure content is displayed” on SharePoint 2010 site


I recently ran into this issue after the migrating of a SharePoint Server 2010 site to a new domain name.

At the front page our Internet Explorer 9 showed this error message:

-and the people using this site was annoyed as they needed to click the “Show all content” button each time they visited the SharePoint site.

This error appears if you access a SSL encrypted site (https://) and some elements or content on the page is unencrypted (http://). IFRAMES, images, scripts and other elements can be causing this to happen, but in my case I couldn’t see any difference just by looking at the page or examining the HTML source.

Instead of disabling this message box (by allowing the browser always to show unsecure content – please do not do that) I performed the following steps to find out what was causing this error.

 

  1. I visited the SharePoint site and saw the error message in the bottom of the screen
  2. I entered the build-in “Developer Console” feature of Internet Explorer 9 by hitting F12


  3. I refreshed the SharePoint page by hitting F5
  4. On the developer console these lines appeared:

Excellent – here I had the “root of the problem”

I hope this post helps others with the same problem

 

 

 

 

Brand your SharePoint within your organization


I recently saw a session with Symon Garfield on successful enterprise social computing with SharePoint 2010 and stumbled across an interesting comment:

“… Don’t call Mysite Mysite. Come up with an exciting name for it. Run a competition – sounds cheap but it works! Come up with a logo for it”, Symon Garfield

I thought about it for a while…. –and I totally agree on this. We brand everything that we’d like to distribute, grow and evolve: Companies, products and individual people.

If we think of the different areas of functionality in SharePoint as a set of services instead of one product, brand these individual services and afterwards roll these out to the information workers… then adoption and success of the technology will definitely improve.

The whole idea of making small steps to get the “service” adopted within the organization is brilliant:

  • Awareness
    • Branding this with a cool name – make an internal competition for a name and logo for it
    • Inform users about a challenge or situation and the solution
    • Advertise for it internally
  • Availability
    • Make a launch event (the size depends on the size of the SharePoint service)
    • Make a culture around the service
  • Usage
    • First steps – positive experience is important – do not make it too complicated in the beginning
    • Train the users – add optional training also
    • Make a sandbox for people to try ideas out away from the production environment
  • Adoption
    • Support desk
    • New employee orientation
    • Follow up and expand the service

In his example this was the MySite functionality to brand and implement but also search, knowledge bases, blogs and product information portals could be deployed using this method.

Also remember to have a realistic time schedule for the whole project

Think about – and comment on this post J

Thanks Symon for your show!

My new laptop testing and demo setup


I have searched for a solution that makes it possible for me to use my laptop with Windows 7 to host a SharePoint 2010 demo environment with 2 Windows Server 2008 R2 machines.

Now it is actually working great, and if anyone else are looking for an okay performance solution for testing/demo or developing solutions here is my configuration:

  • Lenovo T410, i5 2.5GHz CPU, 8GB RAM, Intel 80GB SSD disk
  • LaCie d2 quadra 1TB external storage through eSATA cable
  • VMware Workstation 7.1

With this setup I can easily take the laptop and external drive with me as it does not take up much space J

Finding missing or faulty features in SharePoint


During maintenance or upgrading you SharePoint farm you could run into a problem with missing or faulty features in your farm. Sometimes it can be difficult to determine which feature it is, where it is used and remove it if it is not used.

Check your MOSS 2007 /WSS 3.0 SP2 environment regulary with the following command:

      stsadm –o preupgradecheck

Different methods can be used in this process, and here is an example of how you can find the features

Windows PowerShell – finding a featule by the ID

You can search the features-folder on your SharePoint server and find the definition XML file:

   $path = ‘C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\TEMPLATE\FEATURES’
   $term = “AEBDD598-142F-4A93-8AA5-54F66B776CDF”
   Get-ChildItem $path -Recurse -Include *.* | Select-String $term

 

STSADM – find features and where they are used

This command is implemented in the October Cumulative hotfix

      stsadm -o enumallwebs -includefeatures > c:\migration\features.txt

 

Feature Admin Tool – Finding, identifying and fremoving missing and faulty features

This tool is very handy in investigating and pinpoint where the features are. Especially if the feature binaries and definitions are removed from the filesystem. Please use the tool with care and perform a full backup of your SharePoint farm before use.

 

More information

For more reading regarding missing features, please visit these pages:

-og do a google search on your errors Smiley