lunes, 30 de enero de 2017

Nuevo contenido Actualizado de Azure

Ya esta disponible el nuevo contenido para la comunidad sobre Azure en github.   

Dentro del contenido tenemos  los siguientes temas:


  1. Advanced Analytics /Power BI
  2. Big data and Analytics
  3. Cloud Computing
  4. Data
  5. DevOps 
  6. IoT o el Internet de las cosas 
  7. Mixed Realitiy Hololens
  8. Mobile Development
  9. Open Dev Framework
Alli encontraras Presentaciones, Laboratorios, Scripts, Codigo, Demos y soluciones de VS completas.

Así que a indigar y aprovechar este contenido actualizado.




Azure4Fun!,

Juan Manuel Herrera



Curso Nivel Intermedio de Xamarin completamente en Español

No te pierdas el curso de nivel intermedio totlamente en español sobre desarrollo Movíl con Xamarin.  
Xamarin es una herramienta incluida en cualquier edición de Visual Studio gratuita para desarrollar aplicaciones móviles nativas (Android, IOs, Windows Phone) pero programadas en C#.



Inscribete aquí:


Te veo en el curso.

Xamarin4Fun!,


Juan Manuel Herrera Ocheita

domingo, 22 de enero de 2017

Reporte de Uso en SharePoint 2016 reporta ceros en visitas y usuarios únicos más no en las consultas de búsqueda

Este error ha sido muy común desde la versión SharePoint Server 2013, al parecer unificar en el servicio de búsqueda con las estadísticas de uso del portal, no ha sido una experiencia muy positiva ni para los que administramos las granjas de SharePoint ni para los usuarios que analizan la información que es brinda el reporte de consumo si la comparamos con las gráficas de SharePoint 2010 que nos daban mucho más información.

Primero veamos el diseño de la arquitectura de los componentes que intervienen en las estadísticas de SharePoint.


Este diagrama es de SharePoint 2010, pero en 2013 y 2016 no ha cambiado mucho.   Aunque es parte de el servicio de Search de SharePoint, los componentes que lo integran aún son parte del diseño que viene de la versión 2010.  Ahora en el diagrama modifque algunas etiquetas para actualizarlo más posible a la versión reciente y entendamos que componentes intervienen en las estádisticas de uso de SharePoint 2016.

La arquitectura del servicio de búsqueda de SharePoint 2016 a nivel mas amplio puede revisarse en los diagramas disponibles de arquitectura del sitio de technet.  Para apreciar mejor la imagen puedes visitar el siguiente enlace:
https://msdn.microsoft.com/en-us/library/office/jj163300.aspx. el proceso Analytics Processing Component es responsable de procesar las estadísticas tanto de uso como de consulta.


Para comprender donde puede fallar las estadísticas de uso de SharePoint 2016, necesitamos  evaluar cada componente y servicio que integra la solución para generar las estadísticas de uso.   Por ello veremos cada parte que la integra a continación:

Por Aplicación de Servicios
Por Aplicación de Servicios los componentes involucrados para que el reporte de uso funciona son

Search Service o Servicio de Búsqueda
Aplicación de Servicio de busqueda compuesto por los siguientes componentes:
Administration, Crawler, Content Processing, Analytics Processing, Query Processing, Index Partition.

WSS_UsageApplication
Servicio para capturar la salud de la granja y uso de las aplicaciones Web.

State Service Application
Servicio para almacenar temporalmente la información de las sesiones de los usuarios, requerido por servicios como InfoPath y WSS_UsageApplication

Por Bases de Datos

Search_Service_Application_AnalyticsReportingStoreDB 
Base de datos del servicio de búsqueda del componente
WSS_Logging
Base de datos derl servicio WSS_UsageApplication
SharePoint_StateService
Almacena temporalmente la sesión del usuario

Por Timer Jobs de la granja

Microsoft SharePoint Foundation Usage Data Import
Importa los archivos usage log para la base de datos WSS_Logging.
Microsoft SharePoint Foundation Usage Data  Maintenance
Ejecuta mantenimiento a la base de datos WSS_Logging
Microsoft SharePoint Foundation Usage Data Processing
Registra el uso de las aplicaciones web en los archivos de usage log 

