viernes, 30 de agosto de 2013

File not found–Feature Activation Sharepoint 2010

Al activar una feature me lanza el siguiente error.”File Not Found”

image

La solución tenía un event receiver, que se le attachaba a una librería específica en un site específico. EJ: sharepoint.com/sites/test

Pero sin darme cuenta, quería activar la feature en el siguiente site sharepoint.com/sites/demo, por lo tanto al activarse la feature, y buscar la librería específica, no encontraba la misma.

image

domingo, 25 de agosto de 2013

Error al ejecutar psconfig–Configuration Wizard Sharepoint 2013

Al ejecutar el wizard de Sharepoint 2013, me lanzaba el siguiente error.

"Internet Information Services is not installed. You must have Internet Information Services installed in order to use the SharePoint Products Configuration Wizard."

image

El problema era que el servicio IIS Admin Service estaba disabled, el cual permite administrar la metadata del IIS en Windows Server 2012.

image

Sharepoint 2013 CU Junio 2013

Tratando de instalar el CU de Junio de Sharepoint 2013, al ejecutar psconfig para finalizar la instalación, me lanzaba el error que faltaban features (relacionadas al CU de junio) instalar en un par de servers, pero ya se había instalado el CU y se había reiniciado los servers.

Error: Missing on “Server”

Error: Some farm products and patches were not detected on this or other servers. If products or patches are missing locally, you must quit this program and install the required products and patches on this server before restarting this wizard.

image

Entonces lo que hice es ejecutar el siguiente comando

Get-SPProduct –local

Este comando refresca la información de hotfix instalados en el servidor local en la base de configuración. Una vez realizado la ejecución de este comando en cada servidor, actualizo (Refresh) el configuration wizard.

 

Para saber que Software falta instalar puede ejecutar el siguiente comando:

$spprod = Get-SPProduct
$spprod.Servers | select ServerName, Products, InstallStatus
$spprod.Servers | ? { $_.InstallStatus -eq "InstallRequired" } | % { $_.RequiredButMissingPatches }

Status Message

Description

No action required

Upgrade is complete on the database.

Upgrade in progress

Self-explanatory. This message will change once the database is upgraded.

Database is too old and upgrade is required

The database is outside of compatibility range and must be upgraded.

Database is in compatibility range and upgrade is recommended

The database is running within compatibility range, but can be upgraded.

Database is up to date, but some sites are not completely upgraded.

The schema of the database was successfully upgraded, however some children (site collections) within the database have failed to be completely upgraded within this content database.

Database is too new and is not supported

The database is outside of compatibility range and cannot be used by the farm because it is at a higher version level than the farm supports. Note, this shouldn’t occur for connected databases but can be reported when attempting to attach a database.

Installed

Shown to indicate that no action is required.

Missing/Required

Shown if a product is required on each server or if a patch for a given MSI is on one server but not the one this status is shown for.

Missing/Optional

Shown if a product is not required on each server.

Superseded

Shown if a patch is no longer required on a server because a newer patch supersedes it.

En el caso que necesites upgrade las bases de contenido, puedes ejecutar el siguiente script

Get-SPContentDatabase | select Name, NeedsUpgrade

 

Status Message

Description

No action required

Upgrade is complete on the database.

Upgrade in progress

Self-explanatory. This message will change once the database is upgraded.

Database is too old and upgrade is required

The database is outside of compatibility range and must be upgraded.

Database is in compatibility range and upgrade is recommended

The database is running within compatibility range, but can be upgraded.

Database is up to date, but some sites are not completely upgraded.

The schema of the database was successfully upgraded, however some children (site collections) within the database have failed to be completely upgraded within this content database.

Database is too new and is not supported

The database is outside of compatibility range and cannot be used by the farm because it is at a higher version level than the farm supports. Note, this shouldn’t occur for connected databases but can be reported when attempting to attach a database.

