martes, 21 de mayo de 2019

Encuestas en SharePoint

Usualmente se realizan encuestas en SharePoint y visualizamos todos los resultados correctamente.

En algunas casos, puede haber usuarios que no completen la encuesta correctamente, no finalizan la misma o cierran el navegador antes de completar. Si esto sucede sólo el usuario podrá visualizar los resultados de su encuesta, y aunque seamos administradores de la colección de sitios no es posible visualizar los resultados de encuestas incompletas.

Para poder identificar los usuarios que no completaron la encuesta correctamente, podemos realizar la siguiente consulta en la base de datos de contenido desde SQL Server.

Select userdata.tp_author,
(Select tp_Title from UserInfo where UserInfo.tp_ID=userdata.tp_author and tp_siteID=’REPLACEWITHSITEID’) As UserName
from USERDATA
where tp_ListId like ‘REPLACEWITHLISTID
and tp_level = 255

Results
408 Sol Perez
236 Silvina Luna
33 Pampita
163 La Mar en Coche
274 LaLaLa


Para obtener el ID del sitio, podemos obtenerlo desde la URL cuando ingresamos a

Central administration > Application Management > Site Colelction Administrators and select the site collection

https://CENTRALADMIN/_admin/owners.aspx?SiteId=4a41adbe-34a7-414b-a359-aea0123f279c

Para obtener el ID de la lista, abrir la encuesta en el navegador y también visualizaremos el ID en la URL:

> Settings > Survey Settings. Now select Audience targetting settings.

http://SiteCollection/_layouts/ListEnableTargeting.aspx?List={ce8fe2c5-7fbc-4b9f-b13e-4553be585385}

lunes, 17 de septiembre de 2018

Sitios de SharePoint cargan muy lento! (SPCertificateValidator.Validate)

Hemos pasado los últimos días trabajando en un problema de rendimiento al intentar cargar cualquier sitio de la granja SharePoint 2010.

Experimentamos lentitud al desproteger documentos, al navegar entre bibliotecas y para cualquier acción que cargue una página de SharePoint en diferentes Web Applications.

Descartamos todo tipo de verificaciones habituales:

  • No había bloqueos en SQL.
  • No había carga importante a nivel de base de datos.
  • No se implementaron nuevas soluciones.
  • No se implementaron actualizaciones de ningún tipo.
  • No había gran cantidad de usuarios conectados.
  • No se ejecutaban procesos.
  • No se ejecutaban full crawls en el servicio de búsqueda. 
  • Reiniciamos servicios de SharePoint, IIS, y Failover Cluster de SQL.
A pesar de que todo parecía normal a nivel de Infraestructura, los sitios cargaban con un delay mayor a 30 segundos. Insoportable! jaja.

No había eventos desde el sistema operativo o eventos en el log de SharePoint que llamara nuestra atención con algún mensaje de error o falla de conexión a algún servidor. OK..... y ahora?... 


Entonces vimos que al cargar las páginas, el elemento/acción que generaba mayor demora era el llamado SPCertificateValidator.Validate (tardaba más de 20 segundos).

Una explicación rápida de esto es que un componente en la página está intentando verificar la validez del certificado de la "autoridad raíz de SharePoint". Como no puede encontrarlo en los certificados raíz de confianza, Windows intenta realizar la validación en la red y causa demora. 

Con respecto a este problema, definimos el mismo como un bug de SharePoint. El cual tiene solución completando los pasos del siguiente KB oficial de Microsoft. 

.
Una vez implementados los cambios el elemento SPCertificateValidator.Validate paso a tardar menos de 1 segundo, lo cual resolvió por completo el problema de lentitud. 

Espero que les sirva y evitar gran cantidad de horas en problemas de lentitud. 

Saludos
Emmanuel Gutierrez












jueves, 12 de abril de 2018

SharePoint 2013 on Windows Server 2012 R2 : The tool was unable to install Application Server Role, Web Server (IIS) Role


Hi There, 

I spent hours to troubleshoot this issue while installing SharePoint 2013 Prerequisites on Windows Server 2012 R2 but no gain. I have installed IIS and its features manually but still did not work.