Por archivos en el file system

Los archivos .usage almacenados en la ubicación configurada en Usage and Health data Collection.  Si no fue modificada la ubicación predeterminada puede ubicarla en la siguente ruta: %SytemDrive%\Program Files\Common Files\Microsoft Shared\Web Server Extensions\[SharePoint Version]\Bin\Logs.

Estos archivos son trasladados a la base de datos wss_logging.

Los archivos .log almacenados en la carpeta EventStore que de forma predeterminada la ubicación es %SystemDrive%\Program Files\Microsoft Office Servers\[SharePoint Version]\Data\Office Server\Analytics_[Guid]\EventStore\[Day of the Date]

Finalmente ahora veamos que validaciones debemos de hacer cuando el reporte nos despliega cero en las visitas y usuarios únicos.

VALIDACIONES

1. Configuración de Usage and Health data Collection

Para ello debe ir al Central Administration, Monitoring, Configure usage and health data collection
Validar que este seleccionado el checkbox Enable Usage data collection 
Validar que esten seleccionados los eventos por lo menos Page Requests
Validar la ubicación del directorio donde se almacenan los archivos usage en: Usage Data Collection Settings, Log file location:
Validar que este configurado Logging DataBase la casilla Databaseserver y DatabaseName


2. Definición de Trabajos en el TimerJob de SharePoint

Validar que las definiciones de trabajo del Timer Job esten habilitadas y calendarizadas de la siguiente forma:


3. Ejecución del State Service o Servicio de Estado de Sesión


Validar que el State service este creado sino ejecutar en SharePoint 2016 Management Shell la sigientes líneas de comando:

$serviceApp = New-SPStateServiceApplication -Name "StateService App"
New-SPStateServiceDatabase -Name "SharePoint_StateService" -ServiceApplication $serviceApp
New-SPStateServiceApplicationProxy -Name "StateService App Proxy" -ServiceApplication $serviceApp -DefaultProxyGroup


4. WSS_UsageApplication Proxy este Iniciado


Si el proxy de este servicio aparece not started es necesario provisionarlo de nuevo con las siguientes líneas:


Get-SPServiceApplicationProxy
$usage = Get-SPServiceApplicationProxy -Identity [Guid de WSS_UsageApplication]
$usage.Provision()

5. Existencia de Archivos .usage

Verificar la ubicación de los archivos .usage y la fecha ultima de creación de los archivos
Monitoring, 

Para ello debe ir al Central Administration, Monitoring, Configure usage and health data collection
Validar la ubicación del directorio donde se almacenan los archivos usage en: Usage Data Collection Settings, Log file location:

Luego validar que los archivos .usage existan con fecha actual.  En caso de no estar deberá validar que este habilitado la configuración de Usage and Health data Collection (punto no.1).

6. Validar si los reportes ya generan datos un día después
Lamentablemente no hay forma de visualizar esta información sino un día después, asi que habrá que esperar.


SharePoint4Fun,

Juan Manuel Herrera Ocheita


lunes, 9 de enero de 2017

Job de Papelera de Reciclaje puede provocar caida de un sitio en SharePoint

Este caso nos tuvo casí un mes en la búsqueda de la causa del problema.



El problema:

La colección de sitios principal y primaria de SharePoint reportaba caídas aleatorias en las mañanas entre las 6 y 7 de la mañana.  Esto no sucedia a diario y la forma de corregir el problema era que el usuario reiniciaba tanto el servidor de SQL Server como el Front-End.

El Error:

01/06/2017 06:12:40.46  w3wp.exe (0x05C8)                        0x1624 SharePoint Foundation          Database                       fa45 High     System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.     at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)     at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)     at System.Data.SqlClient.SqlConnection.Open()     at Microsoft.SharePoint.Utilities.SqlSession.OpenConnection() cc94ec34-1e2f-46d3-a524-1aa20ebf64e4
ConnectionString: 'Data Source=SQL_ALIAS_NAME;Initial Catalog=WSS_Content_xxxxx;Integrated Security=True;Enlist=False;Asynchronous Processing=False;Connect Timeout=15'