En el caso que hayas instalado todo el SW requerido, y te siga apareciendo el mensaje de error de “Missing on”, puedes ejecutar PSConfig  con el parámetro “-noinstallcheck”, este ignora la verificación del patch en los servers.

PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures -installcheck -noinstallcheck.

Algunos links útiles:

http://blogs.msdn.com/b/russmax/archive/2013/04/01/why-sharepoint-2013-cumulative-update-takes-5-hours-to-install.aspx

http://blogs.msdn.com/b/kaevans/archive/2013/06/11/sharepoint-2013-kb2726992-the-installation-of-this-package-failed.aspx

martes, 20 de agosto de 2013

Global Search Center URL para Sharepoint 2013

Una posibilidad es setearlo en el Central Administration

image

Otra posibilidad es usar powershell

$ssa = Get-SPEnterpriseSearchServiceApplication
$ssa.SearchCenterUrl = <newURL>
$ssa.Update()

En el caso que quieras resetear la url, puedes pasarle “” a la url.

$ssa = Get-SPEnterpriseSearchServiceApplication
$ssa.SearchCenterUrl = “”
$ssa.Update()

En el caso que lo quieras setear por site collection, lo puede cambiar en la configuración del sitio.

image

SharePoint 2013 Search Settings and the Search Box drop down menu

SharePoint 2013 Search Settings and the Search Box drop down menu

En el caso que lo quieras setear a nivel de site, puedes hacerlo en el siguiente link

image

image

también puedes agregar los items del drop down menu

image

Puedes setear la configuración también vía powershell:

SetearA_NivelSite –>setea el site collection y todos sus webs con la configuración

SetearA_NivelWeb –> setea el web con la configuración.

function SetearA_NivelSite($UrlSite,$URLSearchCenter,$UrlPaginaResultado)
{
$site = Get-SPSite $UrlSite
$site.AllWebs | ForEach-Object {
$web = $_
$web.AllProperties["SRCH_SB_SET_WEB"] = '{"Inherit":false,"ResultsPageAddress":"'+$UrlPaginaResultado+'","ShowNavigation":false}'
$web.AllProperties["SRCH_ENH_FTR_URL_WEB"] = $URLSearchCenter
$web.Update()
}
}


function SetearA_NivelWeb($UrlSite,$URLSearchCenter,$UrlPaginaResultado)
{
$web = Get-SPWeb $UrlSite
$web.AllProperties["SRCH_SB_SET_WEB"] = '{"Inherit":false,"ResultsPageAddress":"'+$UrlPaginaResultado+'","ShowNavigation":false}'
$web.AllProperties["SRCH_ENH_FTR_URL_WEB"] = $URLSearchCenter
$web.Update()
}


SetearA_NivelSite http://bi.sharepoint.com http://social.sharepoint.com/searchcenter http://sharepoint.com/searchcenter/Pages/Results.aspx

domingo, 18 de agosto de 2013

Error al realizar un upgrade mediante PSconfig – Sharepoint 2013

Al tratar de realizar un upgrade mediante el siguiente comando

PSCONFIG.EXE -cmd upgrade -inplace b2b -wait –force

Me lanzo el siguiente error.

An exception of type Microsoft.SharePoint.Administration.SPUpdatedConcurrencyException was thrown.  Additional exception information: An update conflict has occurred, and you must re-try this action. The object SPUpgradeSession Name=Upgrade-20130818-082650-609 was updated by XXXXXXX, in the PSCONFIG (10400) process, on machine XXXXXXX.  View the tracing log for more information about the conflict.
Microsoft.SharePoint.Administration.SPUpdatedConcurrencyException: An update conflict has occurred, and you must re-try this action. The object SPUpgradeSession Name=Upgrade-20130818-082650-609 was updated by XXXXX, in the PSCONFIG (10400) process, on machine XXXXX.  View the tracing log for more information about the conflict.
   at Microsoft.SharePoint.Administration.SPConfigurationDatabase.StoreObject(SPPersistedObject obj, Boolean storeClassIfNecessary, Boolean ensure)
   at Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate()
   at Microsoft.SharePoint.Upgrade.SPUpgradeSession.Update()
   at Microsoft.SharePoint.Upgrade.SPUpgradeSession.ContinueOnLocalThread(Guid id, Boolean consoleOutput)
   at Microsoft.SharePoint.PostSetupConfiguration.UpgradeTask.Run()
   at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

