Tuesday 17 September 2013

OWA patch issue - Windows Update KB2592525 must be installed

I followed the Technet instruction to install OWA 2013 on Windows 2012 which are clear but did cause me to have this hiccup.

Problem:  After installing OWA 2013 binaries I try to create my new farm on Windows 2008 R2 using the PS cmd>New-OfficeWebAppsFarm –InternalURL "http://servername" –AllowHttp -EditingEnabled
I receive the following error: "New-OfficeWebAppsFarm : The operation failed. The server did not meet the following prerequisites: - Windows Update KB2592525 must be installed."

Initial Hypothesis: I have already installed the OWA pre-requisites and KB2592525 is part of the "Windows PowerShell 3.0" pre-requisite. 

Resolution: I downloaded the KB for Windows 2008 R2 and try install it.  It fails with the erro saying that the kb is not for this version of Windows (This update is not applicable to your computer).  So this failed now I'm getting rather irratated with Microsoft and the OWA install.  Failed, and I need to define a new problem.


Problem:  I can't install the download KB2592525.

Resolution: I found this post explaining how to fix my error "When you try to install Lync WAC server (Office wen apps server 2013) on Microsoft Windows server 2008 R2 SP1 you may have this error while installing KB2592525 required update (This update is not applicable to your computer)."


While routing arround my OWA Server, I noticed that the Windows Service "Office Web Apps" has not started.  It fails if you try start it.
 My event Viewer show the following error "The Farm settings are invalid...":
This is correct, the service only starts when the new OWA farm is created.
Note: The Windows Service "Office Web Apps" will only start once the New farm is created, not when the OWA binaries are installed. 

Retrieveing Versions

Overview:  I repeatedly need to determine versions of software and patches so this post holds common requests to verify versions that I need.

.NET framework versions installed:
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | Get-ItemProperty -name Version -EA 0 | Where { $_.PSChildName -match '^(?!S)\p{L}'} | Select PSChildName, Version


Version of Powershell on a machine:
$psversiontable.psversion



Version of your SharePoint farm:
 PS> (get-spfarm).buildversion

Version of Office Web Apps 2012/WCA:
The easiest way to get the OWA version is to make an http/https request to your WCA server and the version number is returned in the response header.
I use IE and fiddler so I can view the traffic to the url https://wca.demo.dev/m/met/particiapant.svc, you will get a 302, but your can see the version return in the https response header.
15.0.4481.1005 is WCA 2013 with the March 2013 CU.
15.0.4420.1017 is WCA 2013 RTM.

The approach below does not work:
PS>
((Get-ChildItem hklm:\software\microsoft\windows\currentversion\uninstall | Where-Object {$_.PSChildName -Like "*WacServer"}) | Get-ItemProperty).DisplayVersion

from http://blogs.technet.com/b/sammykailini/archive/2013/09/20/how-to-find-the-version-or-build-number-for-an-office-web-apps-2013-farm.aspx

It should show version 15.0.4481.1005 for me.  Note: I upgraded an original WCA RTM install.

A good PS approach:
 

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