El Escenario:
Versión de SharePoint Server: 2010
Edición de SharePoint Server: Enterprise
Versión de actualización de Producto: 14.0.6109.5002 (SP1 + Cu Agosto 2012)
Versión Sistema Operativo: Windows 2008 R2 Enterprise SP1 (Fuera de Soporte)
Versión de SQL Server: SQL Server 2008 R2 SP1 (Fuera de Soporte)
Cantidad de Servidores 3:  1 Servidor Front-End/App Server  2 Servidores SQL Server
Configuración de Servidores:


Front End (Fisico)
16 GB RAM
2 procesdores
2 Discos (1 hd 200 Gb, 2 hd 150 Gb)
BackEnd 1 (Fisico)
16 GB RAM
2 procesdores
2 Discos (1 hd 200 Gb, 2 hd 2 Tb)
BackEnd 2 (Virtual)
2 procesdores
2 Discos (1 hd 200 Gb, 2 hd 300 Gb)
Tamaño de base de datos de contenido  principal (1.4 TB)

La causa:
SharePoint Server 2010 en adelante tiene un proceso de limpieza de la papelera de reciclaje de cada base de datos de contenido llamada Recycle Bin (Podemos encontrar en la sección de monitoreo ) Job Definitions.  Este proceso intentaba eliminar una biblioteca de 500 Gb que fue eliminada hace un mes y el tiempo definido para ejecutar este proceso 5 horas no era suficiente para eliminarla, por lo que mantenia ocupada la conexión o bien realizaba intentos fallidos hasta que agotaba las conexiones disponibles en el pool de conexiones hacia la base de datos y esto provocaba el error.



Se logró ubicar el problema, cuando en vez de iniciar los servidores y luego de reportados se empezo a validar lo siguiente:

1) Que Los recursos de los servidores de la granja estuviesen a bajo del 80% de uso y así estaban por debajo.
2) Que el servicio del IIS estuivese corriendo y no tuviese ningún sitio abajo (y estaba corriendo sin reportar problemas de hecho el central administration funcionaba)
3) Que el servicio de SQL Server de los dos servidores de SQL Server estuvise funcionando y corriendo ( efectivamente funcionaban correctamente)
4) Que el sitio estuviese accesible (aquí fallaba y daba un error 500 servicio no disponible)
5) Validó los jobs que estaban en ejecución y allí se encontró el Recyclebin ejecutandose 3 horas antes y estaba al 50%.
6) Se validó el contenido de la papelera de reciclaje y en segunda fase tenie una biblioteca de 500 GB.

La Solución Alterna:
Se deshabilitó el job de limpieza de la papelera de reciclaje para la aplicación web que contiene esta bilbioteca que no logra eliminar.



La Solución Definitiva:
La granja se planificó migrar a un ambiente virtual el cual tiene mucho mas capacidad de procesamiento y en donde este proceso de limpiza si finalizá con éxito y más rápido.  Además de distribuir el contendio de tal forma que se reduzca el tamaño de la base de datos de contenido principal depurando el contenido o moviendolo a una nueva base de datos esto trea consiguo mayor esfuerzo administrativo para el contenido pero lo hace más manejable.

Lección aprendida:
Configurar la depuración de la papelera en un porcentaje menor evitará que permita almacenar 500 GB en la segunda fase.  Distribuir el contenido y hacer un plan de gobierno es una práctica poco adoptada pero muy necesaria para evitar estos problemas a largo plazo.  Monitorear los servicios de la papelera que demoren mas de una hora para validar sus efectos en dicha demora.  También la programación del job de la papelera debe contemplarse su ejecución manual cuando el contenido es arriba de 200 GB y la capacidad de los servidores de la granja actual.

SharePointHardLesson,

Juan Manuel Herrera Ocheita




Una línea de comando de PowerShell sencilla pero poderosa en su contenido SharePoint 2010,2013,2016

Distribuir contenido es de vital importancia, pero cuando son muchas las bases de datos y colecciones de sitios creadas al restaurar una granja se complica saber donde esta la colección de sitios, por lo que es importanet que contenmos con un listado de las aplicaciones web, sus colecciones y base de datos de contenido.
 
