viernes, 30 de noviembre de 2012

Tips Info #82 Sharepoint 2010

1-Tablas NameValuePair

Al crear una columna con un índice, se llenará las tablas NameValuePair[_{SQLCollation}] con datos de la columna que tu indexas.

Cada vez que actualizas datos de las columnas, se actualiza las tablas NameValuePair[_{SQLCollation}]. Cuando se realiza una consulta a cualquiera de las listas de las cuales tiene un campo indexado, a continuación, se hace un JOIN con la tabla dbo.AllLists y la tabla dbo.NameValuePair. Esto provocará que las queries sean más rápidas.

2-Versionado y acceso anónimo

Si activas la opción “Major Version” en el versionado de las librerías, cada vez que publicas una versión, todos los usuarios podrán ver esa versión incluso los anónimos. En cambio una versión "minor" sólo los propietarios del documento, administradores y usuarios con permisos de approve podrán ver la versión.

3-Mostrar los attachments (adjuntos) de listas en xlst

Usar el control <xsl:element name="SharePoint:AttachmentsField">

<xsl:element name="SharePoint:AttachmentsField">
    <xsl:attribute name="runat">server</xsl:attribute>
    <xsl:attribute name="FieldName">Attachments</xsl:attribute>
    <xsl:attribute name="ControlMode">Display</xsl:attribute>
    <xsl:attribute name="Visible">true</xsl:attribute>
    <xsl:attribute name="ItemId">
        <xsl:value-of select="@ID"/>
    </xsl:attribute>
</xsl:element>

4-Query sobre list items de varios sites

Se puede usar SPSiteDataQuery o CrossListQueryInfo.

5-Algunos tips útiles sobre querys string en Sharepoint

Por default, Sharepoint 2010 muestra la última versión del documento, si se quiere mostrar todas las versiones, se puede utilizar el query string IncludeVersions:

AllItems.aspx?IncludeVersions=TRUE

Si se quiere mostrar sólo los items de un folder, se puede utilizar el query string RootFolder=*

Ej: url?RootFolder=*  ->muestra los items de todos los folders

Ej: http://urlsitecollection/sites/Demo/TheDocumentLibrary/Forms/AllItems.aspx?RootFolder=%2fdemo%2fthedocumentlibrary%2fcarpeta

Importante: el query string RootFolder es case sensitive, debe tener caracteres de escape (%2f para barras, %2d para guiones)

Editar una página de NewItem o EditItem (por default no se pueden editar)
Ej: agregar el query string ToolPaneView, DispForm.aspx?ID=12&ToolPaneView=2

Query string que permite retornar a una url determinada, al cerrar la página o aceptar la acción
?Source=http://sitecollection/Intranet/default.aspx

Otros parámetros útiles: _ModerationStatus y _IsCurrentVersion

jueves, 29 de noviembre de 2012

Tips Info #81 Sharepoint 2010

1-Error en Visual Studio en ambiente local de Sharepoint: The web application at http://server could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.

Revisa que estés compilando en x64, ya que Sharepoint es una plataforma de 64 bits.

image

2-Error: The method “GetItems” of the Type “List” with id “{ID}” is blocked by the administrator  on the server

Este error se debe a que se quiso consumir información de Sharepoint mediante client object.

Ejecuto el siguiente comando de powershell para saber si el método se encuentra como tipo restringido.

$wa = Get-SPWebApplication -Identity http://webapplication_url
$wa.ClientCallableSettings.AnonymousRestrictedTypes

image

Como pueden ver en la imagen superior, el método GetItems está restringido.

Para solucionar este error ejecutar el siguiente comando:

$wa = Get-SPWebApplication -Identity "http://webapplication_url"
$wa.ClientCallableSettings.AnonymousRestrictedTypes.Remove([Microsoft.SharePoint.SPList], "GetItems")
$wa.Update()
$wa.ClientCallableSettings.AnonymousRestrictedTypes

image

3-Tips de SQL tunning para Sharepoint

  • maxdop = 1 (Max degree of parallelism)

6443.BlogMaxdopPhoto%231

Cuando se ejecuta una consulta en paralelo, sin duda, encontrará
que uno de los hilos (thread) termina antes que el otro y tiene que esperar a otra
hilo para hacer su trabajo. En aplicaciones con transacciones cortas y rápidas, esto
está muy bien. En las aplicaciones con gran cantidad de transacciones, con un montón de
consultas ejecutadas en paralelo (es decir, como es el caso de SharePoint), esto puede conducir a una
reducción en el rendimiento, ya que los threads que tienen que hacer el trabajo real, tienen que
esperar a que otros hilos terminen.

  • No hacer shrink de los datafiles (MDF, NDF, LDF)

