Monday 16 September 2013

OWA 2013 Installation Notes

Overview:  There are a lot of posts on the InterWeb about installing OWA/WCA 2013.  This post shows my experience while installing OWA/WCA 2013 on a 2 Windows Server farm using Windows 2008 R2.  The process involves 5 ligh level steps shown below:
  1. Install pre-requisites and Windows roles on all VM's to be WCA servers.
  2. Install the WCA binaries, Language packs and updates on all VM's to be WCA servers.
  3. Create the farm on the 1st WCA server.
  4. Join additional servers to the WCA farm.
  5. Join the SP2013 farm to the WCA farm (this step could also be Lync 2013 (pptx sharing) or Exchange 2013 (previews) or any custom WOPI host).
Notes:
  1. WCA 2013 does not require SQL database.
  2. WCA  2013 are now decoupled from SharePoint 2012.
  3. WCA 2013 farms need NLB server affinity.
  4. WCA 2013 integrates with SharePoint 2013, Lync Server 2013, and Exchange Server 2013.
  5. Install WCA on dedicated VM’s i.e. don’t install OWA on SharePoint, SQL or Domain Controller servers.
  6. Don’t Install Microsoft Office on the WCA VM’s.
  7. WCA 2013 installed in read-only mode is a free product (if you have editing you need licences).  "To enable users to edit (not just read) Office documents in a web browser, verify that you have the necessary editing licenses" from Technet and "Office Web Apps licensing offers two options:
    • View-only. By default, Office Web Apps is view-only. View-only functionality is provided for free.
    • Edit and view. You must purchase an editing license to use the editing features of Office Web Apps with SharePoint 2013. You enable editing when you create the Office Web Apps Server farm"
  8. The install of Office Web Apps 2013 with SP2013 is pretty easy, I have automated most steps.
  9. I have 2 VM's that make up my OWA farm.  It's pretty difficult to find hardware requirements for OWA 2013.  I have gone for 8CPU's, 16GB RAM, c drive is 90GB and D is 72GB on each VM.
  10. Create the WCA farm then on the SP2013 farm bind to the OWA farm.
  11. Location of the ULS logs on the WCA VM's: C:\ProgramData\Microsoft\OfficeWebApps\Data\Logs\ULS
  12. SharePoint's link to OWA/WCA is farm wide.  You can only have 1 OWA per farm.  So you can't use different WCA/OWA per web application and you can't specify to use OWA on 1 Web App but have it excluded from a different web app.  It's farm wide.  You can specify the default behaviour at a library level i.e. tell the browser to use "the default application" will then not use OAW to open the document.
  13. Individual file types can be excluded from opening using WCA.  E.g. PS>Remove-SPWOPIBinding –Application “Excel” at the SP2013 farm level.
  14. SSL, WCA wants to use SSL and has some confusing switches, they make sense eventually so to summerise:  You have 3 options to install WCA with SP2013:
    • No SSL (not recommened),
    • SSL Certificates on the WCA servers
    • SSLOffloading (Hardware device such as an F5 or KEMP does the SSL decryption, this saves you distributing certs to the WCA servers but means that the traffic between the NLB and the servers is not encrypted.)
Test your OWA farm install using IE: http://owa-uat.demo.dev/hosting/discovery.  A Web app Open Platform Interface (WOPI)-discovery XML file will open.

References/More Info:

http://blogs.msdn.com/b/uksharepoint/archive/2013/08/06/scripted-installation-of-sharepoint-2013-and-office-web-apps-server-from-the-field-part-4.aspx

http://blogs.technet.com/b/speschka/archive/2012/07/23/configuring-office-web-apps-in-sharepoint-2013.aspx

http://www.wictorwilen.se/office-web-apps-2013-securing-your-wac-farm

http://stevegoodyear.wordpress.com/sharepoint-2013-build-guide/office-web-apps-2013-server-install-and-configuration/

 http://www.sharepointdiary.com/2013/09/install-configure-office-web-apps-with-sharepoint-2013.html

SSRS - Reporting Library lables for SQL Reporting Services

