Hay clientes que aún estan en SharePoint 2010 y aún no se migran por diversas e importantes razones, pero si desean actualizar el sistema operativo del servidor. En este caso el cliente sea virtualizar sus servidores físicos y redistribuir el contenido para ello ha solicitado que se instala sobre Windows Server 2012 R2.
Donde está el problema?.
Pues SharePoint Server 2010 salió al mercado en el año 2010 (Announced Launch date is May 12th, 2010, RTM date (Release to Manufacturing) will be in April) y Windows Server 2012 R2 salió 4 de septiembre de 2012.
Entonces SharePoint 2010 RTM no tenía soporte para este sistema operativo sino hasta el Service Pack 2.0 según esta publicación https://support.microsoft.com/en-us/kb/2724471 "Before the release of Service Pack 2 (SP2) for Microsoft SharePoint
Server 2010, Microsoft did not support SharePoint Server 2010 in a
Windows Server 2012 or Windows Server 2012 R2 environment.
However,
SharePoint Server 2010 slipstream media SP2 has now been released, and
this configuration is supported in Windows Server 2012 and Windows
Server 2012 R2. "
Entonces es necesario obtener el slipstrem media es decir la media que incluya el SP2 lo puede encontrar en suscripción de msdn como SharePoint Server 2010 with Service Pack 2.0.
Nota: intente crear el slipstream desempacando el SP2 y copiandolo en el directorio updates, pero no me funcionó asi que le recomiendo encuentre el slipstream media de la subscripción msdn o de otra fuente de Microsoft ya que de lo contrario se topará con un sinnúmero de errores.
Es importante mencionar que también el artículo recomienda instalar el CU de Febrero 2014 o superior. Para validar las últimas actualizaciones de SharePoint puede buscar SharePoint 2010 lastest updates https://technet.microsoft.com/en-us/library/mt715807%28v=office.16%29.aspx.
No se olvide de ejecutar el asistente de Productos y Tecnologías de SharePoint para que actualice adecuadamente la granja de SharePoint.
Happy SharePoint Installation!,
Juan Manuel Herrera Ocheita
Micro publicaciones guía para Power Apps, Power Automate, SharePoint y ademas algunos temas de Azure Dev Ops, Desarrollo Web, SQL Server, Asp.net.
sábado, 28 de mayo de 2016
Instalando SharePoint 2010 en Windows Server 2012 R2
jueves, 26 de mayo de 2016
Acceso denegado en la pagina de permisos para un usuario propietario o con permisos de Control Total en SharePoint
Escenario:
Se creo un sub-sitio en SharePoint, se definieron permisos exclusivos y se creo un grupo de propietarios para el sitio. Luego se definieron permisos exclusivos en una biblioteca y por último en los permisos del sitio de configuró la solicitud de acceso;
colocando el correo del usuario al que se le asignó la administración del sitio.
Cuando el usuario intenta ir asignar permisos a otros usuarios al sitio o a la biblioteca redirige al usuario a la página de solicitar permisos
El Problema:
Cual fue el problema en este caso. La lista de solicitud de accesos tenia permisos exclusivos y por ello provocaba el error.
La Solución:
Esta descrita en el siguiente enlace: https://support.microsoft.com/en-us/kb/2911390
Pero basícamente hay que ir a la lista de solicitud de acceso que esta escondida. Pueden utilizar SharePoint Designer para descubrirla o bien descubrirla desde el navegador.
En las herramientas del desarrollador F12 desde IE buscar la URL que termina con "pendingreq.aspx." y en response body buscar el id de la lista llamada pagelistid entre corchetes copiar el GUID y luego ejecutar la página para editar la lista https://URL of affected site or site collection>/_layouts/15/ListEdit.aspx?List=<{GUID}>. Y luego el procedimiento acostumbrado seleccionar permisos de la lista y seleccionar la opción Eliminar permisos exclusivos.
Y eso es todo. SharePoint4Fun!,
Juan Manuel Herrera Ocheita
lunes, 23 de mayo de 2016
Como resolver el Error /_vti_bin/client.svc/ProcessQuery UnauthorizedAccessException: Access is denied.
Escenario:
Una app de SharePoint o Add-in de SharePoint como Microsoft denomina ahora las apps en SharePoint dejo repentinamente de desplegar a todos los usuarios el contenido del app.
Esto no solo aplica a las apps sino a cualquier lista dentro de la Aplicación web de SharePoint, como veremos más adelante. Así que si repentinamente dejo de ver un contenido pueda que este sea su caso.
El usuario me notificó que al agregar el usuario de red como administrador local del servidor, ya le mostraba el contenido del app. Aún más confuso y extraño este comportamiento que al parecer eran permisos que no tenían los usuarios en el servidor, pero como descubrir si alguien hizo alguna modificación en el servidor ya que es un ambiente de un cliente administrador por el personal del cliente.
Después de revisar la configuración y servicios de Aplicaciones de la granja de SharePoint y constatar que todo estaba bien configurado y funcionando, procedí a indagar en los logs de SharePoint. Para ello es necesario habilitar los siguientes eventos:
Y esto fue lo que obtuve en el log:
d7c57d9d-5788-b0d0-3f2a-a19b4191ed7d
http://app-369d6491a3e5c7.apps.bantrabgf.local/InfowareForgetNot Employees d7c57d9d-5788-b0d0-3f2a-a19b4191ed7d
Luego utilice Fiddler para ver el tráfico de la aplicación:
Una app de SharePoint o Add-in de SharePoint como Microsoft denomina ahora las apps en SharePoint dejo repentinamente de desplegar a todos los usuarios el contenido del app.
Esto no solo aplica a las apps sino a cualquier lista dentro de la Aplicación web de SharePoint, como veremos más adelante. Así que si repentinamente dejo de ver un contenido pueda que este sea su caso.
El usuario me notificó que al agregar el usuario de red como administrador local del servidor, ya le mostraba el contenido del app. Aún más confuso y extraño este comportamiento que al parecer eran permisos que no tenían los usuarios en el servidor, pero como descubrir si alguien hizo alguna modificación en el servidor ya que es un ambiente de un cliente administrador por el personal del cliente.
Después de revisar la configuración y servicios de Aplicaciones de la granja de SharePoint y constatar que todo estaba bien configurado y funcionando, procedí a indagar en los logs de SharePoint. Para ello es necesario habilitar los siguientes eventos:
System.UnauthorizedAccessException: Access is denied. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED)) en Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex) en Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML) en Microsoft.SharePoint.SPField.UpdateCore(Boolean bToggleSealed) en Microsoft.SharePoint.ServerStub.SPFieldServerStub.InvokeMethod(Object target, String methodName, XmlNodeList xmlargs, ProxyContext proxyContext, Boolean& isVoid) en Microsoft.SharePoint.Client.ServerStub.InvokeMethodWithMonitoredScope(Object target, String methodName, XmlNodeList args, ProxyContext proxyContext, Boolean& isVoid) en Microsoft.SharePoint.Client.ClientMethodsProcessor.InvokeMeth... d7c57d9d-5788-b0d0-3f2a-a19b4191ed7d
05/19/2016 12:04:25.15* w3wp.exe (0x3E6C) 0x34F8 SharePoint Foundation CSOM aiv4i High ...pdate" Id="348" ObjectPathId="272" />List of all employees.
05/19/2016 12:04:25.15* w3wp.exe (0x3E6C) 0x34F8 SharePoint Foundation CSOM aiv4i High ...ldItemQuery>
05/19/2016 12:04:25.15 w3wp.exe (0x3E6C) 0x34F8 SharePoint Foundation CSOM agmjp High Original error: System.UnauthorizedAccessException: Access is denied.
Y me mostró la siguiente información:
Aunque el 401 es un mensaje de no autorizado es el comportamiento esperado con la autenticación ntlm ya que luego le sigue un 200 OK que indica que pudo realizar la acción solicitada. Así que fiddler no me ayudo mucho en este caso.
La aplicación lo que hace es desplegar de una lista dentro del AppWeb el contenido, pero me estaba reportando un acceso denegado. No fue sino hasta que exporte la lista completa a excel que me percate que tenia 5008 elementos. Y esto me recordó el umbral de máximo de elementos por lista que tiene configuración SharePoint de forma predeterminada. Y ahora hacía sentido que los usuarios administradores si podía ver el contenido ya que el umbral de los administradores y auditores es de 20,000 elementos.
Solución:
Fue solo ampliar el umbral a nivel de aplicación web de 5,000 elementos a 10,000 elementos para que se pueda leer el contenido que no desplegaba. Cómo hacerlo vea el siguiente enlace: http://stevemannspath.blogspot.com/2013/05/sharepoint-2013-list-view-threshold.html
Otras soluciones:
Depurar el listado de la lista, eliminando o filtrando el contenido ver este enlace:
http://en.share-gate.com/blog/demystifying-the-sharepoint-lists-thresholds
O bien modificando el código para que lea de forma filtrada.
https://blogs.msdn.microsoft.com/ericwhite/2009/11/20/using-the-sharepoint-2010-managed-client-object-model-accessing-large-lists/
Eso esto amigos, un día mas en las aguas profundas de SharePoint World!
Saludos,
Juan Manuel Herrera Ocheita
sábado, 30 de abril de 2016
Asignando valor predeterminado a una propiedad de un elemento Web de forma declarativa SharePoint 2013
Asignando valor predeterminado a una propiedad de un elemento Web de forma declarativa SharePoint 2013
Para agregar un valor predeterminado a una propiedad de un elemento web debemos de ir al código de servidor o Code Behind del control de usuario, como se muestra en la imagen de abajo.
Debemos definir una propiedad pública de la clase del control de usuario. Y agregar los atributos: WebBrowsable,WebDisplayName, WebDescription,Category y Personalizable, como se muestra en el código de abajo.
Luego vamos a definir un módulo dentro del proyecto, esto nos permitirá adicionar páginas y elementos web a las páginas cuando se instale la solución y agregar el valor predeterminado a la propiedad.
Luego creamos una Application Page como plantilla para entonces crear una instancia de la página donde definamos el elemento web.
En la página se define las zonas de los elementos web para poner distribución de los elementos Web dentro de la página.
Ahora vamos a modificar el archivo elements.xml donde se define la instancia de la página y los elementos web dentro de ella.
Y través del nodo properties, definimos los nombres de cada propiedad con su respectivo valor.
Y eso es todo!
SharePoint4Fun!,
Juan Manuel Herrera Ocheita
Para agregar un valor predeterminado a una propiedad de un elemento web debemos de ir al código de servidor o Code Behind del control de usuario, como se muestra en la imagen de abajo.
Debemos definir una propiedad pública de la clase del control de usuario. Y agregar los atributos: WebBrowsable,WebDisplayName, WebDescription,Category y Personalizable, como se muestra en el código de abajo.
Luego vamos a definir un módulo dentro del proyecto, esto nos permitirá adicionar páginas y elementos web a las páginas cuando se instale la solución y agregar el valor predeterminado a la propiedad.
Luego creamos una Application Page como plantilla para entonces crear una instancia de la página donde definamos el elemento web.
En la página se define las zonas de los elementos web para poner distribución de los elementos Web dentro de la página.
Ahora vamos a modificar el archivo elements.xml donde se define la instancia de la página y los elementos web dentro de ella.
Y través del nodo properties, definimos los nombres de cada propiedad con su respectivo valor.
Y eso es todo!
SharePoint4Fun!,
Juan Manuel Herrera Ocheita
Etiquetas:
Programación SharePoint,
SharePoint 2013,
Soluciones de Granja
martes, 26 de abril de 2016
Como conocer los usuarios que estan conectados el día de hoy en SharePoint 2013
La única forma que encontrado de lado de SharePoint es ejecutando un comando de T-SQL hacia la base de datos de estádisticas con WSS_Logging o a veces lo nombran como WSS_UsageAplication. Esta tiene diferentes vistas y funciones que nos pueden proveer información ya relacionada para facilitarnos la consulta.
El tema es que tienes que tener configurado la colección de datos de uso y salud. Para ello ve al Central Adminsitration, a Montoring y luego Configure usage and health data collection.
El tema es que tienes que tener configurado la colección de datos de uso y salud. Para ello ve al Central Adminsitration, a Montoring y luego Configure usage and health data collection.
Luego navegue un poco y espere por lo menos un día para que actualice la base de datos. Si desea ver información más actualizada puede ejecutar manualmente los siguientes trabajos de SharePoint Timer Service.
Ahora el query t-sql para ver la información.
DECLARE @StartTime DATETIME = GETDATE() ,
@EndTime DATETIME = DATEADD(day, 1, GETDATE());
SELECT UserLogin AS [User] ,
COUNT(RowId) AS Hits ,
MAX(LogTime) AS LastAccessTime
FROM [dbo].[RequestUsage]
WHERE PartitionId IN (
SELECT PartitionId
FROM dbo.fn_PartitionIdRangeMonthly(@StartTime, @EndTime) )
AND LogTime BETWEEN @StartTime AND @EndTime
AND UserLogin IS NOT NULL
AND DATALENGTH(UserLogin) > 0
GROUP BY UserLogIn
Ahora el query t-sql para ver la información.
DECLARE @StartTime DATETIME = GETDATE() ,
@EndTime DATETIME = DATEADD(day, 1, GETDATE());
SELECT UserLogin AS [User] ,
COUNT(RowId) AS Hits ,
MAX(LogTime) AS LastAccessTime
FROM [dbo].[RequestUsage]
WHERE PartitionId IN (
SELECT PartitionId
FROM dbo.fn_PartitionIdRangeMonthly(@StartTime, @EndTime) )
AND LogTime BETWEEN @StartTime AND @EndTime
AND UserLogin IS NOT NULL
AND DATALENGTH(UserLogin) > 0
GROUP BY UserLogIn
Y eso es todo amigos,
Juan Manuel Herrera
Etiquetas:
Actualizaciones SharePoint 2013
martes, 19 de abril de 2016
Request Management un Servicio de Cuidado
Request
Management es un servicio introducido de SharePoint 2013, según la definición
que podemos encontrar en Technet dice: “Permite a los administradores
administrar las solicitudes entrantes y determinar cómo distribuir estas
solicitudes”. https://technet.microsoft.com/en-us/library/jj712708.aspx
Pero solo
habilitarlo y no configurarlo puede ser un gravísimo error. Si la entrega de las páginas en el navegador
es de forma desordenada o que demora alrededor de un minuto redireccionar de
una página a otra puede ser un síntoma que el servicio esta levantado y no está
configurado. Como se muestra en la
imagen de abajo.
Este
servicio deberá estar habilitado cuando contemos con más de dos servidores
front-end y lo tengamos configurado con
un balanceador o NLB, y tengamos una necesidad de administrar las
solicitudes a los front-end en una granja mediana o grande, no es necesario ni
aplicable para una pequeña granja.
Entonces la recomendación será apague el servicio. Este se puede realizar a través del Central Administration, en
Manage services on server.
Solo
presione la acción Stop sobre la fila donde aparece Request Management. Haga clic en el botón de Refesh del navegador
sobre la página y deberá ver el contenido de forma correcta.
Más sobre
request Management y como configurarlo si cuentas con más de un servidor Font-end
de tu granja.
http://www.harbar.net/archive/2012/11/12/Article-Request-Management-in-SharePoint-Server-2013.aspx
Hasta la próxima,
Etiquetas:
SharePoint 2013,
Solución a problemas SharePoint
domingo, 3 de abril de 2016
Los secretos de las listas de SharePoint (2003,2007,2010,2013)
Investigando y evaluando la lentitud de una granja de SharePoint me llevo a
indagar como SharePoint almacena las listas y aunque ya lo sabia no me habia
percatado de lo siguiente:
Todas las listas de SharePoint se almacena en una sola tabla llamada AllLists
en la base de datos de contenido (WSS_Content_????????????).
Segundo hallazgo todos los elementos de todas las listas incluyen las
bibliotecas (que son listas especializadas) se almacenan un una sola lista
llamada AllDocs.
Tercer hallazgo y aún mas revelador, los elementos eliminados permenecen en
la lista hasta que el proceso de papelera de reciclaje los elimine en algún
momento. Observen lo siguiente:
En la Interfaz Web la lista aparece sin elementos
Pero a nivel de base de datos es otra historia Al ejecutar los siguientes
Comandos T-SQL :
SELECT
*
FROM [WSS_Content_Reuniones].[dbo].[AllLists]
where
--tp_Title like '%factura%'
tp_id =
'00DA3DE4-D8AF-4EF1-A956-E44CBFEF1012'
SELECT count(*) as totalelements
FROM
[WSS_Content_Reuniones].[dbo].[AllDocs]
where ListId =
'00DA3DE4-D8AF-4EF1-A956-E44CBFEF1012'
Entonces si realizamos cargas grandes de documentos o elementos de las
listas, aunque los eliminemos impactaran las cargas futuras de los elmentos y en
las consultas que se hagan a la tabla.
Ahora cual es el campo que identifica si fue eliminado un elemento de la
lista. Veamos la siguiente consulta
SELECT
*
FROM [WSS_Content_Reuniones].[dbo].[AllDocs]
where
ListId = '00DA3DE4-D8AF-4EF1-A956-E44CBFEF1012'
AND LEN(DeleteTransactionId)
= 0
El campo es el DeleteTransacionId que si la logintud = 0 quiere decir que no
esta eliminado, y lo único no eliminado es el encabezado de la lista y las
páginas de la lista.
Para eliminar de la papelera de reciclaje los elementos podemos ejecutar las
siguientes lineas:
$site = Get-SPSite http://sp2013man/sites/prueba
$site.RecycleBin | where {$_.DirName -like '*pruebaFacturas'} | foreach{
$site.RecycleBin.Delete($_.Id)}
$site.RecycleBin.Count // resultado = 3
Si ejecutamos el siguiente
SELECT count(*) as totalelements
FROM
[WSS_Content_Reuniones].[dbo].[AllDocs]
where ListId =
'00DA3DE4-D8AF-4EF1-A956-E44CBFEF1012'
El resultado es ahora:
Bueno en esta aprendimos que SharePoint para grandes volumenes de datos no es
del todo la mejor opción de hecho encontré el siguiente artículo de msdn https://msdn.microsoft.com/en-us/library/ff647105.aspx
Using SharePoint Lists vs. Database Tables
Así que cuando pensemos grandes volumentes de elementos por el esquema de la
base de datos de contenido de SharePoint no es una buena idea.
Hasta la proxima amigos!
Etiquetas:
SharePoint 2013,
Solución a problemas SharePoint
Suscribirse a:
Entradas (Atom)