Puede ocasionar desfragmentación de indices y pérdida de performance

  • Configuración de la TempDB

Crear la base de datos tempdb en el almacenamiento más rápido disponible (SSD es una gran opción). Pre-asignación de espacio para tus archivos de tempdb estableciendo el tamaño del archivo inicial a un valor más grande para que pueda adaptarse a la carga de trabajo típica en el entorno, se puede ir en una regla de oro que el tamaño debe ser de 25% de la base de datos más grande de contenido.Crea varios archivos de datos para maximizar el ancho de banda del disco y reduce la contención archivo TEMPDB. Hacer cada archivo del mismo tamaño, lo que permite una óptima proporción de llenado rendimiento.

  • No habilitar la opción de “Auto Update Statistics” y “Auto Update Statistics Asyncronously”

auto-create-statistics-on-a-sql-server_thumb

 

4-Ocultar la ribbon para usuarios anónimos

Buscar en la master page el div con el id s4-ribbonrow, y agregar la clase hide-ribbon

<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle hide-ribbon">

Una vez agregado la clase, se deberá agregar el siguiente control en la master page

<SharePoint:SPSecurityTrimmedControl ID="VerRibbon" PermissionString="ManageLists" runat="server">
  <style type="text/css">
    body .hide-ribbon {
      display: none;
    }
  </style>
</SharePoint:SPSecurityTrimmedControl>

También se puede agregar todo el div s4-ribbonrow, pero puede ocasionar problemas con el elemento #s4-workspace y los scrollbars.

5-Cambiar el logo de todos los sites collections y sites de un web application mediante powershell

Get-SPWebApplication http://url_webapplication | get-spsite -Limit All | get-spweb -Limit All | foreach {$_.SiteLogoUrl = "/_layouts/images/custom/logo.gif"; $_.Update()}

Links útiles #54–Sharepoint 2010

1-Workflows custom en Sharepoint 2010

http://www.techbubbles.com/workflowfoundation/creating-a-custom-sequential-workflow-in-sharepoint-2010

http://www.techbubbles.com/microsoft/creating-parallel-workflow-in-sharepoint-2010/

2-Librería para queries en formato CAML

http://camlex.codeplex.com/

3-Windows Powershell for Sharepoint Command Builder

http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html

4-Problema con forms authentication en Sharepoint 2010 al mover la base de membership (debido al machine config)

http://blog.bugrapostaci.com/2012/11/24/sharepoint-2010-form-based-authentication-problem-event-id1315-and-event-id8306/

5-Sharepoint Emulators

http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/introducing-sharepoint-emulators.aspx

6-Migración de LOTUS a Sharepoint 2010

http://sprider.org/2012/11/29/lotus-notes-to-sharepoint-2010-migration/

Links útiles #9- Sharepoint 2013

1-Sites feeds y follow en Sharepoint 2013

http://www.learningsharepoint.com/2012/11/23/what-are-site-feeds-and-how-to-follow-unfollow-sites-in-sharepoint-2013/

2-Incremental crawls en Sharepoint 2013

https://www.nothingbutsharepoint.com/sites/itpro/Pages/SharePoint-2013-Search-Continuous-Crawling.aspx

3-Publicación entre sitios con Sharepoint 2013

http://blogs.msdn.com/b/sharepoint_sp/archive/2012/11/27/introducci-243-n-a-la-publicaci-243-n-entre-sitios-de-sharepoint-2013-parte-1.aspx

4-Sharepoint 2013 for education

http://sharepoint.nauplius.net/2012/11/sharepoint-2013-for-education.html

5-Search Schema para Sharepoint 2013

http://blogs.technet.com/b/tothesharepoint/archive/2012/11/26/introducing-search-schema-for-sharepoint-2013.aspx

miércoles, 21 de noviembre de 2012

Tips Info #80 Sharepoint 2010

1-Error:  An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs..

Este error puede ocurrir al configurar forms authentication en Sharepoint 2010.

Para ver el error real, debermos editar el web.config que está dentro de \14\WebServices\SecurityToken (previo backup del mismo), y agregar la siguiente línea debajo de la línea “serviceThrottling”:

<serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True"/>

6a012875706f1b970c014e88808662970d

2-Obtener el tamaño de las bases de datos de Sharepoint