Problem:  I am building a 14 SP 2013 server farm for my client.  I automate the installation of SSRS onto the SP farm (the SQL installation is also automated).  I use Powershell to create a reports library and add the SP SSRS CT's to the library.  On smaller farm installs it all works on my farm the labelled to the CT look odd e.g. $Resource.....


Environment: 10 Search servers, 2 WFE's and 2 App servers.  I have 3 SQL nodes made up of 6 SQL Servers to hold the databases.  This is an Always on Availability Group per 2 SQL servers.  So a dedicated search database, dedicated SP and a SSRS/SSAS SQL cluster.  This is SP2013 with SQL 2013 SP1 on Windows 2008 R2 on VMware.  The install of SP is based off AutoSPInstaller.

Initial Hypothesis:  I was concerned of adding the SQL roles or the version on the app servers where the SSRS service resides, this is not the issue.  It looks like the labels to the CT's are missing in the UI.  It appears to be working from my initial testing, so it is purely a cosmetic bug.

Resolution: I installed the SQL_RS feature on the 2 WFE's and added the services to each VM (i.e. install SSRS Service app on the web front end servers).  The labels show up correctly.  My next test will be to stop the SSRS services on the WFE's. I believe this will still run correctly. 

Note: This is probably a good idea to do anyway as I can easily add the SSRS service at a later stage to more servers without having to install the SQL_RS feature.

Update 2014-03-03:  On a daily build environment consisting of 2 WFE and 4 App servers, I recently had a issue whereby SSRS installed and the SSA for SSRS is created using Powershell.  I can see the SSA and the service running on 2 of the APP servers in the farm.  CA is running on another app server and SSRS is not showing up in CA.  If I install SSRS on the CA box it all shows up in CA.  I assume the feature is not being activate and if activate would show up correctly.

 

Tuesday 27 August 2013

VMware PowerCLI issue using templates to create VMs depending on AD forest level

Problem:  Within my DTAP environment I use VMware vShere v5.01.  Using PowerCLI and a Windows 2008 R2 syspreped template against a Windows 2008 R2 forest level DC, I was creating my VM's in CI and test.  When I got to UAT which needs to join the VM's to the existing enterprise domain, it fails.  The existing domain controller runs at Windows 2003 level.

Work Around: I can manually add login to the VM's and add them to the domain so I know the credentials are correct.  Or manually use PowerCli to join the VM's to the domain.

Resolution: Adjusted the sysprepeped template/OSCustomisation template - network domain user string and then could add the new machine/VM to the domain.


More Info:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1012314
 

Thursday 22 August 2013

SSRS deployment for a developer machine

Problem:  I need to use SSRS 2012 in SharePoint mode on a single SharePoint 2013server.

Background:  On my developer VM I has SQL 2012 and SP2010.  SQL was installed with the "Shared Features":
1) Reporting Services - SharePoint &
2) Reporting Services Add-in for SharePoint products.
I installed the services and SSA and was successful in setting up SSRS.  The problem is when I went to UAT which consisted of WFE1, WFE 2 and SQL Server that will use SSRS.

Determine the Components you will need.  In my case this is:
SQL Server 2012 SP1SQL Server 2012 SP1SharePoint 2010.

Single server SharePoint 2010 and 2013 farms and SQL Server are easy to setup as all the components are installed as part of a Full SQL installation.

Once SharePoint and SQL 2012 SP1 is installed you will see the SQL reporting Services on the farm.  I needed to setup an SSRS SSA:
PS> Install-SPRSService
PS> Install-SPRSServiceProxy
PS> get-spserviceinstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-SPServiceInstance


Create a SQL Server Reporting Services Service Application within Central Admin

Other Info:
Install Reporting Services SharePoint Mode as a Single Server Farm

Summary:  AutoSPInstall proved too difficult for me to implement SSRS on SP2010.  There are a lot of permutations and writing a plug-in for autoinstaller does not warrant the effort.  Farm deployments get complex and it probably best to figure out you own scenario and automate from there.

