SharePoint Latin Rotating Header Image

Troubleshooting

Recuperando datos desde una bases de datos de contenido SharePoint existente en SQL Server

En SharePoint 2010 y 2013 los administradores SharePoint tenemos la posibilidad de recuperar información desde una base de datos de contenido SharePoint que no necesariamente este montada sobre nuestra granja sino más bien solamente restaurada en SQL Server permitiéndonos realizar nuestra recuperación en menos tiempo y sin tanta configuración. Explico, en pasadas versiones para poder recuperar información desde un respaldo de una base de datos de contenido SharePoint normalmente teníamos que montar la base de datos restaurada sobre nuestra granja SharePoint, usando tanto comandos stsadm como la herramienta central de administración. Con SharePoint 2010 y 2013 no necesariamente es el caso, podemos hacerlo como antes o simplemente usar la herramienta central de administración para explotar el contenido de una base de datos SharePoint montada simplemente en un servidor SQL Server reduciendo con esto los tiempos de nuestros acuerdos de servicio ‘SLAs” y claro, ser más proactivos en la recuperación de datos.


Veamos entonces como lograrlo.


Accedemos a la herramienta central de administración y damos clic sobre el menú de respaldos y restauración para posteriormente seleccionar la opcion de recuperación de datos desde una base de datos no adjuntada.


unattached01


Especificamos el nombre e instancia de nuestro servidor SQL Server o bien el SQL Alias si es el caso donde se encuentra adjuntada nuestro respaldo de la base de datos de contenido SharePoint, especificamos el nombre de la base de datos a la cual nos queremos conectar para obtener los objetos SharePoint que requerimos recuperar. Seleccionamos el tipo de recuperación que queremos hacer, por ejemplo, podemos recuperar una colección de sitios, un sitio web o una lista.


unattached02


Usamos el explorador para buscar en este caso la colección de sitios que nos interesa recuperar directamente sobre la base de datos de contenido adjuntada en SQL Server. Como podemos ver, SharePoint es capaz de presentar todas las colecciones de sitio existentes, así mismo, SharePoint es capaz de explorar sitios web dentro de las colecciones e incluso listas y librerías.


unattached03


Una vez que elegimos el objeto a recuperar especificamos una ruta compartida y un nombre de un archivo físico donde será respaldado el contenido proveniente de la base de datos en cuestión. Posteriormente damos iniciar al proceso de respaldo.


unattached04


También, podemos monitorear el proceso en ejecución.


unattached05


unattached06


Al terminar validamos el archivo de respaldo generado.


unattached07


Y para finalizar simplemente ejecutamos un comando PowerShell para realizar el proceso de restauración del respaldo en cuestión sobre una colección de sitios existente en nuestra granja. El comando para restaurar una colección de sitios respaldada es:


Restore-SPSite http://intranet/teams/sp -Path \\d21-da\Scripts\backup\sp.bak


Validamos entonces la restauración y removemos el respaldo de la base de datos adjuntada en SQL Server. Esta es una técnica que permite recuperar información de una respaldo, asegúrate de definir un tiempo de respaldo SQL valido para que con ello puedas ser capaz de definir lo que llamamos el tiempo aceptable de perdida de datos. Por ejemplo, si tus respaldos SQL Server se ejecutan al final del dia, esto quiere decir que solamente puedes recuperar información de un día anterior y que tu potencial perdida de datos es de horas.

Una razón mas por la cual no inicializa la aplicación de servicio de perfiles de usuario de SharePoint 2010

Cada vez que la aplicación de servicio de perfiles de usuario de SharePoint 2010 se detiene borra algunos valores del registro de Windows relacionados con el servicio de sincronización del Forefront Identity Manager “FIM”. El valor de registro se llama “SQLInstance” y se ubica aquí HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FIMSynchronizationService\Parameters. Si esto no te ha sucedido es porque probablemente tu implementación de SharePoint utiliza la instancia Default del servidor SQL la cual es el nombre del servidor como tal, en mi caso yo utilizo una instancia específica distinta a la Default ejemplo “abc” entonces mi servidor e instancia serian “XYZ\abc”.


Esto fue lo que me encontré en los ULS logs:


UserProfileApplication.SynchronizeMIIS: End setup for ‘Intranet User Profile’.
SetupSynchronizationService :: Sync DB failover Check :: databaseServerMiis = sql_alias
SetupSynchronizationService :: Sync DB failover Check :: originalSyncConnectionString = Data Source=sql_alias;Initial Catalog=XYZ_XYZ_Intranet_UserProfile_Sync;Integrated Security=True;Enlist=False;Connect Timeout=15
SetupSynchronizationService :: Sync DB failover Check:: originalSyncConnectionDataSource = sql_alias
SetupSynchronizationService :: Sync DB failover Check :: new datasource string on connection object = sql_alias
UserProfileApplication.SynchronizeMIIS: Begin setup for ‘Intranet User Profile’.
ILMPostSetupConfiguration: ILM Configuration: Validating installation of SQL Service.
ILM Configuration: Error ‘ERR_SERVICE_NOT_INSTALLED’.
ERROR ILMPostSetupConfiguration: ILM Configuration: Validating installation of SQL Service FAILED …
ILM Configuration: Validating account.
ILM Configuration: Validating the system groups…
ILM Configuration: Error ‘ERR_INVALID_GROUPS’.
UserProfileApplication.SynchronizeMIIS: Failed to configure MIIS pre database, will attempt during next rerun. Exception: System.Configuration.ConfigurationErrorsException: ERR_INVALID_GROUPS at Microsoft.Office.Server.UserProfiles.Synchronization.ILMPostSetupConfiguration.ValidateConfigurationResult(UInt32 result) at Microsoft.Office.Server.UserProfiles.Synchronization.ILMPostSetupConfiguration.ConfigureMiisStage1() at Microsoft.Office.Server.Administration.UserProfileApplication.SetupSynchronizationService(ProfileSynchronizationServiceInstance profileSyncInstance). UserProfileApplication.SynchronizeMIIS: End setup for ‘Intranet User Profile’.


Después de leer un poco en internet encontré esto y pude ver que el valor de registro SQLInstance estaba vacío por ende no se podía conectar como lo dice las entradas del log.


 


Así que con solo cambiar esa llave estaría solucionado el problema pero tendríamos que asegurarnos que cuando se detenga e inicialice de nuevo la aplicación de servicio de perfiles de usuario tengamos que ir al servidor a establecer este valor una vez más y manualmente, cosa que sinceramente no es lo mejor.


En mi caso muy particular y espero el de muchos también, tengo un SQL Alias que apunta a mi servidor de base de datos, lo que hice fue editar el SQL Alias para que contenga el nombre de la instancia.


 


De nuevo al inicializar el servicio de perfiles todo funciono a la perfección y mi registro de Windows no tuvo ni tendrá que ser tocado por nadie.

Exchange 2010 GetSteppablePipeline Issue

Llegas a la oficina en lunes y te encuentras con que la consola de administracion de Exchange 2010 no permite explorar los nodos de las opciones disponibles. De pronto sale un error como “GetSteppablePipeline” with “1” argument blablabnla. El caso es que no funciona.

Bueno, despues buscar un poco en google encontré que hay que desbloquear los permisos de PowerShell para permitir a la consola ejecutar comandos que mayor nivel de permisos. Esto se hace mediante la consola de Script de PowerShell.

  1. Ejecutas como administrador la consola de PowerShell
  2. Invocas el comando Get-ExecutionPolicy y debera retornar la palabra Restricted
  3. Invocas el comando Set-ExecutionPolicy RemoteSigned y listo.
  4. Ahora si carga la consola de administracion de Exchange 2010 y listo!

Una menos! al parecer esta situacion sucede cuando instalamos algunos updates de Exchange. Mejor me regreso a mi producto favorito, viva SharePoint!

Fix al error The workbook cannot be opened de Excel Services en SharePoint 2010

Si has llegado hasta aquí es porque seguramente Excel Services no esta mostrando la información que esperas, seguramente marca el error de “The workbook cannot be opened” al tratar de visualizar sobre tu navegador algún documento de Excel.


Problema


Si vemos en el visor de eventos del servidor SharePoint encontramos el siguiente mensaje:


SQL Database ‘TrainerNet_Intranet_Content’ on SQL Server instance ‘HGDC’ not found. Additional error information from SQL Server is included below.
Cannot open database “TrainerNet_Intranet_Content” requested by the login. The login failed.
Login failed for user ‘HG\spsvcapp’.


Esto quiere decir que la cuenta HG\spsvcapp, no se esta conectando a la base de datos de contenido de la aplicación web donde estamos tratando de visualizar el documento de Excel. Básicamente, esta cuentala que el application pool de la aplicación de servicio de Excel Services utiliza para ejecutar el servicio y es muy probable que esta sea diferente a la cuenta con la que el application pool de la aplicación web esta ejecutandose. En mi caso mis aplicaciones web usan HG\spweb.