SELECT d.name,
ROUND(SUM(mf.size) * 8 / 1024, 0) Size_MBs
FROM sys.master_files mf
INNER JOIN sys.databases d ON d.database_id = mf.database_id
WHERE d.database_id > 4 -- Skip de las bases de sistema
GROUP BY d.name
ORDER BY d.name

3-Actualizar información de un usuario desde el AD

Set-SPUser -Identity domain\user -Web http://site -SyncFromAD

4-Error 500 al llamar un web services vía jquery o javascript

Agregar en el web.config de tu web application y en el web.config de la carpete ISAPI lo siguiente:

<system.web>
  <webServices>
    <protocols>
      <add name="HttpGet" />
      <add name="HttpPost" />
    </protocols>
  </webServices>
...
</system.web>

5-Re-provisionar todos los Sharepoint Web Services

$h = Get-SPServiceHostconfig
$h.Provision()
$services = Get-SPServiceApplication
foreach ($service in $services) { $service.provision();
write-host $service.name}

Links útiles #7 Sharepoint 2013

1-Machine Translation

http://blogs.technet.com/b/wbaer/archive/2012/11/12/introduction-to-machine-translation-services-in-sharepoint-2013.aspx

2-Shredded Storage en Sharepoint 2013

http://blogs.technet.com/b/wbaer/archive/2012/11/12/introduction-to-shredded-storage-in-sharepoint-2013.aspx

3-Information Managment Policies en Sharepoint 2013

http://www.learningsharepoint.com/2012/11/14/information-management-policies-in-sharepoint-2013

4-Newsfeed en Sharepoint 2013

http://wyldesharepoint.blogspot.com.ar/2012/11/sharepoint-2013-newsfeed-and-share.html

5-Nuevo Office Web App Server para Sharepoint 2013

http://blogs.technet.com/b/office2010_sp/archive/2012/11/20/introducci-243-n-a-office-web-apps-server.aspx

martes, 20 de noviembre de 2012

Tips Info # 79 Sharepoint 2010

1-Acceso denegado para todos los usuarios excepto para la cuenta de farm al hacer un restore

Esto se solucionando configurando las cuentas de super reader y writer, y dando una policy de full control a las mismas.

$wa = Get-SPWebApplication -Identity "<WebApplication>"  
$wa.Properties["portalsuperuseraccount"] = "<SuperUser>"  
$wa.Properties["portalsuperreaderaccount"] = "<SuperReader>"  
$wa.Update() 

Obviamente las cuentas deben estar previamente creadas.

Este error se debe a lo siguiente: La caché de objetos almacena propiedades de los elementos en Microsoft SharePoint Server 2010. La característica de publicación usa los elementos de esta memoria caché para representar páginas web. Los objetivos de la caché de objetos son reducir la carga en el equipo en el que se ejecuta SQL Server y mejorar el rendimiento y latencia de la solicitud. La caché de objetos realiza consultas como una de dos cuentas de usuario integradas: la cuenta de usuario súper del portal y la cuenta de lector súper del portal. Estas cuentas de usuario deben configurarse correctamente para garantizar que la caché de objetos funcione correctamente. La cuenta de usuario súper del portal debe ser una cuenta que tenga acceso de control total a la aplicación web. La cuenta de lector súper del portal debe ser una cuenta que tenga acceso completo de lectura a la aplicación web.

2-Borrar o Recuperar un web part cerrado

image

Ingrese en la URL el siguiente parámetro ?contents=1 , esto abrirá una página donde podrá borrar el web part cerrado

image

Para restaurar un web part cerrado, deberá editar la página y vaya al link de agregar web part. Al abrir la gallería, debemos elegir la sección “Closed Web Parts”

image

3-Query sobre múltiples listas de Sharepoint con GetSiteData

SPSiteDataQuery sQuery = new SPSiteDataQuery();
string where += "<Lists>";
       where += "<List ID='ID de lista 1'/>";
       where += "<List ID='ID de lista 2'/>";
       where += "<List ID='ID de lista 3'/>";
       where += "</Lists>";
       sQuery.Lists = where;
       sQuery.ViewFields = "<FieldRef Name ='Title' />";
      
DataTable results = SPContext.Current.Web.GetSiteData(sQuery);

Más info: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.getsitedata.aspx

4-Agregar un agrupamiento de más de 2 columnas en Sharepoint 2010

Crear una página de web part, y agregar un “Emty Data View”

image

En el nuevo web part haz click en “Click here to select a data source” . A continuación elige la lista que deseas mostrar. A continuación se mostrará el “Data Source Details Pane”