See my blog post on Installing SSRS 2012 in SharePoint Mode on SP2010 as a starting point.
 

SharePoint BLOB storage for Dummies

Overview: BLOB Storage in SP2007 SP used EBS, SP2010 provided Remote Blob Storage (RBS) capability and SP2010 was backward compatible with EBS, SP2013 does not support EBS.  A common problem with using RBS on SharePoint is orphaned blobs (we need to keep blobs that are outdated by version no or deleted in case you need to do a restore).  This can lead to orphaned blobs – and you need to periodically go and clean-up the blobs.   RBS is enabled at a content database level whereas EBS is per farm. 3rd party RBS providers only need to be installed and configured on the WFE’s not the app servers.

FileStream (local) RBS:  Microsoft SQL server provides Filestream technology which effectively allows SQL to move blobs based on size to remote storage (so no longer stored in the SQL database).  You need to manage backup and recovery yourself and this tends to lead to unused blobs and orphaned blobs.  It also adds overhead to SQL's resources.  The diagram below is how I see Filestream working, the entire SP record is pushed to SQL, SQL adds the stub to the Content database and the blob is moved onto a network file share.



Why Remote RBS?
Microsoft does not have any Remote/externalised blob providers.  All data is stored in your SQL relational databases and not efficient at storing large BLOBs.

With large BLOBs in your content databases:
  • the size becomes harder to manage (think backup and recovery times);
  • database I/O is much more intensive when storing BLOBs; and
  • databases use expensive storage.
Enter the 3rd Party RBS providers : DocAve (AvePoint) has a nice BLOB provider, it can work in real time or retrospectively, backups are cleanly handles and the retention policy is great at cleaning up the old blobs.  This diagram shows how AvePoint provider stores the blob, instead of letting SQL handle the entire record storage, the provider at a SharePoint level, 1st will add the blob to external storage, the location/stub info is sent back to the SP server.  SP then sends the record to SQL including the stub location.  SQL does a lot less work.

Other vendors include: Metalogix, Stealth Software, StorageEdge from (Alachisoft), SimpleStor

Note: RBS does not change the Content Database size restrictions, the BLOBs are still added to the content DB size calc. The 200GB/4TB limit still use the external BLOB size as the records meta data reports the real/external file size, not the 1 kb stub size.

The thinking behind the 200GB/4TB content DB limit is chosen/used because of database density and not database size, i.e. the average number of objects (docs, items, lists etc…) at 200GB/4TB is approaching a point where indexes and query performance suffer. So externalising does not mean that the density is dropped as the stub is still an object that’s in the DB that’s indexed.  However, using blobs suggest there on average are fewer objects compared to another farm that would have smaller average sized objects within it's content db.  My head hurts just writing this.

The advantage of RBS on your farm is that fragmentation is reduced, the cost of storage is cheaper and performance/stability at larger concurrency is improved. Additionally, DR times are also greatly improved.

High Availability: Blobs are not HA, if the blob store/fileshare goes down you loose the blobs.  DFS can be used to replicate the blobs.  Note: Your blob storage pointers in the SQL Content databases will point to the DFS share.  The image below shows you how to setup a DFS share.  Tip: Use domain based DFS.


Windows Distribute File Share (DFS) provides a logical share for adding files/blobs.  The blobs/files are replicate to all physical disks.  If 1 goes down you don't notice and service continues.


More Info:
http://www.metalogix.com/Libraries/Product_Collateral/Using_Windows_DFS_with_SharePoint_Remoted_BLOBs.pdf
http://technet.microsoft.com/en-us/library/cc771058.aspx

Sunday 18 August 2013

Installing SSRS 2012 on SP2013 within a farm

Overview: SSRS in SharePoint mode had a big architecture change before this exact combination of software.  Since SP2010 and SQL 2012 the architecture has been improved to use SharePoint Service Applications. 

Below is a diagram to explain how SSRS works when using SQL Server 2012 SP1 and SharePoint 2013 on-prem.


