Thursday, 8 August 2013

SP2013 AutoSPInstaller Error Correction

This post contains alist of issues I have had to correct on multiple farm builds. 

Problem:  After a remote offline install the main CA box shows an upgrade is required.  CA > Manage servers in this farm :Upgrade Required
Resolution: Run cmd > C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\BIN>PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

Problem: PU or CU is not getting installed.
Resolution: Ensure the .exe are extracted out e.g. ubersrv2013-kb2817414-fullfile-x64-glb.exe this is the June 2013 CU.  Ensure the March 2013 PU is extracted and in the same folder ubersrvsp2013-kb2767999-fullfile-x64-glb.exe.  Ensure they are placed in the correct location for me it is ..\2013\Updates\...  CU are cumulative so you only need the PU and then the latest CU.  Don't rename the CU - this caught me out.

Problem: I kept receiving the error: 17303 Extracted file error for the June CU (ubersrv2013-kb2817414-fullfile-x64-glb.exe).
Resolution:  Looks like the download was corrupt, re downloaded the CU and extracted the contents which fixed the issue.

Problem: I built a 4 SP server 2013 farm.  I had 2 Search nodes setup via AutoSPInstaller and added another 2 search nodes (index partitions with it's corresponding replicated index).  After a reboot I got into the following state and could not get WFE2 to join the search farm.
Using CA and looking at the Search topolgy on WFE2, I can see the error "Administrative status  The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." and "Unable to retrieve topolgy component health states. This may be because the admin component is not up and running.".
 
Resolution: Check the routing, my CA box is WFE, I also had a CA role on WFE2, while playing with the farm I added a host entry to work with CA on WFE2.  The issue is that this is the same host entry as where my Admin component sits.  Removing the host entry on WFE2 fixed the status of the index and query components.
 
 

Monday, 5 August 2013

Installing OWA 2013

Series of Posts for Installing and Configuring Office Web Apps (OWA) 2013 to work with SharePoint 2013.

Overview: Manually Install OWA 2013 on Windows 2008 R2 SP1.

Steps:
  1. Download and install .Net 4.5 (dotNetFx45_Full_setup.exe)
  2. PowerShell 3 (Windows Management Framework 3.0)  Windows Server 2008 R2 SP1 (64-bit versions: Windows6.1-KB2506143-x64.msu)
  3. Install KB2670838 (Windows6.1-KB2670838-x64.msu)
  4. Run PS>Import-Module ServerManager
    PS > Add-WindowsFeature Web-Server,Web-WebServer,Web-Common-Http,Web-Static-Content,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,Web-Security,Web-Windows-Auth,Web-Filtering,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Console,Ink-Handwriting,IH-Ink-Support
  5. Install OWA 2013 (wacserver.img)

 

Load balancing in SharePoint

Background: SharePoint 2010 required sticky sessions.  In effect when the 1st request from a user comes into SharePoint 2010 to the load balancer, the request will be directed to a particular SharPoint WFE server that will then serve the subsequent requests (the user now has session affinity/sticky session).

SharePoint 2013 has distributed cache so you no longer need to use sticky sessions, the load balancer merely needs to direct the user to any server (preferably the quietiest).

Possible options for Load Balancers in SharePoint:
F5/BIG-IP (Level 2, 3, 4 &7)
KEMP (Level 4 & 7)
Barracuda (Level 4)
Cisco - I don't think Cisco build dedicate load balancers and more however "Cisco IOS-based router product has load balancing capabilities".
Not familiar with:
http://www.coyotepoint.com/products/compare
http://www.radware.com/Products/ApplicationDelivery/AppDirector/load_balancing.aspx
http://www.a10networks.com/resources/files/DG_MS-SharePoint2013.pdf - NLB and SSL termination.

Key features needed off a Load Balancer:
Distributed Denial of Service (DDoS) attack protection
Http compression
SSL acceleration/ and termination
Persistance/Sticky sessions
HA via distribution of requests and verifying that SP is running.
 

Thursday, 25 July 2013

Identifying page load times using Fiddler

Problem:  I have poor performing pges and I need to see which pages are causing my issues, I have the Developer dashboard or web testing in Visual Studio 2012 Ultimate but a nice quick way to identify the issue is to use fiddler with a slight customisation.

Resolution: There are 2 options in Fiddler to monitor performance:
1.> Highlight the requests and click the Timeline tab
2.> Customise Fiddler to show request times for each request as shown below.

Process to Customise Fiddler:
Create a TTL column in fiddler to see how long each request is taking.  In Fiddler press Ctrl + R, this opens the editor CustomRules.js.  Edit as shown below.



In my scenario the page is taking 6 seconds to load as shown in yellow highlight.  My SQL database hosting my SP Config database could not grow.  Once I correct this, my TTL is under 0.1 seconds on a blank default publishing page.



More Info:
See other related Fiddler posts
Enable the developer dashboard post.

Monday, 22 July 2013

SharePoint 2013 Search Overview

Overview:  This post explains how SharePoint 2013 Search works.  SharePoint 2013 search is the latest search within the SP product and replaces SP and Fast search that was used with SP 2010.

6 Components:
  1. Query
  2. Index
  3. Analytics
  4. Content Processing
  5. Crawl
  6. Admin
Tip:  Group Query & Index roles on the same server.  Then group Analytics & Content processing.  Group Crawl & Admin (you can also add content processing to these servers).

Installing search on SP 2013 creates 4 database (all db's by default use the 'Simple' recovery model):
  1. Search Admin,
  2. Search analytics Reporting,
  3. Search Crawl, and
  4. Search Links.
A guideline from Microsoft is: "Add one index partition for every 10 million items in the search index."  This depends on how you are using search, so if you have more documents per index but have few queries or can live with longer response times or your kit can deal more queries this can be increase or decreased.
Index partitions are splitting the data vertically, so if you have 25 million search items and want less than 10 million per partition, you will need 3 index partitions on the 3 index servers.  You do not have redundancy, so if any index goes down your search is broken.  Index replicas as the name suggests is a copy.  I think of this as horizontal scaling.  So if you want HA on your 25 million item search farm, you need another 3 index (Replica) partitions.  You have 6 index servers.  Using index replicas will improve query results speed.

Search Architectures for SharePoint 2013 - From MS (Kavindra Palaraja out of his oit2013-model-sharepoint-search-architecture.pdf document).  This is not my diagram but it explains the components nicely.
Search Components in SharePoint 2013
Replicas and Index partitions explained are refereed to as Rows and Columns. 
Add a new Index partition when the number of documents in the index exceeds 30 million.

SharePoint 2013 supports 3 types of Crawls:
  1. Full (SP2010) 
  2. Incremental (SP2010) and
  3. Continuous.
  • The continuous crawl on works on SP2013 content and shall display content in the crawl results as soon as data has been crawled and run thru the content processing component (CPC) (it doesn't wait for the crawl to complete).  Note: security changes are only picked up after incremental search is run.  There are no crawl logs for continuous crawls, so for troubleshooting go to SQL Search Service DB for the table MSSMiniCrawls (verify).
  • "multiple continuous crawls can run at the same time. Therefore, even if one continuous crawl is processing a large content update, another continuous crawl can start at the predefined time interval and crawl other updates. Continuous crawls of a particular content repository can also occur while a full or incremental crawl is in progress for the same repository."  Technet 
  • It is a good idea to run incremental crawls as they index more data than just SP2013 data and continuous crawl does not process or retry items that return errors and the incremental crawl shall clean theses items up.
Tip: Results can also be security trimmed at Query time, this is FTC (Full Trust Code) that must be deployed on the query role search server on-prem.


More Info:
Capacity management and sizing overview for SharePoint Server 2013
http://www.microsoft.com/en-us/download/details.aspx?id=30383
http://www.microsoft.com/en-gb/download/details.aspx?id=30374
SP2013 Stretch Farms
SP2013 Database types and desc

Design Goal - Index partitions and Index replicas.

Partitions marked in Red.

Note: 2016/11/16 - Adding email messages e.g. msg to SharePoint has always crawled the data however in MOSS and SP2010, the attachments do not get crawled.  SP2013 (it may be since SP1) and Office 365 will also index the attachments of messages saved in SharePoint.

Friday, 12 July 2013

Understanding SharePoint 2013 On-Premise Licencing

Overview:  SharePoint licencing is pretty confusing in SP2010 and MOSS.  MS have changed how licencing works and in this post I try simply how licencing works.

SharePoint 2013 uses the Server/Client Access License (CAL) licensing model. 

Server Licences:
Unlike SP2010 in SP2013 there is only 1 model for a server licence (Internet Site server licences no longer exist).  Your only choice in the paid versions on the Server licencing is: Standard or Enterprise.  Full list price according to the site Directions on Microsoft states "US$6,798" for the SharePoint Server licence.

CALs:
  • CALs are based on per user or per device. 
  • CALs come in 2 favours: Standard or Enterprise.  You can mix these together on the same farm/servers being accessed.  So if you have 100 internal users using Enterprise functionality and 900 using Standard functionality you pay for 100 enterprise licences and 900 standard licences (pretty obvious however in SP2010 if didn't work like this).
  • Internet users are external users and normally access the servers using anonymous access - they do not need CALs.
  • External Users* that access the Intranet/internal sites don't need CALs.  This is the trickiest 1 to define for me.  "External Users: Users who are not the licensee’s or its affiliates’ employees or on-site agents or contractors."  MSDN 2012.
Disclaimer:  I am not a licencing expert - speak to you licencing rep for your scenario.
 * External Users - are people that don't work for your company/organisation (it has noting to do with location from where you access the SP farm).

Notes:
  • FAST is not used in SP2013 so there is no licencing requirement on a SP2013 farm.
  • Office Web Apps (OWA) cals are licenced against the Office client licences.  You don't need licences for using OWA in read only mode but to edit the end users needs either the Standard Office or Professional Office licence.  I don't believe you pay for OWA server licences.
  • SP2013 version comparison chart from Dave Coleman.
  • SQL Server and Windows licencing is outside the scope of this post - you will need them.

More Info:
http://www.microsoft.com/licensing/about-licensing/briefs/SharepointServer2013.aspx
http://www.directionsonmicrosoft.com/licensing/30-licensing/4074-licensing-internet-sites-built-on-sharepoint-2013.html
http://www.johntimney.com/?p=58
http://www.degdigital.com/blog/sharepoint-2013-licensing-for-dummies/
http://blogs.technet.com/b/wbaer/archive/2012/11/12/introduction-to-user-license-enforcement-in-sharepoint-server-2013.aspx
http://blogs.technet.com/b/jessmeats/archive/2012/12/14/sharepoint-2013-snippet-user-license-enforcement.aspx
http://blogs.technet.com/b/volume-licensing/archive/2013/05/22/how-to-license-office-web-apps-server.aspx
 

Thursday, 11 July 2013

Importing an SSRS report and displaying it on a new environment

This is a 3 Series Post on SSRS 2012 for SharePoint 2010


Part 2 - (This Post) Importing an SSRS report and displaying it on a new environment

Overview:  This post looks at moving your SQL Server Report Services Report into a new farm (e.g. production).  I use the UI in this step-by-step guide.  I am using SQL 2012 for SSRS and SP 2010 as created in this post.

Assumptions:
  1. SP 2010 WFE's
  2. SQL 2012 SP1 is the database server
  3. Report (.rdl) is already created and uses a .rsds file to specify the connection string. 
Steps to migrate and deploy an existing SSRS report:
1. CA > Application Management > Manage Service Applications.
2. New > SQL Server Reporting Services Service Application > Fill in as shown below:
















3. Verify the Service Application is running.













4. Once Completed.  Open a Web Application that has the SSRS Service Application associated to it so we can test it out.  Login to a site collection and create a new library based on the "Reports Library" template.

5. Upload a report (.rdl) and the Connection (.rsds) file int he new "Report library". Then click the dataset/connection (.rsds) file, and test it is working.

6. Edit the binding of the rdl to it rsds as shown below:

7. Ensure you have the SP, scheme ect on the database server to perform the query logic.
8. Click on the report (rdl) file to see it working.
Tip: The install is fragile in that if the order, versions or settings are not right it doesn't work without giving error often.  Make sure SQL Servsions on all machines are the same!  I got caught by not having the same SQL version on 1 WFE as the backend SQL SSRS server.
This is a 3 Series Post on SSRS 2012 for SharePoint 2010

Part 2 - (This Post) Importing an SSRS report and displaying it on a new environment
 
Also I have an updated post on using SP2013 to us SSRS in SharePoint mode here.
 
Update: 24 Jan 2014 - PS to upload rdl's and data sources into a reporting library
 
$spWeb = Get-SPWeb "http://demo.dev/"
$spList = $spWeb.Lists["SSRS"]
$file = [io.file]::ReadAllBytes('C:\test.rdl')
$spList.RootFolder.Files.Add("test.rdl",$file)
# This code finds the SSRS reporting library called "SSRS" and takes a rdl file off the local drive and adds it to the library.