Monday, December 13, 2010

Business Connectivity Services limits

Found this information from one of the blog posts:

Putting the extract here for my future reference.

Business Connectivity Services limits

-There is a hard limit of 5,000 external content type definitions that can be loaded into memory at any given time.
-There is a limit of 500 external system connections that can either be active or open at any given time. The default is set to 200 and it does not matter what type of connection is being used either.
-The default is 2,000 database items that can be returned in a request when using the database connector. The boundary is 1 million.
-There are three variables that you must always consider: the number of items in the external list, the number of columns per item and the size of each item.
-Profile pages display data from external content type data. The performance of these pages is driven by the complexity of the associations to external systems.
-The internal process for bringing external data into SharePoint via BCS is pretty simple. There is load (queries external source and loads into SharePoint), process (applies sort, filter, group processing) and render (display data onto page). BCS does not have in-memory cache for external items. Data has to go through load, process and render each time an external list is refreshed. Knowing this you need to make sure you control the amount of data that is processed at any given time.
-Microsoft's recommendation is to keep the number of items to be processed as possible by reducing the amount of items returned from external systems. It is recommended to keep the number of returned between 100 to 500 rows and it is recommended to not exceed 2.000 rows. -It is recommended to use filters to ensure you work within these guidelines. More can be returned if needed but this needs to be done by an administrator.
-Rendering external list can be intensive for both the WFE and the application server. It is recommended to keep the number of items being displayed at any time to around 30. Note that the number of items that are rendered is not the same amount of items that were processed. The number of items rendered is controlled by the external list view that is on a SharePoint page.
-It is recommended to reduce the number of columns from external list. Obviously a large number of columns will affect performance.
-When rendering it is recommended not to use large-sized columns in list views. Columns larger that 1KB should not be utilized in a view. However performance is more affected by the number of items and not the size. So it is recommended always try to keep the number of items lower for better results.
-When designing an external list which is using BCS, make sure the default view will be the view the user needs to see the most. If the user needs to sort or filter the view, that will require data go back through the load, process and render process.
-For a profile page, the number of associations is the key for good performance. It is recommended to not exceed two associations. There will be lower performance of both throughput and latency when large number of items in an association.
-Diagnostic logging of BCS can become a factor for performance and it is recommended to lower when not doing testing.
-Performance of the external system will have performance implications to BCS and you need to sure those systems perform well.

Friday, July 9, 2010

SP2010-Visual Studio 2010-Console Application:The Web application at could not be found. Verify that you have typed the URL correctly.

As any other application development process we use console application time and again to test piece of code. Now when developing in a Visual Studio 2010 and SharePoint 2010 environment, when using straight console application project and when trying to use :

SPSite site = new SPSite(http://dev/)

It throws an error:

"The Web application at could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application."

We would developing normally thinking that VS 2010 Console Application project template would have taken care of everything, but unfortunately, the platform target for Console App is still X86 but in fact we are on SP 2010 server which is always going to be a 64 bit machine.

  • Goto project properties of console app.
  • Click Builds tab
  • Change the Target Platform to "Any CPU"
  • And you should get your SPSite object instantiated successfully.

Tuesday, June 22, 2010

PowerShell Tips for SharePoint 2007 and STSADM Lovers

Here is a quick guide for PowerShell tips in SharePoint 2010:

And this Technet article gives a complete mapping of STSADM commands with PowerShell Commands:

SharePoint 2010 DataSheet View - The list cannot be displayed in DataSheet view for one or more of the following reasons

After Installing Office 2010 if you try to use DatasheetView option in SharePoint 2010 List, you are thrown with a error:

The list cannot be displayed in DataSheet view for one or more of the following reasons: blah blah.....

For some reason Access is still relying on AccessDatabaseEngine which is a 2007 Office System Driver: Data Connectivity Components. Microsoft doesn't say much about this component as a prerequisite either.

Download and install this component and it will fix your error.

Wednesday, May 5, 2010

Web Platform Installer could not start

The error when running Web Platform Installer doesn't say much. Just make sure you have downloaded the right bit version of this software and the error will go away.

x86 version:
x64 version:

Tuesday, February 2, 2010

Update Item properties after document is checked in without checking out again

There might be cases when you would want to update an Item's/Document's property after it has been checked in. You would not want to checkout the item again as you want to maintain the version number that was generated by UI checkin. For example in my case I wanted to update a field when the document was published with major version and approved by approval workflow.

You could not do in ItemUpdating because some fo the fields are not exposed in Item.AfterProperties collection and also it would result in an infinite loop.

Option left is ItemUpdated event, but in this even the document is already being checked in and published with major version. So how can you do it without checking out the document again. This is what you can do:

if (file.Item.ModerationInformation.Status == SPModerationStatusType.Approved)

file.Item["DocumentNumber"] = "XYZ";

Doing Item.SystemUpdate(false) does not increments the version number and does not update modified date or modified by and running under elevated privilegs it does not look to check out the document.

Hope it will be helpful to some one.