The high level steps I followed are:
1.> Install SSRS - SharePoint mode using SQL Server 2012 SP1
2.> Install the SQL Server SharePoint Add-in for SSRS feature on 1 or more WFE/App SharePoint servers
3.> On the WFE server ensure the SQL Server Reporting Services Service status is "Online" as show below:
PS> Install-SPRSService
PS> Install-SPRSServiceProxy
PS> get-spserviceinstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-SPServiceInstance
4.> Create a SQL Server Reporting Services Service Application within Central Admin:
5.> Activate PowerView Site Collection Feature. Verify the site collection feature "Power View Integration Feature" is activated.

6.> Verify installation:

  • CA > Manage Servers in the farm > Verify the Service "SQL Server Reporting Services Service"is on the WFE/App server.
  • CA > Manage Services on Server > Select the Server where the SSRS-add-in has been installed and > Verify the "SQL Server Reporting Services Service" service is "Started".
  • Using the Discovery Reports discussed above verify that the SQL Server with SSRS (SP mode is the same SQL version as the web/app servers in the farm (all my servers are version 11.1.3000.0 - SQL 2012 SP1).

  • 7.> Open the Site Collection and create a new "Report Library" as shown below:

    8.> Navigate to the reports library e.g. SSRS Demo.  Click the "Library" tab and the "Library Settings" Ribbon button.  Click "Advanced Settings" and verify the setting "Allow management of content types?" is set to "Yes". 

    9.> Add 3 SSRS reporting content types to the reporting library.  Navigate to the reports library e.g. SSRS Demo. Click the "Library" tab and the "Library Settings" Ribbon button. Click "Add from existing site content types", then add the 3 Report Content Types shown below (if you don't see this check your install steps especially versions of SQL):

    Dodgy Note: Depending on the order that the Site Collection and adding the SSRS service is installed in you may need to activate the following features: on the Site Collection go > Site Settings > Site collection features > Ensure the "Report Server Integration Feature" is enabled.  If you don't see the SSRS reporting Content Types, check out this post.

    10.> Add reports Navigate back to the library and ensure you have the options to add Reports ect.  Upload or create reports and verify SSRS in SharePoint mode is working.


    Note: For more detailed steps look at my series on SharePoint 2010 SSRS using SQL 2012.  As mentioned the architecture is the same so and the steps work on SP2010 and SP2013.  The 1st post is here.

    Part 3 Update (This Post)  - Installing SSRS 2012 SP1 onto a SP2013 Farm



    Updated 01 May 2014: Here is a diagram to show the SSRS components in diagram form so you can understand where the pieces sit.


    More Info:

    http://stevemannspath.blogspot.co.uk/2012/10/reporting-services-2012-integrated-mode.html
    http://msdn.microsoft.com/en-us/library/jj219068.aspx
    http://technet.microsoft.com/en-us/library/bb326289.aspx
    http://get-sharepoint.com/2013/06/sql-2012-ssrs-integration-with-sharepoint/
     
    ============================================================

    Problem:  Installed SSRS on 2 App/WFE servers, PS working but the Servers in farm and services not seeing the SSRS Services are not displaying in CA.


    Resolution:  Installed the SSRS components on the CA machine.
    ============================================================

    Problem: When using PowerGui to create the 'Report Library' that will host my SSRS reports, I can't create the library, while debugging I notice that when i look at the current web I can't retrieve the available 'ListTemplates' whichis returning "$null", I get the following error message on the property: "This operation failed because the QueryInterface call on the COM component for the interface with IID '{BDEADF28-C265-11D0-BCED-00A0C90AB50F}' failed due to the following error: Bad variable type"

    Resolution: My work around was to run the Powershell code out of the native Windows PowerShell cmd prompt.  I think PowerGui is the issue.

    Add SSIS to SQL install

    Problem:  I installed a dedicated database server for SSRS using SQL Server 2012 but I did not add the SQL Server Integration Services (SSIS). 

    Steps to Add SSIS:
    1.> Verify SSIS is missing from the Database Servers.    Tip: SSIS is 1 per machine, not instance based.

    2.> Run the installation binaries/SQL Server Installation Centre and follow the instructions below