Title: Creating a web part that is both a consumer and a provider.
Problem: I needed a web part that receives data from a provider web part. The same web part then passes data onto a consumer web part. I.e. WebPartGetUser (Provider), WebPartShowWeeks (Consumer & Provider) & WebPartShowProductsOrderedinWeek (consumer).
Hypothesis:
WebPartGetUser - Retrieve the user and passes the user id to the web part WebPartShowWeeks.
WebPartShowWeeks - Consumes the UserId and show weeks where the user placed an order. A drop down list show all the weeks, when the week is selected, the week is passed to the WebPartShowProductsOrderedinWeek web part. This show all the orders placed in a specific week.
Friday, 24 December 2010
Connected Web Part Series - Part 2
Wednesday, 15 December 2010
SharePoint 2010 boundries and thresholds
I attended a suguk.org event in London about a week ago. John Timney did the 1st presentation session and asked a couple of questions on SharePoint limits. I didn't know the answers, tried to think back to MOSS and what I'd seen previously. The simplest question that I should know the answer to:
Qu: What is the maximum content database size supported by SharePoint 2010?
Ans: Microsoft supports Content databases up to 200GB in size. In MOSS it was 100GB. It is fairly common to see content databases considerably bigger than 100GB in MOSS that work. The issue is how long does it take to perform operations on these content DB's such as backups moving content db's. If you have a dedicated SAN, there is no reason not to go to much larger content databases however, they are not supported by MS.
More info on SharePoint's boundaries and thresholds from MS
Qu: What I/O speed does MS recommend for your SharePoint 2010 SQL database?
Ans: I/O operations per second (IOPS). The faster that SQL can handle request, results in faster return time and reduced que requests, so pretty important and a fairly common bottleneck. This is often a reason why people choose not to virtualise SQL Server, it I/O intensive in SharePoint and really important to be fast. Tip: Ensure VM's are thick provisioned for SQL Server.
To determine you IOPS use SQLIO Disk Subsystem Benchmark Tool (http://go.microsoft.com/fwlink/?LinkID=105586).
I guest the answer is as fast as possible but you can determine your IOPS requirement using the tool and you usage. I go with ldf files on the fastest disk on the TempDB followed by ldf files for the content dbs on spinning disks.
Update 09/06/2011
Qu: Should I using seperate disks for mdf (data files) & ldf (transaction logs)?
Qu: What is the default SQL Server database growth setting sizes?
Ans: SQL Server 2008 will grow data files by 1MB and transaction logs by 10% increments. I would start with an initial content database size of 100MB(adjust according to your anticipated demand) and autogrowth to be 50MB (adjust according to your system). This general prinipal will result in the growth to the db's being infrequent so the associated performance hit is reduced, unused space being optimised as the percentage growth in the transaction log has huge incremental hit that are generally never reached after initial growth and less fragmented databases results in faster performance.
More Info:
Summary of limits and thresholds
http://blah.winsmarts.com/2010-5-How_big_can_my_SharePoint_2010_installation_be.aspx
SQL Checklist for SharePoint 2013
Qu: What is the maximum content database size supported by SharePoint 2010?
Ans: Microsoft supports Content databases up to 200GB in size. In MOSS it was 100GB. It is fairly common to see content databases considerably bigger than 100GB in MOSS that work. The issue is how long does it take to perform operations on these content DB's such as backups moving content db's. If you have a dedicated SAN, there is no reason not to go to much larger content databases however, they are not supported by MS.
More info on SharePoint's boundaries and thresholds from MS
Qu: What I/O speed does MS recommend for your SharePoint 2010 SQL database?
Ans: I/O operations per second (IOPS). The faster that SQL can handle request, results in faster return time and reduced que requests, so pretty important and a fairly common bottleneck. This is often a reason why people choose not to virtualise SQL Server, it I/O intensive in SharePoint and really important to be fast. Tip: Ensure VM's are thick provisioned for SQL Server.
To determine you IOPS use SQLIO Disk Subsystem Benchmark Tool (http://go.microsoft.com/fwlink/?LinkID=105586).
I guest the answer is as fast as possible but you can determine your IOPS requirement using the tool and you usage. I go with ldf files on the fastest disk on the TempDB followed by ldf files for the content dbs on spinning disks.
Update 09/06/2011
Qu: Should I using seperate disks for mdf (data files) & ldf (transaction logs)?
Ans: On small SQL server farms ensure that the transaction logs are stored on a different physical drive to the content databases as this will reduce contention and increate performance signigicantly. Larger SQL instances like SANS have multiple disks so there is no need to seperate the files as this is already done by the nuber of disk readers. You can also check the performance of a drive by watching the "disk seconds per read/write counters" which should be less than 20ms. If the disk seconde per read/write is approachiing 20ms consider improving the disk speed or increasing the number of read points.
Update 22/08/2012 - Bigger architectures may use SSD/Flash memory as opposed to disks. The IOPS are hugely improve as the is no disk search time. http://technet.microsoft.com/en-us/library/cc298801.aspx#Section1_5a
Update 22/08/2012 - Bigger architectures may use SSD/Flash memory as opposed to disks. The IOPS are hugely improve as the is no disk search time. http://technet.microsoft.com/en-us/library/cc298801.aspx#Section1_5a
Qu: What is the default SQL Server database growth setting sizes?
Ans: SQL Server 2008 will grow data files by 1MB and transaction logs by 10% increments. I would start with an initial content database size of 100MB(adjust according to your anticipated demand) and autogrowth to be 50MB (adjust according to your system). This general prinipal will result in the growth to the db's being infrequent so the associated performance hit is reduced, unused space being optimised as the percentage growth in the transaction log has huge incremental hit that are generally never reached after initial growth and less fragmented databases results in faster performance.
More Info:
Summary of limits and thresholds
http://blah.winsmarts.com/2010-5-How_big_can_my_SharePoint_2010_installation_be.aspx
SQL Checklist for SharePoint 2013
Tuesday, 14 December 2010
ULS Viewer
Problem: The ULS log generated by SharePoint 2010 are difficult to read and review as the logging is store in flat text files.
Initial Hypothesis: ULS Viewer allows the administrator/developer to track, understand and solve issues on your SharePoint environment. The ULS viewer is not a supported product my Microsoft however, it is alot easier to discover errors than using notepad and opening each ULS log. Logs are located at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS by default.
Resolution:
1.> Download the ULS Viewer
2.> Map a folder to the c drive on my UAT environment.
3.> Open the ULS Viewer.
4.> To view the logs as the are added, Click File > Open From > ULS, select the Logs location on your mapped drive.
5.> Add multiple WFE's log by using the File > Append From option.
6.> To view historic files, copy the log files from the server to your local machine and click File > Open From > File, select multiple ULS log files to see the server history.
How to use the ULS Viewer blogs:
Jie Li
Jeremy Taylor
Initial Hypothesis: ULS Viewer allows the administrator/developer to track, understand and solve issues on your SharePoint environment. The ULS viewer is not a supported product my Microsoft however, it is alot easier to discover errors than using notepad and opening each ULS log. Logs are located at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS by default.
Resolution:
1.> Download the ULS Viewer
2.> Map a folder to the c drive on my UAT environment.
3.> Open the ULS Viewer.
4.> To view the logs as the are added, Click File > Open From > ULS, select the Logs location on your mapped drive.
5.> Add multiple WFE's log by using the File > Append From option.
6.> To view historic files, copy the log files from the server to your local machine and click File > Open From > File, select multiple ULS log files to see the server history.
How to use the ULS Viewer blogs:
Jie Li
Jeremy Taylor
Wednesday, 8 December 2010
Uploading multiple files in a document library
Problem: In a SharePoint 2010 document library, the "Upload Multiple Document" option behaves differently in Internet Explorer (IE) in the User Interface (UI) on end user machines. Either the "Drag and Drop" or the "multi tick tree view upload view" is shown in IE for multiple file uploads.
Initial Hypothesis:
1.> I originally thought Silverlight was responsible for the different displays, I remove Silverlight from the client machines and I still see the working drag and drop control. Therefore the difference has nothing to do with Silverlight. Additionally, this is not an IE version issue.
Tip: The ability to use Windows Explorer to upload files to a SharePoint document libray relies on the Os being 32bit. So on the x64 bit Windows Server, you can't upload files using Windows Explorer.
This control is currently disabled - Document library
Problem: Upload Multiple Documents is disabled with the message "This control is currently disabled.". If the new documents and various other documents on the ribbon are disable and showing the same message.
Initial Hypothesis: The Authentication provides have not been configured to Enable Client Integration.
Resolution: CA > Manage Web Applications > Select the WA > Authentication Providers > Select the zone > Enable Client Integration = Yes.
Initial Hypothesis:
1.> I originally thought Silverlight was responsible for the different displays, I remove Silverlight from the client machines and I still see the working drag and drop control. Therefore the difference has nothing to do with Silverlight. Additionally, this is not an IE version issue.
2.> Removing Silverlight and restarting the browser/machine has no effect, I still can use the drag and drop control. The ActiveX control that performs the upload must be responsible for the UI. More info.
3.> Only IE has the option to "Upload Multiple Document". The "Upload Multiple Document" is not available in FireFox or Chrome.
4.> The Office ActiveX plug in is STSUPLD.DLL. I found the file on my client machine located at e:\Program Files(x86)\Microsoft Office\Office14\STSUPLD.DLL. My version is obviously part of the Office 14/Office 2010 release.
5.> Removing the e:\Program Files(x86)\Microsoft Office\Office14\STSUPLD.DLL file and restarting IE results in the "Upload Multiple Document" option being disabled (greyed out).
6.> Replacing the STSUPLD.DLL with the Office 2007 STSUPLD in the Office14 or Office12 directory does not fix the issue it merely still greys out the "Upload Multiple Document" option.
Resolution: The behaviour is part of the version of Office installed on the client machine. The multi upload option is only available in IE if the client has the ActiveX control installed with Office. I believe it comes down to the last office product installed so if you have Office 2010, you get the drag and drop UI however if you install SharePoint Designer 2007, you will see the tree view as you will be using the STSUPLD.dll from Office 2007. Functionality is really out of your control as it comes down to the client machine setup. You can do javascript to check the plug-in version and change default display if you need to.
Check your version by finding the STSUPLD.DLL (I think you can do it in IE also), the details of the 3 versions are shown below:
Office Version | Dll Version | Dll Size |
Office 2003 | 11.0.5523.0 | ? |
Office 2007 | 12.0.4518.1014 | 22kb |
Office 2010 | 14.0.4761.1000 | 78kb |
Tip: The ability to use Windows Explorer to upload files to a SharePoint document libray relies on the Os being 32bit. So on the x64 bit Windows Server, you can't upload files using Windows Explorer.
This control is currently disabled - Document library
Problem: Upload Multiple Documents is disabled with the message "This control is currently disabled.". If the new documents and various other documents on the ribbon are disable and showing the same message.
Initial Hypothesis: The Authentication provides have not been configured to Enable Client Integration.
Resolution: CA > Manage Web Applications > Select the WA > Authentication Providers > Select the zone > Enable Client Integration = Yes.
Tuesday, 7 December 2010
Amending the Welcome Menu
Problem: Welcome Menu or Personal Actions Menu occasionaly refered to as the User Menu. SharePoint 2010 that displays the users name in the Welcome server control, this by default in the top right of the master page. You can add new menu items or hide existing menu items.
Initial Hypothesis:
- The Welcome user control is located in the 14 hive at 14\TEMPLATE\CONTROLTEMPLATES

- The user control is reference in master pages.
- Take a copy of the welcome.ascx file as you will be working on the original or need to reference your new copy in your master page.
Resolution: Hide the menu option in the Welcome Menu.
Use the PermissionString property to dispay the menu option depending on your permissions.
Edit the Welcome.ascx file for each menu option element add the visible attribute and set it to false to hide the menus.
List of valid properties for the PermissionsString propertyAlternatively set the MenuItemTemplate attrivute visibility to false, this will hide the menu option for everyone.
Resolution - Another option for changing the welcome control:- Remove the server control wssuc:Welcome from the master page or set it's visibility to hidden.
- Then write a Replacement control and add it to the master page.
Resolution: Add a new menu item
- Add a new element to the project that will be deployed as a feature
- Add the following code to the element file
- New menu item (Open BBC) is add to the welcome menu.
More Info:
http://glorix.blogspot.com/2007/08/custom-action-locations-and-groupid.html
http://www.sharepointnutsandbolts.com/2007/07/using-customaction-to-modify-system.html
http://blog.thekid.me.uk/archive/2007/06/23/sample-editcontrolblock-customaction-for-sharepoint.aspx
How to Hide Ribbon
http://blogs.msdn.com/b/zwsong/archive/2010/04/29/how-to-hide-ribbon-from-users-without-edit-page-privilege.aspxChris O'Briens Ribbon Customisation blog series
http://www.sharepointnutsandbolts.com/2010/01/customizing-ribbon-part-1-creating-tabs.html
Sunday, 5 December 2010
Sandboxed Solution with Full Trust Proxy
Problem: You deploy code as a sandbox solution however it fails as you need to go beyond the permissions a sandboxed solution can perform. For example sandbox solution code cannot write to the ULS and security is restricted so you won't be able to use RunWithElevatedPrivileges.
Resolution: You can develop a full trust proxy that is deployed into the GAC, you also need to register the full trust with SharePoint. Lastly, create the code for your sandboxed solution using the Full Trust Proxy code. The full trust proxy performs the operations that are beyond what the sandbox solution code is allowed to perform.
Update 23 April 2011 - CKSDev is an extension tool for Visual Studio that has a SPI (template) to create a full trust proxy. This will do all the plumbing of creating the full trust proxy and the deployment packaging. So if you are wanting to add a Sandbox Solution Full Trust Proxy for Logging use the VS template provide and all you need to add is your logging code.
More Info:
http://blah.winsmarts.com/2009-12-SharePoint_2010_Sandboxed_Solutions__Full_Trust__Proxies.aspx
http://ranvijaysingh.blogspot.com/2010/06/full-trust-proxy-in-sharepoint-sandbox.html
Resolution: You can develop a full trust proxy that is deployed into the GAC, you also need to register the full trust with SharePoint. Lastly, create the code for your sandboxed solution using the Full Trust Proxy code. The full trust proxy performs the operations that are beyond what the sandbox solution code is allowed to perform.
Update 23 April 2011 - CKSDev is an extension tool for Visual Studio that has a SPI (template) to create a full trust proxy. This will do all the plumbing of creating the full trust proxy and the deployment packaging. So if you are wanting to add a Sandbox Solution Full Trust Proxy for Logging use the VS template provide and all you need to add is your logging code.
More Info:
http://blah.winsmarts.com/2009-12-SharePoint_2010_Sandboxed_Solutions__Full_Trust__Proxies.aspx
http://ranvijaysingh.blogspot.com/2010/06/full-trust-proxy-in-sharepoint-sandbox.html
Thursday, 2 December 2010
Error occurred in deployment step Activate Features Failed to activate feature .. at scope
Problem: When deploying a soluction in VS 2010 I get the following error.
"VS Error: Error occurred in deployment step 'Activate Features': Failed to activate feature 'XX' (ID: xxxa2e8a-78d7-451c-aa85-3d28555e5555) at scope 'http://demo.dev'."
ULS contained the following error "Feature Activation: Threw an exception, attempting to roll back. Feature 'XX' (ID: 'xxxa2e8a-78d7-451c-aa85-3d28555e5555'). Exception: System.InvalidOperationException: Failed to activate feature 'XX' (ID:xxxa2e8a-78d7-451c-aa85-3d28555e5555) at scope 'http://demo.dev'. at Microsoft.SharePoint.SPFeature.HandleActivateError(SPFeature featError, Int32 iRetVal, Boolean fForce)"
Initial Hypothesis: Performing an IISreset did not resolve my issue, the suggestion to manual start the feature will activate the feature however it does not solve my deployment issue from VS. The feature is scoped at 'Site' level so activating the feature can be done at the site collection level.
Resolution: Removed the feature and solution using Powershell Rebooted Visual Studio development environment Open solution in Visual Studio 2010 and redeployed. The cause is still not know however, rebooting and uninstalling the solution has fixed the issue.
More Info:
http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/ee35db1a-b83f-477e-ba6b-f59ac8522e34/
"VS Error: Error occurred in deployment step 'Activate Features': Failed to activate feature 'XX' (ID: xxxa2e8a-78d7-451c-aa85-3d28555e5555) at scope 'http://demo.dev'."
ULS contained the following error "Feature Activation: Threw an exception, attempting to roll back. Feature 'XX' (ID: 'xxxa2e8a-78d7-451c-aa85-3d28555e5555'). Exception: System.InvalidOperationException: Failed to activate feature 'XX' (ID:xxxa2e8a-78d7-451c-aa85-3d28555e5555) at scope 'http://demo.dev'. at Microsoft.SharePoint.SPFeature.HandleActivateError(SPFeature featError, Int32 iRetVal, Boolean fForce)"
Initial Hypothesis: Performing an IISreset did not resolve my issue, the suggestion to manual start the feature will activate the feature however it does not solve my deployment issue from VS. The feature is scoped at 'Site' level so activating the feature can be done at the site collection level.
Resolution: Removed the feature and solution using Powershell Rebooted Visual Studio development environment Open solution in Visual Studio 2010 and redeployed. The cause is still not know however, rebooting and uninstalling the solution has fixed the issue.
More Info:
http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/ee35db1a-b83f-477e-ba6b-f59ac8522e34/
Subscribe to:
Posts (Atom)