Cuando creamos de cero una granja y deseamos montar manualmente las base de datos de contenido, es importante saber cual es la base de datos de contenido que tiene la colección de sitios primaria ya que esta debe de restaurarse de primera instancia. 

También es importante cuando el contenido esta distribuído que base de datos de contendio tiene la colección de sitios que deseamos restaurar.




El comando deberá ejecutarse desde un servidor de SharePoint desde SharePoint Management Shell.  Y la línea de comando  es la siguiente:

Get-spsite -Limit all | select url, webapplication, contentdatabase | Export-Csv e:\infoware\listados\ColeccionesSitios.csv -NoTypeInformation

Url WebApplication ContentDatabase
http://miportal SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content
http://miportal/logistica SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_DataCross
http://miportal/portales SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Portales
http://miportal/sites/permisos SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Search_Center
http://miportal/sites/apps SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=SharePoint_OC
http://miportal/sites/capacitacion SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=SharePoint_OC
http://miportal/sites/inversiones SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Inversiones
http://miportal/sites/seguridad SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content
http://miportal/sites/Proyectos SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_ProyectosIT
http://miportal/sites/prueba_EC SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Esthela_Prueba
http://miportal/sites/search SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Search_Center
http://miportal/sites/sharedspace SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_SharedSpace
http://miportal/sites/temp SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content
http://miportal/sites/temporal SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_ProyectosIT
http://miportal/sitios/rrhh SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=SharePoint_OC
http://miportal/sitios/prueba3 SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Esthela_Prueba
http://miportal/sitios/test SPWebApplication Name=SharePoint - 80 SPContentDatabase Name=WSS_Content_Portales
http://miportal:21387/sites/prueba SPWebApplication Name=Aplicacion Prueba SPContentDatabase Name=WSS_Content_PRUEBA
http://miportal:21387/sites/prueba2 SPWebApplication Name=Aplicacion Prueba SPContentDatabase Name=WSS_Content_PRUEBA
http://miportal:21387/sites/prueba3 SPWebApplication Name=Aplicacion Prueba SPContentDatabase Name=WSS_Content_PRUEBA
http://miportal:24301/sites/prueba SPWebApplication Name=Sitio Federado SPContentDatabase Name=WSS_Content_SITIOFEDERADO

En este ejemplo ficticio vemos que la base de datos de contenido primaria se llama WSS_Content.


Esta será la primera que debemos de montar a través del comando

mount-SPContentDatabase -Name Wss_Content -url http://miportal

Para más información sobre el comando puede utilizar la siguiente línea de comando:

get-help mount-SPContentDatabase -full

Eso esto por este artículo.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita





lunes, 2 de enero de 2017

Cómo habilitar Distribute Cache en un Servidor Custom Role SharePoint 2016

Distribute Cache es un MinRole en SharePoint 2016.  Pero que pasa si no tenemos los servidores requeridos para separar este Rol entonces debemos de habilitarlo en un  Custom Role que es diremos la forma tradicional de hacerlo.

No hay una referencia documentada oficial aún para hacerla, pero el sentido común nos puede guiar y es que la forma de habilitarlo vía powershell en SharePoint 2013 debería ser la forma en que podemos habilitarlo en SharePoint 2016 en un Custom Role.

Si deseas saber mas sobre MinRoles puede ser este post que escribí hace algún tiempo:

https://jmhogua.blogspot.com/search?q=minrole

Retornando al tema entonces debemos  primero ir al servidor que tiene el Custom Role.  Para saber cual es podemos verlo desde el Central Administration, System Settings, Convert server role in this farm.



Luego vemos el rol de cada servidor

Entonces en el servidor con Role Custom este levantamos una instancia de Management Shell for SharePoint 2016 y ejecutamos el comando Add-SPDistributeCacheServiceInstance.


Y eso es todo ya se provisionó el Distribute Cache en ese servidor.  Ahora si vemos en el Central Administration los servicios corriendo en ese Servidor nos despliega el servicio.



Y eso es todo.

SharePointFun,

Juan Manuel Herrera Ocheita