Selecciona las columnas que desees con SHIFT, y para finalizar el proceso haz click en “Insert Selected Fields as” y elige “Multiple Item View”

image

A continuación agrega el agrupamiento que necesites:

image

5-Feature ViewFormPagesLockDown

Dentro de un site con acceso anónimo, se puede prevenir que usuarios anónimos naveguen a páginas internas o que buscadores indexen el contenido: ej:

/_layouts/viewlsts.aspx

/Lists/[NombreLista]/AlItems.aspx

Esto se puede desactivar mediante la feature ViewFormPagesLockdown

Esto es una feature oculta, pero se puede acceder vía powershell:
Get-SPFeature | where { $_.DisplayName -eq "ViewFormPagesLockdown"}

image

Esta feature tiene alcance a nivel de site collection, se puede activar mediante powershell:

Enable-SPFeature -url http://site_collection -identity XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX -confirm:$false

Puede ocasionar problemas con ciertos sites anónimos que permite que usuarios carguen encuestas o listas con determinados datos.

Incluso cuando el modo de bloqueo está activada, los usuarios anónimos pueden acceder a determinadoas direcciones URL de Sharepoint, tales como las páginas en el directorio _layouts y servicios web que están expuestos en el directorio _vti_bin. Se puede solucionar este problema mediante web.config.

Ej: deniego a todo link interno a usuarios anónimos (?)

<configuration>
<location path="_layouts">     <system.web>                        <authorization>         <deny users="?" />       </authorization>     </system.web>   </location>
<location path="_vti_bin">     <system.web>                        <authorization>         <deny users="?" />       </authorization>     </system.web>   </location>
<location path="_layouts/login.aspx">     <system.web>       <authorization>         <allow users="?" />       </authorization>     </system.web>   </location>
<location path="_layouts/error.aspx">     <system.web>       <authorization>         <allow users="?" />       </authorization>     </system.web>   </location>
<location path="_layouts/accessdenied.aspx">     <system.web>       <authorization>         <allow users="?" />       </authorization>     </system.web>   </location>
</configuration>
Más información: http://technet.microsoft.com/en-us/library/ee191479(v=office.12).aspx

viernes, 16 de noviembre de 2012

Tips Info # 78 Sharepoint 2010

1-Cambiar la página de ingreso a la sección MySites

Cuando se hace click en MySites, Sharepoint nos lleva a “My Site Host” del site collection.

image_thumb9

Se puede cambiar la “landing page”, mediante powershell

$site = Get-SPSite http://mysitehost/
$web = $site.RootWeb
$folder = $web.RootFolder
$folder.WelcomePage = "tagprofile.aspx"
$folder.update()
$web.update()
$web.Dispose()
$site.Dispose()

TaggedItems

Las páginas que se pueden usar son:

default.aspx
person.aspx
organizationview.aspx
personcontent.aspx
tagprofile.aspx

2-Operation is not valid due to the current state of the object

Una actualización del Framework .NET configuró que el número de campos que son permitidos de publicar en una página fue seteado a 1000.

Este problema puede presentarse cuando se hace un restore de un backup de farm, cuando se publica un rdl (reporte de Reporting services) con gran cantidad de filtros (Ej: combos), cuando se usa muchos controles, etc.

Para solucionarlo, editar la siguiente línea del web.config:
<appSettings>
    <add key="aspnet:MaxHttpCollectionKeys" value="2001" />
</appSettings>

3-Mostrar sólo sites collection o sites en los resultados de búsqueda

Utilizar los siguientes querys: contentclass:”sts_site” contentclass:”sts_web”

ch537_7C57E6A3
SPOSearchSitesAll_thumb_36DE223F

4-Ocultar la ribbon mediante seguridad

Agregar el siguiente script de css en la master page

<style type="text/css">
div#s4-ribbonrow {
display:none;
}
</style>

<Sharepoint:SPSecurityTrimmedControl runat="server"
Permissions="AddAndCustomizePages, ManageLists">
<style type="text/css">
div#s4-ribbonrow {
display:block;
}
</style>
</Sharepoint:SPSecurityTrimmedControl>

5-Ejecutar un workflow a varios items de lista

Marcar los items que desea ejecutar el workflow, y ejecute “Check Out”

Check-Out1

A continuación ejecute “Check In”

Check-In1

miércoles, 14 de noviembre de 2012

Tips Info # 77 Sharepoint 2010

1-Los usuarios no pueden renombrar documentos con permisos de Colaborador sin la opción de borrar – Error de acceso denegado