¿Solución?


La solución es darle acceso a la cuenta con la cual corre Excel Services a la base de datos de contenido de la aplicación web donde reside mis archivos de Excel que quiero visualizar.


¿Cómo?


Usando el siguiente comando de PowerShell.


PS C:\Users\spfarm> Get-SPWebApplication


DisplayName Url


SharePoint – ent22.sharepoi… http://ent22.sharepoint.hg.com/


SharePoint – mysite.hg.com80 http://mysite.hg.com/


PS C:\Users\spfarm> $web = Get-SPWebApplication “http://ent22.sharepoint.hg.com”


PS C:\Users\spfarm> $web.GrantAccessToProcessIdentity(“hg\spsvcapp”)


Resultado


El resultado es que ahora nuestra base de datos de contenido ha dado permiso de acceso con rol “db_owner” a la cuenta de aplicación de servicio de excel services.


clip_image001



 ACTUALIZACION:


Hay mas información sobre el tema aqui:


http://technet.microsoft.com/en-us/library/ee513091%28v=office.14%29.aspx

Configurando un cluster de dos nodos balanceados para WFE de SharePoint

En este post vemos como configurar un cluster de dos servidores utilizando Network Load Balancing de Windows Server 2008 R2. En particular este cluster nos puede mejorar el desempeño significativamente. Con esta alternativa de configuración a nivel software se puede dividir la demanda o peticiones en más de un servidor para que en conjunto respondan como uno solo. Particularmente esta configuración se creó para una granja de servidores web front end de SharePoint 2010 en donde dos servidores web estarán recibiendo las peticiones de usuario vía dirección URL.

Lo requisitos para configurar un cluster son:

Agregar la característica de Windows llamada Network Load Balancing en cada uno de los nodos que conformaran el cluster

clip_image002

Asegurarse que cada nodo del cluster deban de tener un IP dedicado o fijo ya que NLB no puede trabajar con IPs dinámicas generadas por un servicio DHCP

clip_image003

El cluster tendrá un IP virtual que recibirá las peticiones y estas serán transferidas de forma automática a cualquier nodo que conforma el cluster para responder la petición

clip_image005

Probar con ping que sucede cuando querevemos ver que responde el nuevo host.

clip_image007

Existen otras alternativas tecnológicas para crear y gestionar clusters tanto a nivel software como hardware.

Los pasos para la configuración de un cluster son:

1. En primer nodo crear el cluster y agregar el primer nodo

clip_image009

2. En el segundo nodo conectarse a cluster existente y agregar el host al cluster

clip_image011

Probamos un ping para ver que responde:

clip_image013

Esta tecnica tambien funciona para cualquier desarrollo web que se hospeda sobre servidores Windows. :)

 

NOTICIA: Aqui lo explicado anteriormente en vivo y a todo color en un video que subi a mi canal de Youtube al cual te puedes suscribir aqui: https://www.youtube.com/haarongo 

Configurando User Policy en SharePoint 2010

Como parte de los procesos internos de diagnóstico de amenazas y riesgos de seguridad que cualquier área de IT anualmente realiza, se tienen herramientas automatizadas para evaluar aplicaciones y su nivel de vulnerabilidad. Se nos ha solicitado dar permisos de acceso a una cuenta de usuario temporal para realizar una prueba de la superficie de seguridad de SharePoint. Y la pregunta que surge es en donde le daremos permisos a esta cuenta temporal para acceder a evaluar. Uno pensaría que en el Top Level Site Collection en algún grupo de seguridad podríamos asignarle permisos de acceso a dicha cuen

ta, sin embargo, que pasa cuando tenemos gran cantidad de site collections, ¿tendríamos que acceder a dar permisos de acceso en cada una?

Una alternativa aceptable para lograr dar permisos globales y de forma temporal a esta cuenta es la opción de User Policy que existe en las propiedades de un Web Application dentro del Central Administration.

Seleccionamos Manage Web applications y de la lista elegimos la aplicación web donde aplicaremos la política, después damos clic sobre User Policy.

image 

Dentro de User Policy seleccionamos Add User y especificamos sobre qué zona dentro del Web Application estaremos otorgando permisos. En este caso utilizare All Zones, sin embargo podríamos ser lo suficientemente estrictos como para especificar en cuál de las zonas disponibles esta política de acceso tendría efecto.