En los logs también aparecía

Resource id to be retrieved is UpgradeTaskFailConfigSyncDisplayLabel for language English (United States)

Para solucionarlo, tuve que limpiar toda la cache de Configuración de Sharepoint de cada servidor.

Detener el servicio de SharePoint Timer Service y Sharepoint Administration

image

Ir a hasta la carpeta de la cache, en mi caso.

%SystemDrive%\ProgramData\Microsoft\SharePoint\Config\GUID

Donde GUID es una carpeta donde está el archivo cache.ini

Ej:

image

Borrar todos los archivos XML, MENOS EL ARCHIVO INI (IMPORTANTE).

Edita el archivo Cache.Ini, reemplaza todo el contenido con el texto “1” (sin las comillas)

image

Reinicia los dos servicios windows que habias detenido. Espera hasta que se haya generado de nuevo los archivos .xml (5 minutos aproximandamente).

Hacer un iisreset

Ejecutar el siguiente comando

stsadm -o SetProperty -PropertyName command-line-upgrade-running -PropertyValue No

Y por último ejecutar de nuevo psconfig pero con más parámetros

PSCONFIG.EXE -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

Para verificar si está todo actualizado, ejecutar el siguiente comando:

Get-SPFarm | Get-SPPendingUpgradeActions -Recursive | Out-File c:\scripts\test.txt

Error Connect-SPConfigurationDatabase : This SharePoint farm currently has pending upgrades Sharepoint 2013

Al instalar un nuevo application server, me lanzaba el siguiente error al tratar de conectar el servidor a la granja mediante Connect-SPConfigurationDatabase.

Connect-SPConfigurationDatabase : This SharePoint farm currently has pending upgrades.  The cmdlet Mount-SPConfigurationDatabase cannot be
executed until the upgrade is completed.

Para solucionarlo, ejecuté lo siguiente en la consola Sharepoint 2013 Managment Shell

PSCONFIG.EXE -cmd upgrade -inplace b2b -wait –force

Recuerda tener espacio suficiente en los discos (80 GB) y 8 GB cómo mínimo de RAM.

Sharepoint 2013 – Unir servidor a la granja Connect-SPConfigurationDatabase

Al querer unir un servidor, supongamos que se llame ServidorApp04, nos lanza el siguiente error al ejecutar el comando:

Connect-SPConfigurationDatabase -DatabaseServer $sqlServerAlias -DatabaseName $configDatabaseName -Passphrase $sPassphrase –SkipRegisterAsDistributedCacheHost

Connect-SPConfigurationDatabase : The current server cannot be joined to this farm because the set of installed products does not match the
products installed in the farm.
The license state for the current server doesn't match the farm's license state.

Esto se debe a que el servidor nuevo que quiero unir NO tiene el mismo software que lá granja.

Para saber que software falta instalar se debe hacer lo siguiente:

1.   Ingreso a la base de datos de Configuración, y ejecuto la siguiente query

Select * from Objects with (nolock) where properties like '%icrosoft.SharePoint.Administration.SPInstallState%'

image
En el campo Properties nos indicará los GUID´s de los productos instalados en la granja.

image

Para saber que productos son mediante los GUID´s, podemos consultar el siguiente artículo:

http://msdn.microsoft.com/en-us/library/jj659075.aspx