Cuando un archivo (documento) es renombrado, lo que hace Sharepoint es borrarlo, y lo agrega con otro nombre. Al querer borrarlo, lanza el error de acceso denegado.

En resumen: RENOMBRAR = BORRAR + AGREGAR

2-Cuando los documentos no tienen iconos en las vistas de Sharepoint, algunos archivos se abren cómo sólo lectura.

Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML\DOCICON.xml. Cambia el archivo docicon.xml agregando la siguiente línea <Mapping Key=”pdf” Value=”iconoFile.gif”/> . Después has un iisreset. Recuerda hacer un backup previo del file.

Más información: http://msdn.microsoft.com/en-us/library/ms463701.aspx

3-No se puede examinar una biblioteca de documentos en vista del explorador

\\server\webfolder\folder is not accessible. You might not have permission to use this network resource.
Contact the administrator of this server to find out if you have access permissions.
A device attached to the system is not functioning.

El problema ocurre porque el tamaño de todos los atributos de archivo que devuelve el servidor WebDAV es mucho mayor que lo que se espera. De forma predeterminada, este tamaño es limitado a 1 MB. Este límite es por razones de seguridad.

Para solucionar cambiar la siguiente clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\

Valor: FileAttributesLimitInBytes
Tipo de datos: DWORD
Valor predeterminado: 100000000 decimal (100 MB)
Descripción: Esta subclave del registro determina el tamaño máximo de colectivo de todos los atributos de archivo en una carpeta que está permitido por el redirector WebDAV. Este límite de atributo cubre todas las respuestas PROPFIND y PROPPATCH.

4-Obtener los usuarios de un site collection mediante powershell 

$site = Get-SPSite http://webapplication/sitecollection/
$groups = $site.RootWeb.sitegroups
foreach ($grp in $groups)
{
"Grupo: " + $grp.name;
foreach ($user in $grp.users) {"  Usuario: " + $user.name}
}
$site.Dispose()

5-Agregar porcentaje al panel de refinamiento

image13

Editar el web part

image12

Y agregar lo siguiente (ver sección en amarillo):

<Category
Title="string"
Description="string"
Type="TypeName"
MappedProperty="PropertyName"
MetadataThreshhold="value"
NumberOfFiltersToDisplay="value"
MaxNumberOfFilters="value"
SortBy="Frequency|NumericValue|Name|Custom"
SortDirection="Descending|Ascending"
SortByForMoreFilters="Frequency|NumericValue|Name|Custom"
SortDirectionForMoreFilters="Descending|Ascending"
ShowMoreLink="True|False"
MoreLinkText="string"
LessLinkText="string"
ShowCounts="Percentage">
… </Category>

viernes, 2 de noviembre de 2012

Tips Info # 76 Sharepoint 2010

1-Diferencia entre los permisos “Read” y “View Only”

El permiso View Only no permite encontrar documentos desde el search, ni tampoco descargarlos a los usuarios que hayan asociado este permiso con items.

En cambio el permiso Read permite descargarlos y encontrarlos en los resultados de búsqueda.

2-Forzar el borrado de un site mediante powershell

Enumera los ids de los sites a borrar:

stsadm -o enumallwebs -databasename WSS_ContenDatabase

Otra posibilidad es usar el siguiente comando de powershell:

Get-SPWebApplication "http://webapplicationURL/" | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, ID, URL | out-file c:\temp\websGUID.txt | format-table –auto

Una vez que sabemos el ID del site a borrar, ejecutamos la siguiente consulta:

stsadm -o deleteweb -force -webid "GUID" -databaseserver serverDB\nombreInstancia -databasename WSS_ContentDatabse

3-Saber el modo en que estoy en una página de Sharepoint (web part display mode)

SPContext.Current.FormContext.FormMode == SPControlMode.Edit;
Donde SPControlMode puede tener los siguientes valores: New , Edit , Display , Invalid

4-Obtener el usuario logueado en Sharepoint

string currentUser = HttpContext.Current.User.Identity.Name

SPUSer currentUserSP = SPContext.Current.Web.SiteUsers[currentUser]

5-La búsqueda retorna resultados con título incorrectos para documentos word

Realizar lo siguiente para solucionarlo:

Ir hasta la clave [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager]
Cambiar el valor hexadecimal de EnableOptimisticTitleOverride a 0 (cero). Reiniciar SharePoint Search service mediante los siguientes comandos:
       net stop osearch14
       net start osearch14
Ejecuta un full crawl. Se recomienda hacer este cambio en todos los servers de la granja.