image

A dar clic en Next capturamos la cuenta de usuario temporal y el nivel de permisos que tendrá sobre la zona previamente especificada. Lo interesante aquí es que para la cuenta en cuestión podemos elegir el nivel de permiso y para no dejar rastro de la cuenta o proceso automatizado de evaluación sobre los cambios o accesos realizados seleccionemos la opción de que la cuente se muestre como System Account.

image

El resultado es el control de los permisos que las cuentas tienen sobre nuestras aplicaciones web de SharePoint. En cualquier momento un administrador puede acceder y remover los permisos.

image

Con esto durante damos una alternativa de solución para el escenario de acceso temporal para pruebas de seguridad realizadas por el área de IT como parte de sus procesos regulatorios internos.

Accediendo a documentos SharePoint desde explorador de Windows

El día de hoy me contactó un colega para preguntar sobre cómo manejar la información de una biblioteca de documentos SharePoint 2010 desde una experiencia de usuario totalmente familiar que no requiera capacitación y/o dependencia al uso del mismo SharePoint como tal.

El escenario consiste en poner a disposición un conjunto de archivos a un grupo de personas que se encuentran geográficamente dispersos y que requieren colaborar en el consumo y edición de los mismos archivos. Claro que uno primeramente piensa en crear un sitio de equipo y mostrar las bondades pre fabricadas del producto, sin embargo, fue muy estricto en especificar que la experiencia de usuario debe de ser desde explorador de Windows ya que la manera en que trabajan estas personas es abrir un multiples de archivos relacionados de un software no convencional con simplemente seleccionarlos desde el explorador de windows, dar clic derecho y abrirlos.

La solución que pude ofrecer fue la de mapear una biblioteca de documentos de SharePoint 2010 hacia una unidad lógica dentro del disco duro para que así se pueda trabajar con los archivos sin necesidad de acceder al portal SharePoint desde un navegador y seguir respetando el requerimiento de seleccionar y abrir conjuntos de archivos.

Buscamos la biblioteca en cuestión y en el Tab Library del Ribbon elegimos la opción de Open with Explorer:

image

Esto carga una ventana de explorador de Windows con las carpetas y elementos de nuestra biblioteca de documentos. Seleccionamos y copiamos la dirección Url de la ventana de explorador de Windows y presionamos la tecla Alt para mostrar la barra de menú, damos clic sobre Tools y seleccionamos el sub menú Map Network drive para cargar la ventana de configuración de mapeo de un ruta de red.

SNAGHTMLc54a8a

Configuramos la unidad de red con la informacion de unidad y las credenciales necesarias para acceder.

SNAGHTMLc728d8

Especificamos la unidad que se asignara a esta carpeta. En Folder pegamos nuestra dirección Url copiada desde el explorador de Windows. Damos clic en Finish, con esto se configura en nuestro explorador de Windows una nueva unidad de disco duro que de forma directa mapea el contenido de una biblioteca de documentos.

Cuando los usuarios acceden a su equipo simplemente cargan su explorador de Windows y tienen  a su disposición los documentos de SharePoint.

SNAGHTMLc97e47

Es posible renombrar la unidad con algo un poco mas descriptivo.

image

Asi mismo es posible crear un Group Policy Object para empujar a todos los usuarios del dominio la configuracion mencionada sin necesidad de que los mismos usuarios tenga que realizarla. 

¿Desaparecieron las opciones del menú de acciones de sitio?¿No se puede agregar, modificar o eliminar contenido en SharePoint? ¿A tan solo 3 horas de la presentación tan importante con el cliente estratégico?

Sucede que cuando hacemos un respaldo en SharePoint 2007 mediante el comando stsadm.exe –o backup –url http://xxx –filename “c:\xxx.dat” la base de datos se configura automáticamente en modo de solo lectura y cuando la generación del respaldo termina la base de datos se configure en el modo original.


Pero que sucede si por alguna razón cósmica el proceso de respaldo casi nunca falla? El estado de configuración de base de datos de solo lectura no se establece al modo original causando el siguiente comportamiento:


image


Así es, la cuenta del sistema que se supone debería de tener todas las opciones del menú de acciones de sitio presenta solo una. Seguramente te iras a ver los grupos y permisos y confirmaras que tu cuenta esta como propietario o como administrador de la colección de sitios y sin embargo el mismo comportamiento.


Aqui mas informacion al respecto: http://technet.microsoft.com/en-us/library/cc262811%28office.12%29.aspx