9FF54EBC-8C12-47D7-854F-3865D4BE8118", "SharePoint Foundation 2013"
"B7D84C2B-0754-49E4-B7BE-7EE321DCE0A9", "SharePoint Server 2013 Enterprise"
"35466B1A-B17B-4DFB-A703-F74E2A1F5F5E", "Project Server 2013"

2.   Ingreso al nuevo server ServidorApp04, y verifico la siguiente clave de registro


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\15.0\WSS\InstalledProducts


En la clave verifico que estén las tres claves. En este caso falta la clave del Project Server, por lo tanto debo instalar Project Server 2013 para igualar los ambientes.


image


Otra posibilidad para ver los productos instalados en la granja, es mediante el siguiente comando de powershell

Get-SPFarm | select Products
En el caso que la lista que retorna el comando difiere de la segunda imagen, podemos ejecutar el siguiente comando para refrescar la base de configuración.
Set-SPFarmConfig -installedproductsrefresh
La lista de productos también puede consultarse mediante la siguiente query sobre la base de configuración de Sharepoint
SELECT [Product], [Version], [PatchableUnit], [PatchableUnitName] FROM [dbo].[ServerVersionInformation]
image
as

sábado, 3 de agosto de 2013

SharePoint 2013. Enable anonymous access

Selecciono la zona donde deseo activar acceso anónimo

image

Selecciono el check box

image

Una vez que el acceso anónimo esta habilitado, puede setear policies a los usuarios anónimos: none, deny write y deny all

image

image

Una vez que habilité el acceso anónimo al web application, ahora seteo permisos a nivel del site para los usuarios anónimos.Settings - Site settings - Site Permissions

image

Recuerda desmarcar la opción “Require Use Remote Interfaces permission”

image

IMPORTANTE: hay diferencias de comportamiento para listas y librerías con respecto al acceso anónimo. Una lista puede habilitarse para que usuarios anónimos puedad agregar, borrar, borrar y ver items, en cambio en una librería sólo podra ver items el usuario anónimo (ver imagen inferior)

image

En el caso que quieras bloquear el acceso a Application Pages a los usuarios anónimos, puede activar a feature “Limited-Access User Permission Lockdown Mode”

image

Si la feature es desactivada, un usuario anónimo puede acceder a páginas que están almacenadas en la carpeta _layouts, tales como _layouts/15/viewlsts.aspx

También puede usar PowerShell para saber el estado de la misma (ViewFormPagesLockDown) y deshabilitarla

Get-SPFeature -site http://<siteurl>

image

$ViewFormPages = Get-SPFeature ViewFormPagesLockDown
Disable-SPFeature $ViewFormPages -url http://<siteurl>

Otra configuración que debería revisar es el acceso al directorio _vti_bin. Si un usuario anónimo tiene acceso al sitio, puede acceder a la página spdisco.aspx y listar todos los servicios webs.

Puede cambiar este comportamiento en el archivo web.config del web application deseado (recuerde que se recicla el pool). Insertarlo arriba del tag </configuration>

<location path="_vti_bin">
    <system.web>                  
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>

Plan security for an external anonymous access environment (Office SharePoint Server):

http://technet.microsoft.com/en-us/library/cc263468.aspx

No se ve el icono de Access Request Settings Sharepoint 2013 (missing access request Settings icon)

image

En el caso que no puedas ver el icono de  “Access request Settings”, es porque no tenés configurado un smtp (outgoing e-mail)

Ingresa al central administration
Click on Outgoing Email settings.

image

image

Otro indicio que no tienes configurado el smtp es que no puedes compartir contenido.

image

viernes, 2 de agosto de 2013

Problemas con contadores de performance (Performance counter)

Esta semana tuve que resolver un problema de alto consumo de CPU y RAM de los procesos de Sharepoint, ej: owstimer y w3wp.

El CPU variaba entre 25% a 100 % continuamente, ocasionando que nos lance el siguiente error al ingresar: HTTP Error 503. The services is unavailable