The tool was unable to install Application Server Role, Web Server (IIS) Role


The Logs Shows Below

1. Error: Startup task doesn’t exist. This is not a continuation after a restart

2015-02-10 15:58:56 – C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\SharePointServerPreparationToolStartup_0FF1CE14-0000-0000-0000-000000000000.cmd
2015-02-10 15:58:56 – Error: Startup task doesn’t exist. This is not a continuation after a restart.
2015-02-10 15:58:56 – Locating the following command line arguments file:
2015-02-10 15:58:56 – E:\PrerequisiteInstaller.Arguments.txt

2. Error: [In HRESULT format] (-2147024894)

2015-10-02 15:59:02 – Created thread for installer
2015-10-02 15:59:02 – “C:\Windows\system32\ServerManagerCmd.exe” -inputpath “C:\Users\ADMINI~1\AppData\Local\Temp\PreB8C.tmp.XML”
2015-10-02 15:59:02 – Error: Unable to install (2)
2015-10-02 15:59:02 – Error: [In HRESULT format] (-2147024894)
2015-10-02 15:59:02 – Last return code (2)
2015-10-02 15:59:02 – Reading the following DWORD value/name…

Error: The tool was unable to install Application Server Role, Web Server (IIS) Role

SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
2015-10-02 15:59:02 – Error: The tool was unable to install Application Server Role, Web Server (IIS) Role.
2015-10-02 15:59:02 – Last return code (2)
2015-10-02 15:59:02 – Options for further diagnostics: 1. Look up the return code value 2. Download the prerequisite manually and verify size downloaded by the prerequisite installer. 3. Install the prerequisite manually from the given location without any command line options.
2015-10-02 15:59:02 – Cannot retry


Things i have done which didn't helped actually.

1. Manually installed IIS and its Features
2. Manually enabled Framework 4.5 and 3.5 features
3. Edited Local Group Policy and ran the prerequisites installer but still didn't work

Solution:

A big thanks to my lead Mr. Shahid Sheraz for sitting beside me and showing this post that he wrote.

I found the same solution here too. Quick steps are below.

1. Go to C:\Windows\system32\ and locate file ServerManager.exe
2. Copy and rename the file with ServerManagerCmd.exe
3. Run the Prerequisites wizard again. 

Enjoy :)

Happy SharePointing...!

martes, 20 de marzo de 2018

SharePoint 2013 - Distributed Cache: There is a temporary failure. Please retry later.

Following communication issue occurred in my test environment (two-tier farm) after the initial set up and I was forced to reconfigure the Distributed cache.

Events:

1. ErrorCode ERRCA0017, SubStatus ES0006 (RetryLater / CacheServerUnavailable)
Exception in SPDistributedCachePointerWrapper::InitializeDataCacheFactory for usage 'DistributedLogonTokenCache' - Exception 'Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode<ERRCA0017>:SubStatus<ES0006>:There is a temporary failure. Please retry later. (One or more specified cache servers are unavailable, which could be caused by busy network or servers. For on-premises cache clusters, also verify the following conditions. Ensure that security permission has been granted for this client account, and check that the AppFabric Caching Service is allowed through the firewall on all cache hosts. Also the MaxBufferSize on the server must be greater than or equal to the serialized object size sent from the client.). Additional Information : The client was trying to communicate with the server : net.tcp://SP2013:22233     at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody, RequestBody reqBody)     at Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCacheProperties(RequestBody request, IClientChannel channel)     at Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName)     at Microsoft.SharePoint.DistributedCaching.SPDistributedCachePointerWrapper.InitializeDataCacheFactory()'
2. No connection could be made because the target machine actively refused it.
Unexpected Exception in SPDistributedCachePointerWrapper::InitializeDataCacheFactory for usage 'DistributedLogonTokenCache' - Exception 'Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode<ERRCA0017>:SubStatus<ES0006>:There is a temporary failure. Please retry later. (One or more specified cache servers are unavailable, which could be caused by busy network or servers. For on-premises cache clusters, also verify the following conditions. Ensure that security permission has been granted for this client account, and check that the AppFabric Caching Service is allowed through the firewall on all cache hosts. Also the MaxBufferSize on the server must be greater than or equal to the serialized object size sent from the client.) ---> System.ServiceModel.EndpointNotFoundException: Could not connect to net.tcp://sp2013:22233/. The connection attempt lasted for a time span of 00:00:00. TCP error code 10061: No connection could be made because the target machine actively refused it 10.0.0.20:22233.  ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 10.0.0.20:22233     at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)     at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)     at System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)     --- End of inner exception stack trace ---    Server stack trace:      at System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)     at System.ServiceModel.Channels.BufferedConnectionInitiator.Connect(Uri uri, TimeSpan timeout)     at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)     at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)     at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)     at Microsoft.ApplicationServer.Caching.CacheResolverChannel.Open(TimeSpan timeout)     at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)     at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)    Exception rethrown at [0]:      at System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase)     at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData)     at Microsoft.ApplicationServer.Caching.CacheResolverChannel.OpenDelegate.EndInvoke(IAsyncResult result)     at Microsoft.ApplicationServer.Caching.ChannelContainer.Opened(IAsyncResult ar)     --- End of inner exception stack trace ---     at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody, RequestBody reqBody)     at Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCacheProperties(RequestBody request, IClientChannel channel)     at Microsoft.ApplicationServer.Caching.DataCacheFactory.GetCache(String cacheName)     at Microsoft.SharePoint.DistributedCaching.SPDistributedCachePointerWrapper.InitializeDataCacheFactory()'

Cause:

The server was not listening on ports 22233-22266. 


Solution:


1. At the SharePoint Management Shell command prompt, run the following Command stop-spdistributedcacheserviceinstance -graceful on all cache hosts.

2. At the SharePoint Management Shell command prompt, run the following command remove-spdistributedcacheserviceinstance on all cache hosts.

3. Execute the SharePoint Products Configuration Wizard on all SharePoint servers.

4. At the SharePoint Management Shell command prompt, run the following Command add-spdistributedcacheserviceinstance on all cache hosts.

SharePoint 2013 and 2010 : The trial period for this product has expired

You cannot extend the trial. You can license the full product by getting a paid-for license key, then in Central Administration > Upgrade and Migration > Convert Farm License Type. Enter the  product key > Upgrade. Now the license and expiration date are held within the Configuration database, the only way to “extend” a trial is to rebuild the farm from scratch.
Or you can follow below unsupported method.
There is a way we can modifying your SQL Server databases. This is an unsupported method so make sure you backup your config database first before continuing.
To do so follow below steps > Open SQL server management studio > connect your SQL instance.

Right click your configuration database (Which by default should be ‘SharePoint_Config’ ) > Select “New Query” on top.


Copy paste below query in the new query window
UPDATE Objects
SET Properties = Replace(Properties, 9223372036854775807, 92233720368547758)
WHERE ClassId = ‘4274DBC4-7D52-474F-961B-58D84F5C28FF’

Execute this query from top.
Now go to Central Administration > Upgrade and Migration > Convert farm license type. You should be able to input your new Product Key now and hit OK.

jueves, 15 de marzo de 2018

NO WINDOWS IDENTITY FOR DOMAIN\USER (IN ULS LOG)


I got this error together with some issues caused by an outdated SSL certificate (SP 2013 farm).
To fix it do this steps on all SharePoint servers:
1. Browse: C:\Program Files\Windows Identity Foundation\v3.5
2. Edit c2wtshost.exe.config
3. Add <add value=”NT AUTHORITY\Authenticated Users” /> to the <allowedCallers>
The modified file will look like this:
You will probably also need to restart the server.

viernes, 19 de mayo de 2017

Migrate SharePoint 2010 Search Thesaurus to SharePoint 2013


SharePoint 2013 changes the file format of the Thesaurus used for query synonym expansion. This script transforms the Thesaurus files used by SharePoint 2010 into a Thesaurus file that is suited for upload to SharePoint 2013.


https://gallery.technet.microsoft.com/office/Migrate-SharePoint-2010-43ad3c6d