image

Despúes de hacer un iisreset, y reiniciar el owstimer, volvia a la normalidad, pero por un tiempo, ya que volvía a consumir cpu y ram casi al 100%.

Revisando los logs veo que hay algún problema con los contadores del sistema, ya que no podía crear contadores: Unable to create system performance counter

PDH failure on counter \NOMBRESERVIDOR\ASP.NET\\Requests Current with error Unknown error (0xc0000bbc)

Performance Counter OS (pdh) call failed with error code PDH_INVALID_HANDLE.

Unable to create system performance counter NOMBRESERVIDOR\Memory\Available Mbytes\.  The following exception was thrown: System.ComponentModel.Win32Exception: Unknown error (0xc0000bbc)   
at Microsoft.SharePoint.Win32.SPPdh.CheckReturnValue(PDH_STATUS status, Boolean throwOnError)   
at Microsoft.SharePoint.Utilities.SPPerformanceCounter.NextValue(Int32 retry, Int32 retryInterval)   
at Microsoft.SharePoint.Utilities.SPPerformanceCounterMonitorInternal.UpdateValue()   
at Microsoft.SharePoint.Utilities.SPPerformanceCounterMonitorInternal.Create(String computer, String category, String counter, String instance)

Entonces lo primero que hice es revisar si estos contadores estaban en el performance monitor, al ingresar me lanzó el siguiente error.

image

Revisando más en detalle con Process Monitor, veo que w3wp y owstimer está continuamente consultando por el archivo perfc409.dat

image

Este archivo es uno de la base de contadores del sistema. Puede haber varios archivos de este estilo perfcNNN.dat, perfdNNN.dat, perfhNNN.dat, y perfiNNN.dat. donde NNN representa el lenguaje del archivo (Ej perfc409.dat o perfc409.dat)

Perfc y perfd ​​contienen los nombres para mostrar de un grupo de contadores, perfh y perfi contienen las descripciones correspondientes. Perfc, perfd, perfh y perfi inicialmente son idénticos, durante la configuración de Windows, perfc y perfh se actualizan cotinuamente. Perfd y perfi se utilizan para el servicio, por lo que cuando se instala un nuevo paquete de servicio, los contadores de bases de perfc y perfh se sustituyen con la información en el perfd ​​actualizada y perfi.

Soluciones probadas

  1. Reconstruir manualmente los contadores del sistema mediante el siguiente KB http://support.microsoft.com/kb/300956/es y el comando Lodctr.exe /R
  2. Reconstruir los contadores mediante LodCtr.exe /R:PerfStringBackup.INI, donde PerfStringBackup.ini. Ver el siguiente artículo: http://blogs.technet.com/b/yongrhee/archive/2009/10/06/how-to-rebuild-performance-counters-on-windows-vista-server2008-7-server2008r2.aspx
  3. Copiar los archivos perfcNNN.dat, perfdNNN.dat, perfhNNN.dat, y perfiNNN.dat de otro servidor que esté funcionando OK, y renombrarlos a los que busca el sistema. Ejecutar de nuevo Lodctr.exe /R.
  4. Revisar group policies (Replace a process level token, Logon as a service, Impersonate a client after authentication, Adjust memory quotas for a process)
  5. Revisar permisos. Agregar los usuarios de los application pools usados por w3wp y el usuario de farm (seteado para owstimer.exe en services.msc). Agregarlos a los grupos Administrators (temporalmente),Performance Monitor Users, Performance Logs Users.

Ninguna de las soluciones previas funcionó, por lo que seguí revisando con process monitor,y me encontré que los procesos llamaban continuamente al la siguiente clave de registro.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\Disable Performance Counters

image

Veo que tiene el valor 1, que significa en este caso que están deshabilitados la creación de contadores.

La solución final fue cambiarlo a 0, y reiniciar el server. Después del reinicio todo volvió a la normalidad.