jueves, 31 de julio de 2008

7 artículos sobre la arquitectura de WCSF

Preguntas como por que se colocan las propiedades en la interfase de la vista, que debe de ir en el Application controller y para que nos sirve, y como agrupar los módulos y que poner en ellos, son algunas de las respuestas que encontraras en estas publicaciones de Simon Ince un Consultor de desarrollo de Reino Unido.

Definitivamente el tema de WCSF a regresado a este blog e iniciare una serie de "Post" al respecto, muy probablemente incluyendo Unity y la Entlib 4.0.

Para los que no sepan que es WCSF (de sus siglas en inglés Web Client Software Factory), pueden ver post pasadas he escrito sobre el tema y allí encontrarán los sitios oficiales de la WCSF, que dicho sea de paso se quedo en la version 2.0 para correr en 2008 y muchos de nosotros de los seguidores de las factories estamos esperando la nueva versión liviana con Unity que mpuleio esta realizando desde hace varios meses (puedes checarlo aquí: http://blogs.msdn.com/mpuleio/archive/2008/05/21/converting-the-composite-web-application-block-to-unity-using-the-unitycompositioncontainer.aspx)

Para los interesados en capas (no tan novatos en el tema) Simon toca el tema repetidas veces y haces excelentes observaciones y sugerencias.

En el primer post es una introducción sobre la elección de una arquitectura base, los patrones utilizados en la WCSF el MVP (The Model-View-Presenter) y el Application Controller. http://blogs.msdn.com/simonince/archive/2008/06/05/wcsf-application-architecture-1-introduction.aspx

En el segundo post explica de una forma magistral el uso del Application Controller y abstrae el concepto de una forma sobresaliente o "outstanding", el cual le llamo Page Flow Slave y lo que hizo fue separar la lógica del negocio y permitir al controlador que decida como debe de navegar la página, simple y hermoso.

http://blogs.msdn.com/simonince/archive/2008/06/06/wcsf-application-architecture-2-application-controller.aspx

En el tercer post, (gua!) expone sobre el Modelo MVP, y explica algo que me abrió completamente los ojos, y fue lo siguiente:

El presenter no tiene porque involucrarse con ninguna tecnología de Asp.Net, el solo conoce un contrato de la vista y allí debe de incluirse todo, lo que verán en el código de este tercer post es que cambio la referencia en el presenter de context.current.Identity.name por una propiedad llamada UserName de la interfase que representa la vista y además esto facilita la prueba de la lógica del presenter, además de ser un diseño desacolpado.

Por ultimo en este tercer post, presenta con mucha claridad la separación de responsabilidades del Controlador, lógica de negocio y el presentador de la siguiente forma:

class MyViewPresenter : Presenter<IMyView>

{

void ViewLoaded()

{

View.DisplayText("Welcome");

}

void OnExit()

{

BusinessLogic.ExitUser(View.CurrentUsername);

ApplicationController.CompleteExit();

}

}

El presentador se encarga de mostrar la data proveniente de la capa de negocios y de responder a los eventos del usuario (o la vista) pero deja al controlador la lógica de la navegación y desconoce el ambiente del controlador y de la lógica de negocios. El controlador interactúa con el módulo base de las WCSF donde esta implicado la infraestructura de ASP.NET y la lógica de negocios interactúa con la capa de datos. Es decir nuevamente el principio de la separación de responsabilidades.

http://blogs.msdn.com/simonince/archive/2008/06/11/wcsf-application-architecture-3-model-view-presenter.aspx

El cuarto post, hace una pausa en las WCSF para hacer una reflexión importante sobre las oportunidades que si tienen para mejorar el código abstrayendo y desacolplando el código, de tal forma que le quito la responsabilidad al controlador de manejar la navegación a nivel de comandos de asp.net y lo abstrajo en otro objeto que bien puede ponerse en el modulo base o fundational para diluir responsabilidades. Los dejo con el código resultante y vean lo detalles en el post original:

class ApplicationController

{

private INavigationService _navigationService;

[ServiceDependency]

public INavigationService NavigationService

{

set

{

_navigationService = value;

}

}

public void CompleteWizard()

{

_navigationService.Navigate(Screen.Home);

}

}

El cuarto post:

http://blogs.msdn.com/simonince/archive/2008/06/16/wcsf-application-architecture-4-environment-abstraction.aspx

No menos importantes los siguientes post abarca los temas de modularidad, estructuración de los módulos y servicios. Lamentablemente aunque menciono algunos aspectos muy importantes se le escapo algunos detalles en código, se requiere un nivel mas avanzado de manejo de patrones de diseño para entender con claridad las ideas propuestas. Los dejo con el link que los lleva al resto de links:

http://blogs.msdn.com/simonince/archive/2008/07/18/wcsf-application-architecture-7-remote-logic-with-wcf-services.aspx

Espero haber generado el interés que me provocó a mi al leer estos 7 posts sobresalientes sobre la WCSF.

Code4Fun!,

Manolo Herrera

martes, 29 de julio de 2008

Mas nostalgia por la salida de Bill Gates de Microsoft

Para los amigos que comparten este sentimiento y quieren saber mas de este personaje que ha impactado con sus ideas y su compañía a millones de personas al rededor del mundo, les recomiendo este vídeo, que tiene una excelente calidad y contenido:

Bill Gates, Loocking back, Moving ahead (http://www.microsoft.com/presspass/exec/billg/videos/)

Que lo disfruten y se apasionen mas por generar ideas como este grande de la industria.

Code4Fun!,

Manolo Herrera

jueves, 24 de julio de 2008

La Comunidad continua consolidándose y más patrocinadores se suman a nosotros

Estimados amigos de la comunidad, creo que la visión de llevar a otro nivel que se inicio por una verdadera necesidad de conseguir patrocinio esta llevándose a cabo, gracias al equipo de líderes (Cristian, Jose Rolando, Carlos y Marlon) incluyendo a nuestro amigo Erick Ezquivel de Microsoft que se ha puesto la camiseta de la comunidad y se ha hecho parte de nosotros, se siguen sumando los patrocinadores, tenemos a las dos empresas mas fuertes certificadas por Microsoft de Entrenamiento en Guatemala apoyándonos.

Exacutrain proveyendo sus instalaciones para realizar las reuniones presenciales y New Horizons apoyándonos de entrenamiento gratuito en línea por ser miembros de la comunidad. 

Además ya contamos con el patrocinio de Jeff Brains, que por cierto ayer se rifaron 4 licencias de R# y dot trace (producto de Jeff Brains), de Manning para descuentos en los libros y ofertas especiales para la comunidad, tenemos el apoyo de INETA, Culminis, Community Server, proveyendo la herramienta done tenemos el hosting del sitio de la comunidad y por supuesto de Microsoft (ayer rifamos un windows vista ultimate y un kit de licencias VSTO 2008 standar, Server 2008 y el CTP de SQL 2008).

Así que celebramos a nuestra comunidad que somos todos nosotros y que sigamos creciendo presencialmente y en-línea también.

Les dejo con el mensaje de Erick sobre el patrocinio, el enlace también esta en el sitio de la comunidad http://guatecommunity.net :

"Quiero informarles que New Horizons nos está ofreciendo regalarle un curso del programa de NH@Distance a todos los miembros de la comunidades de IT Pro y Desarrollo. Les estoy enviando el comunicado que me gustaría publicaran en los sitios respectivos de la comunidad para que los miembros estén al tanto. Para tener derecho al curso estamos pidiendo:


1.       Estar inscrito en cualquier de los sitios de la comunidad que corresponde a su ciudad y país si todavía no lo están. Siéntanse en la libertad de promover sus sitios para invitar nuevos miembros. Los sitios de las comunidades están indicados en este sitio: www.nhatdistance.com/comunidad.

2.       Además de estar inscrito debe aprobar el examen correspondiente a la primera estrella en cualquiera de los 2 programas de cinco estrellas, léase Desarrollador Cinco Estrellas y Profesional Cinco Estrellas.


3.       Una vez tenga cubiertos los primeros dos puntos, debe seguir el proceso indicado en este sitio www.nhatdistance.com/comunidad para pedir su curso.
4.       El curso puede ser de:
a.       Windows
b.      Base de datos
c.       Visual Studio
5.       El curso es para todos los miembros, así que les pediría que por favor verifiquen sus sitios para que puedan registrarse los que todavía no lo son sin ningún problema. Recuerden que es un requisito para poder pedir el curso."

Hasta la próxima!,

 

Manolo Herrera

martes, 22 de julio de 2008

Los 7 hábitos de las personas altamente efectivas aplicado al desarrollo de sitios Web 2.0

Muy interesante el vídeo de Darren Guarnaccia (Un experto en la Web)(Ver video) donde aplica los conceptos del Libro de Stephen Covey los 7 hábitos de las personas altamente efectivas, en el desarrollo de sitios Web 2.0 donde no solo hay disponible tecnología para que la experiencia del usuario sea rica y sensible en cuanto a la navegación del sitio, sino que realmente pongamos a trabajar la tecnología disponible y la hagamos efectiva, que escuche al cliente, que cambie en base a las preferencias del cliente, que solicite retroalimentación que se analice y devuelva algún valor al cliente. Estos son algunos de los conceptos de Stephen Covey alineados al desarrollo de Sitios Web 2.0.

Pero mas que una mera aplicación es el entendimiento de una visión de lo que se espera sea una sitios de la generación 2.0 de sitios Web, nos empuja a ver claramente las expectativas que han generado el paradigma Web 2.0. La tecnología esta disponible: Portales y Administración de Contenido pero su aplicación en muchos casos dista de la realidad, por falta comprensión de la aplicabilidad de las herramientas tecnológicas como lo es Microsoft Office SharePoint Server 2007, inevitablemente debo de mencionarla cuando pienso en alta disponibilidad, escalabilidad en el motor de búsqueda que nos provee, en la personalización de estos resultados y en la alta disponibilidad de contenido por parte de usuarios no tecnólogos pero si, publicistas y editores, y expertos en áreas como la ingeniería mecánica o metodológica al servicio de las compañías o clientes a los que se deben. En la inteligencia de negocios que puede obtenerse tanto de la información que provee como de el uso que de le da el Portal, estas son características que hacen a MOSS 2007 una herramienta para la Web 2.0.

Un concepto que me gusto mucho escuchar en el vídeo fue Engage que en español podemos traducir como engranar de eso se trata la Web 2.0 que se logre involucrarse o interesarse con el usuario. Esto se traducirá en clientes leales, en relaciones duraderas y no en ventas de duración única. Amigo es tiempo de cambiar el paradigma a uno has efectivo y aquí es donde entran los desarrolladores e implementadores de soluciones es devolver valor a la inversión hecha es dar resultados de nuestro trabajo realizado, es la satisfacción que hemos estado buscando dar a nuestros usuarios y clientes. Por ello los Portales, la colaboración, las redes sociales, la administración de contenido, no son ya el futuro sino el presente que cambiara como hacemos las cosas y como deben verse.

Un Resumen del vídeo y comparación de los 7 hábitos de Stephen Covey Aplicados al desarrollo Web 2.0 según Darren Guamarccia:

Stephen CoveyDarren Guamarccia
1. Ser Proactivo1. El cliente esta a cargo (Sea proactivo con el feedback del cliente y analice su navegación, sea proactivo con esta información).
2. Comenzar con el fin en la mente2.Implemente sus objetivos del sitio con consistencia. Guíe a los usuarios donde usted quiere que vayan. Enfoquese en lo que quieren los clientes lograr en el sitio.
3. Poner Primero lo Primero3. Balancear las experiencias del usuario con sus metas. (Priorize su sitio en base a las expectativas del usuario, crea valor para sus clientes, haga parte de la experiencia a sus clientes)
4. Pensar Ganar GanarDevuelva valor a sus visitantes (devuelva resultados de las encuestas, colocando el contenido que buscan sus clientes, Ofrezca información de expertos)
5. Buscar primero EntenderSea honesto y evalué lo que no esta funcionando. (Conozca las expectativas de sus clientes, descubran que es lo que realmente buscan, busque lo que lograron realizar y haga que lo puedan hacer).
6.SinergizarCrear un dialogo fluido con sus clientes. (Del feedback del cliente, de los foros escuche, interactue y genere nuevas y mejores soluciones para ellos). Haga que la comunidad de clientes trabaja para usted.
7.Afilar la SierraAfile la sierra de su Sitio Web
(Renueve las técnicas que funcionan, Utilice pruebas y mecanismos de control para analizar la efectividad del mercadeo)

Quienes están interesados en conocer mas sobre los 7 hábitos visite el siguiente sitio: http://www.franklincovey.com/fc/index.jsp?

Si están interesados en el libro de los 7 hábitos : http://shopping.franklincovey.com/shopping/catalog/category.jsp?navAction=push&navCount=0&crc=cat30019&id=cat202.

Si quiere saber sobre la Web 2.0 visite: http://es.wikipedia.org/wiki/Web_2.0 o http://msdn.microsoft.com/en-us/library/bb735306.aspx

Si están interesados en ver como SharePoint da soluciones Web 2.0 aquí una referencia: http://blogs.msdn.com/sharepoint/archive/2008/05/02/colleagues-social-distance-relevance-in-people-search-and-other-social-networking-tools-in-sharepoint.aspx

Hasta lo próxima!

Manolo Herrera

lunes, 21 de julio de 2008

Problemas con My Task en Project Server 2007

Pareciera que esto ocurre a menudo en Project Server 2007, especialmente cuando publicamos los proyectos y hemos hechos muchos cambios. Es importante notar que en Proyect Server cada tarea presenta una fila en base de datos por lo menos y que debemos tener cuidado al modificar el proyecto y publicarlo ya que podemos provocar la corrupción de una o varias tareas de algún proyecto.

El síntoma

Muy posiblemente si no es desplegada las tareas en el link de My Task a todos los usuarios o le de un error desconocido (An unexespected error has occured) a uno de ellos se debe a que algunas filas de las tareas están corruptas.

Ubicando el Error

Para ello debe de ejecutar un query sobre la base de datos Project_Published que le mostrará las filas con problemas y quién es el autor de la misma. El query básicamente verifica si la tabla de las tareas grabadas no exista en la tabla de tareas asignadas que tenga un proyecto y recurso asignado en la tabla de tareas asignadas. Esto debe ejecutar desde el Managment Studio para el caso SQL-Server 2005 y el código es el siguiente:

SELECT MSP_PROJECTS.PROJ_NAME, MSP_ASSIGNMENTS_SAVED.TASK_NAME,
MSP_RESOURCES.RES_NAME, MSP_ASSIGNMENTS_SAVED.ASSN_UID,
MSP_ASSIGNMENTS_SAVED.PROJ_UID,
MSP_ASSIGNMENTS_SAVED.TASK_UID, MSP_ASSIGNMENTS_SAVED.RES_UID
FROM MSP_ASSIGNMENTS_SAVED INNER JOIN
MSP_PROJECTS ON MSP_ASSIGNMENTS_SAVED.PROJ_UID =
MSP_PROJECTS.PROJ_UID INNER JOIN
MSP_RESOURCES ON MSP_ASSIGNMENTS_SAVED.RES_UID =
MSP_RESOURCES.RES_UID
WHERE (NOT EXISTS
(SELECT TASK_UID
FROM MSP_TASKS_SAVED
WHERE (TASK_UID =
MSP_ASSIGNMENTS_SAVED.TASK_UID)))

Por lo menos deberá mostrarle una fila de resultado sino es que mas, si no le muestra nada el error no se debe a una tarea corrupta sino el problema es por otro lado.

La Solución

Dentro de MS Project Professional 2007 (debe de tener derechos de administrador o ser el Project Manager del proyecto) haga lo siguiente:

  1. En la vista Gantt, inserte la columna Publish, y seleccione la tarea o tareas que le mostro el query de arriba y en la columna Publish seleccion "No".
  2. Salve y Publique el Proyecto.
  3. Luego Seleccione "Si" para las tareas que puso "No".
  4. Salve y Publique el Proyecto.

Con ello debería de eliminarse el problema.

Hasta pronto,

Manolo Herrera

viernes, 11 de julio de 2008

Recuperación de un Servidor MOSS 2007

Esto es un tema algo escabroso, para los que nos hemos topado con el problema de recuperar un Portal hecho en MOSS 2007, entenderán de lo que les habló, para los que se toparon que este articulo de primera mano, Lucky guy!, se evitarán muchos dolores de cabeza. Por lo que este articulo pretender ser una guía práctica y probada para la recuperación total de un Portal hecho en MOSS 2007, planteado bajo dos escenarios la recuperación de un servidor con el mismo nombre o con distinto. Antes de ello describo brevemente otros métodos con los que me tope pero que fueron infectivos o poco confiables.

Hay 3 herramientas accesibles para recuperar un servidor MOSS 2007, estas son:

1) Central Administration Site

2) Línea de Comando stsadm.exe

3) SQL-Server Managemente Studio

La primera y segunda herramienta por si sola no me provee una solución confiable de la restauración, por lo que brevemente las mencionaré, ya que puede ser una solución alterna para una recuperación fácil y rápida para realizar pruebas rápidas de un Portal existente. Lo menciono en este artículo para que sepan amigos lectores que ya probé con esas herramientas y no me dio los resultados esperados. Es curioso que Microsoft haga mención precisamente de esto, indicando que las herramientas de SharePoint Products no recuperan a nivel de farm dicha operación. Para citar el documento que encontrarán en la siguiente dirección: http://technet.microsoft.com/en-us/library/cc262129.aspx Y dice de la siguiente manera:

Important: Although the configuration database and Central Administration content database can be backed up, restoring backups of the configuration database and Central Administration content database taken from a running farm by using the tools built in to SharePoint Products and Technologies or SQL Server is not supported.

This is because data in these databases may not be synchronized with data in other Office SharePoint Server 2007 or Windows SharePoint Services 3.0 databases. Therefore, the tools built in to SharePoint Products and Technologies do not recover these databases during a farm-level restore operation.

La mas fiable es la de SQL-Server además de todas las ventajas que provee por el simple hecho de que es una herramienta familiar para la mayoría de desarrolladores y gente de IT de las herramientas de Microsoft, se crean tareas para su respaldo periódico y lo mejor dejamos la responsabilidad al DBA o al responsable de dicha área.

Dentro de esta ultima solución hay un método para la recuperación total del mismo servidor exactamente como estaba, muy fácil y efectivo, pero debe de tener el mismo nombre el servidor donde se recuperará. Ya que luego de la restauración de cada base de datos en un servidor SQL Server, luego de instalar el MOSS 2007 como un Server Farm con el Asistente de Configuración se le indica que se conecte a un Server Farm Existente y este creará las aplicaciones Web en el IIS y hará las conexiones a la base de datos por nosotros.

Para el segundo escenario de recuperación de MOSS 2007 en un nuevo servidor; es una opción un poco mas laboriosa pero igualmente fiel, ya que es necesario configurar MOSS 2007 pero igual de efectiva al momento de restaurar el respaldo de la base de datos de contenido de nuestros sitios. Ideal para tener un servidor de pruebas o desarrollo o para reconfigurar la granja de servidores con el mismo contenido del sitio. Así mismo se utiliza SQL-Server para restaurar la base de datos de contenido del sitio. Para esta segundo escenario y para la solución que le dí podriamos utilizar el mismo método con las herramientas Central Administration y stsadm.exe, pero la primera no se puede dejar programado la realización del backup y de la otra no es una herramienta de dominio común y deberemos investigar el script para generar la tarea y tendremos la tarea extra de monitorar algo adicional para que no nos falle en el momento menos indicado. (Con el mismo procedimiento pero en vez de utilizar SQL-Server podemos utilizar la siguiente línea de comando: stsadm.exe -o bacup -url [http://servername/site] -filename [Ruata+nombreArchivo], y para recuperar el respaldo con el mismo procedimiento mencionado arriba (y abajo con mas detalle) reemplazar el restore de SQL por la siguiente línea de comando: stsadm.exe -o restore -url [http://servername/site] -filename [Ruata+nombreArchivo] -overwrite. Esto prueba que no es en sí la herramienta si no el procedimiento a utilizar, pero SQL nos provee un ambiente mas amigable y confiable.

De lo aprendido podemos mencionar algo muy importante de conocer sobre MOSS 2007 y es que absolutamente todo esta contenido en bases de datos de SQL-Server, los sitios Web solo tienen los controles, Páginas Web, Web Parts, estilos predeterminados, y algún contenido estándar de los Portales de SharePoint y todo lo que es "configurable" y que sea contenido personalizados a los sitios que vayamos personalizando es almacenado en las base de datos de SQL-Server, inclusive la configuración que se haga de MOSS que es un sitio Web es almacenada en una base de datos de SQL-Server.

Metodos de Recuperación no del todo Fiables

Mencionaré las herramientas disponibles y los resultados obtenidos antes de ver la solución fiable, para los que se preguntan porque no pase por allí primero antes de plantear otra solución y si pase por allí pero no fueron del todo satisfactorias y confiables su restauración, no así su proceso de respaldo que es muy sencillo y pareciera incluirlo todo:

1) Central Administration Site:

La primera opción lógica es escoger la herramienta gráfica, los pasos son los siguientes:

Operación de Respaldo

    1. En el servidor donde esta instalado MOSS 2007, Vaya a SharePoint 3.0 Central Administration.
    2. Central Administration- Operations - Bakup and Restore - Perform a Backup.
    3. Haga clic sobre farm y presione el botón [Continue to Backup Options].
    4. Escriba la ubicación física donde se va almacenar el Backup que puede ser una ruta a un espacio en la red, donde tenga permisos.
    5. Presione OK, y espere a ver que todo el proceso se ha completado, la página Web se actualizará automáticamente.

En la ubicación que indicó encontrará un archivo como este nombre spbrtoc.xml un directorio spbr0000 que contiene el log de la copia de respaldo en un archivo nombrado así: spbackup.log. Allí podremos revisar a detalle la copia de respaldo, si se efectúo con éxito.

Operación de Recuperación del Respaldo

Prerequisitos:

Deberá disponer de un servidor que tenga instalado el MOSS 2007 por lo menos en la fase que tenga instalado la herramienta Central Administration. (La instalación del producto ser verá en la solución final, por lo que aquí no se detalla).

    1. En el servidor donde esta instalado MOSS 2007, Vaya a SharePoint 3.0 Central Administration.
    2. Central Administration- Operations - Bakup and Restore - Restore from Backup.
    3. En Backup Location: Escriba la ubicación física donde se encuentra los archivos de respaldo y haga clic sobre el botón [Ok].
    4. Luego clic sobre el circulito vacio en Select y haga clic sobre el botón [Continue Restore Process]-
    5. Clic sobre la cajita de Farm.
    6. Nuevamente clic sobre el botón [Continue Restore Process].
    7. Seleccionemos Same Configuration deberá colocar el usuario y la clave del usuario donde lo requiera. Si fuera otro es oportunidad de cambiarlo aquí.
    8. Presione [Ok] y sea paciente a que termine el proceso de recuperación; la página Web se actualizará automáticamente. Cuando termine el proceso ud. se dará cuenta.

2) Línea de Comando:

Para hacer una copia de respaldo completo por línea de comando:

En la siguiente ubicación donde se encuentra el stsadm.exe:

[drive]\program files\common files\microsoft shared\web server extensions\bin\12\

stsadm.exe -o backup -directory \\backupservername\backups\ -backupmethod full

Donde -o significa la operación a realizar.

-directory la ubicación de destino de los archivos de backup

-backupmethod opciones pueden ser full or Differential.

Para restaurar esta backup que necesitas:

Un Servidor Windows con MOSS 2007 instalado sin haber corrido el Asistente de Configuración y una instancia de SQL-Server disponible ya sea en el mismo servidor o en otro, y por ultimo ejecutar la siguiente línea de comando:

[drive]\program files\common files\microsoft shared\web server extensions\bin\12\

stsadm.exe -o restore -directory \\backupservername\backups\ -restoremethod overwrite

RESULTADO: Aunque me hizo la restauración de la mayoría, algunos servicios no me permitió crearlos, me genero algún error desconocido, y si primero levantaba los servicios (algunos de ellos crean base de datos) al finalizar la restauración me marcaba que habían ocurrido algunos errores que impidieron la recuperación de las sesiones dentro de MOSS 2007. Con lo que me quedo la incertidumbre si algo no quedo bien o no funcionaría.

Métodos de Recuperación Fiables

Escenario No.1:

Cuando a sucedido un falla en el servidor y se quiere recuperar ese mismo servidor o un servidor con el mismo nombre.

Procedimiento:

1) Realizar una copia de respaldo de todas las bases de datos de SQL-Server que pertenecen a Sharepoint. (Una forma sencilla de identificarlas es; tienen el nombre Sharepoint y otras el prefijo WSS (Windows Sharepoint Services).

Si preferimos podemos correr el siguiente query dentro de Managment Studio de SQL-Server para conocer las bases de datos a las cuales debemos hacer respaldo:

use sharepoint_config
go

declare @ServerName varchar(100)
set @ServerName = 'virtualpse'
SELECT o.[Name] AS 'DatabaseName',
Instance.[Name] AS 'DatabaseInstance',
[Server].[Name] AS 'DatabaseServer'
FROM Objects AS o
INNER JOIN classes c on c.id = o.classid
LEFT JOIN Objects AS Instance ON o.ParentId = Instance.Id
LEFT JOIN [Objects] AS [Server] ON Instance.ParentId = [Server].Id
WHERE Server.Name = @Servername
and (c.Fullname LIKE '%Administration.SPConfigurationDatabase%'
OR c.Fullname LIKE '%Administration.SPContentDatabase%'
or c.Fullname like '%Administration.SPSearchDatabase%'
or c.Fullname LIKE '%Administration.SharedDataBase%'
or c.Fullname LIKE '%Administration.SharedResourceProvider%'
or c.Fullname LIKE '%Administration.SearchSharedDatabase%')

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección: http://technet.microsoft.com/en-us/library/ms187048.aspx

2) Restaurar la copia de respaldo de la bases de datos realizada en SQL-Server en el nuevo servidor o en una instancia nueva de SQL-Server.

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección:

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

3) Asignar seguridad dentro de SQL-Server al usuario con que se hizo la instalación del Portal (para ello revise los usuarios de las bases de datos restauradas).

Ejecute en consola de comando de SQL-Server dentro del Management Studio si es SQL 2005 las siguientes líneas de comando:

alter authorization on database::"databasename" to "domonio\usernameusername"
go
use "databasename"
execute as user = N'dbo'revert
go

Esto deberá realizarse para cada base de datos restaurada.

4) En el nuevo servidor (que debe de tener el mismo nombre) y deberá tener Windows Server 2003 o superior, el .net Framework 2.0 y 3.0 instalados. Y el IIS Instalado. Se debe instalar MOSS 2007 con la configuración Advance & complete.

Partiremos del IIS Instalado. Si se desconoce la instalación de los .NET Frameworks y del IIS revisar los siguientes enlaces:

Microsoft .NET Framework Version 2.0 Redistributable Package (x86)

http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en%20%20

Microsoft .NET Framework 3.0 Redistributable Package

http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en

How to Install IIS on Windows Server 2003

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

Haga clic sobre el botón Advanced.clip_image002


Luego haga clic sobre Complete y luego sobre el botón [Install Now]:

clip_image004


Si la instalación se realizó con éxito le mostrará la siguiente pantalla; Presione el botón [Close] y este le llevará a un Asistente de Configuración.

clip_image006

5) Al finalizar le indicará que lo enlazará con el Wizard para iniciar la instalación, seleccione la opción para enlazarse a una Farm Existente, le solicitará el nombre del servidor SQL donde restauró las bases de datos, el usuario y la clave. Al finalizar, estará restaurado el Portal completamente.

clip_image008

Luego le dará un mensaje que bajará los servicios del IIS y Sharepoint para realizar la configuración del MOSS 2007(Esto no debería preocuparnos si estamos haciéndolo en un servidor nuevo o que no está siendo utilizado para otras tareas). Haga clic sobre el botón [Yes] para continuar.

clip_image010

Luego le indicará si desea conectarse a un server farm existente o crear uno nuevo deje la opción por default seleccionada que es Yes y presione el botón [Next].

Esta opción le permitirá a MOSS 2007 leer las bases de datos restauradas y crear los sitios por nosotros.

clip_image012

Muy importante que apuntemos al nuevo servidor de SQL-Server donde restauramos las bases de datos de MOSS 2007 Y que utilicemos el usuario con el cual se configuro en el servidor anterior. Debido a las bases de datos restauradas MOSS no aceptara otro usuario ya que tiene registrado internamente en las bases de datos este usuario. Para continuar haga clic sobre el botón [Next].

clip_image014

Deje las opciones por default como están es decir no especifique otro puerto y utilice autenticación NTLM, y presione el botón [Next].

clip_image016

Luego le muestra una ventana resumiendo la información ingresada y si está de acuerdo presione el botón [Next].

clip_image018

Si todo se realizo con éxito le mostrará la siguiente ventana y con ello queda casi concluida la restauración del Portal. Presione el botón [Finish]. Y Pasemos al paso número seis (6).

clip_image020

6) Si tiene WebParts personalizados deberá copiar los archivos con extensión dll en el directorio bin en la siguiente ubicación del nuevo servidor: [drive]:\inetpub\wwwroots\wss\virtual sites\80\bin en el servidor donde se instaló MOSS 2007 y cree un directorio userscontrols en [drive]:\inetpub\wwwroots\wss\virtual sites\80\ y copie los archivos asmx. Y Listo ha terminado la recuperación del Portal en un servidor con el mismo nombre.

Escenario No.2:

Cuando se desea recuperar en un nuevo servidor el Portal; ya sea para propósitos de prueba, desarrollo o recuperación total.

1) Realizar una copia de Respaldo de la base de datos de contenido del Portal(Podemos ubicar a que base de datos corresponde cada aplicación Web yendo a: Central Administration– Application Managment– SharePoint Web Application Management – Content databases).

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección:

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

Copie el nombre para su posterior uso.

clip_image002[4]


2) En el nuevo Servidor (W2K3) crearemos una nueva instalación de MOSS 2007 de tipo Advance & Complete.

a. Repita el procedimiento del paso 4. En el último paso seleccione la opción “No, I want to create a New Server Farm”, luego presione el botón [Next].

b. Luego continúe con el paso 5, únicamente cambie a la opción seleccionada que se hace referencia aquí arribita en el paso a.

3) Levantamos todos los servicios en el Servidor (Central Administration – Operations - Services on server )

Deberán levantarse todos los servicios del Server Farm. El segundo servicio antes que el primero y luego los demás. Algunos solicitarán el usuario administrador y la clave provéalos y deje por default todas las demás opciones. Incluiremos las pantallas debajo de cada servicio como información de referencia, ya que el procedimiento es muy sencillo.

clip_image004[4]

Levantar el Servicio Document Conversions Load balancer Service

clip_image006[4]

Luego levantar el servicio Launcher Service. Seleccione el Load Balancer Server y presione el botón [ok].

clip_image008[4]

Luego el servicio Office SharePoint Server Search Service. Haga clic sobre las cajitas de Query and indexing, prove un correo de contacto para los usuarios del Portal y el usuario y clave del administrador, por ultimo presione el botón [OK].

clip_image010[4]

Provea el usuario y clave del administrador tanto en Service Account como en Content Access Account, seleccione un horario conveniente de indexación y presión el botón [OK].

clip_image012[4]

4) Realizamos la configuración base (Correo Saliente; Central Administration - Operations), pero por el momento no creamos ningún proveedor de Servicio Compartidos (SSP). Configuramos el correo saliente con la siguiente información:

clip_image014[4]

Y el Correo Entrante no se configura, a menos que el cliente desee almacenar los correos dentro de MOSS 2007.

clip_image016[4]

5) En la nueva instalación de MOSS 2007 creamos una aplicación Web (Central Administration – Aplication Managment - Create or extend Web application). Debe seleccionarse el puerto 80, un nombre para la aplicación como Portal, colocar las credenciales del administrador, deje las demás opciones por default y presionar el botón [OK].clip_image018[4]

clip_image020[4]

6) Restauración de la base de datos de contenido respaldada en el servidor de SQL con el cual trabaja la nueva instalación de MOSS 2007.

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección:

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


7) Ahora eliminaremos el enlace entre la base de datos de contenido y la aplicación Web (Central Admiistration– Application Managment– SharePoint Web Application Management – Content databases – Haga clic sobre el nombre de la base de datos y al final de la página Web seleccione el cuadrito de Remove content database y presione ok.

clip_image022

Seleccionar la cajita Remove content database y presionar el botón [OK].

clip_image024

8) Para enlazar la base de datos restaurado con la aplicación web haga lo siguiente:

stsadm –o addcontentdb –url http://NuevaAplicaciónWeb –databasename BD_Restaurada –databaseserver Servidor_BD


9) Creamos nuestro SSP el cual contendrá las aplicaciones Web. Para ello vaya a: Central Administration – Application Managment – Manage this Farm´s Shared Service. Aparecerá en blanco (Porque No hay ningún servicio compartido creado aún)y deberá presionar el botón [New SSP]

clip_image026

El proveedor de servicios compartidos necesitará crear 2 sitios uno para la administración de Servicios Compartidos y otro para el espacio de My Sites donde se almacenarán todos los sitios de cada usuario. El método para crear los sitios es igual a la creación mencionada con anterioridad, no debe utilizar el puerto 80.

clip_image028

10) Para finalizar reinicie el IIS con el comando de línea: iisreset /noforce o desde la consola de administración de IIS.

11) Si tiene WebParts personalizados deberá copiar los archivos con extensión dll en el directorio bin en la siguiente ubicación del nuevo servidor: [drive]:\inetpub\wwwroots\wss\virtual sites\80\bin en el servidor donde se instaló MOSS 2007 y cree un directorio userscontrols en [drive]:\inetpub\wwwroots\wss\virtual sites\80\ y copie los archivos asmx. Y Listo ha terminado la recuperación del Portal en un servidor con el mismo nombre.

En resumen, si existe una forma de recuperación y es confiable. Escoja la herramienta en la que mas se sienta cómodo y que se aplique al escenario que se planteo. Si su configuración de la granja es mas compleja tendrá que aplicar otros criterios posiblemente, pero puede servirle como una guía para encontrar una solución viable.

Hasta la próxima!

Manolo Herrera

P.D. Si no le aparecen las imágenes vaya a mi otro blog donde esta este mismo artículo en http://jmhogua.blogspot.com .

jueves, 10 de julio de 2008

Tip del día: Como instalar los 40 Templates Gratuitos de WSS 3.0

Hay dos categorías de plantillas o templates y cada una de ellas tiene diferente método de instalación.

Los site admin templates se deberán instalar por medio de la galería de Site Templates dentro del sitio inicial del portal. Y tienen extensión STP, y habilitara una pestaña o Tab nombrada "Application Templates".

Y los server admin templates por línea de comando stsadm.exe y hacer el deployment en el GAC a través de la línea de comando. Su extensión es: WSP, y habilitara una pestaña o Tab nombrada "Custom".

Los pasos para instalar las plantillas para administrar sitios es:

  1. Download the template you want to install to your computer.

  2. Double-click the .exe file to extract the files.

  3. Log on to the SharePoint site as a member of the Owners group.

  4. On the Site Actions menu, click Site Settings.

  5. In the Galleries section, click Site templates.

  6. Click Upload to save an application template to this SharePoint site.

  7. Browse to the <template_name>.stp file, and then click Open.

  8. Click OK.

Para las plantillas de administración de servidor son los pasos siguientes: (Es impertativo que se inicie primero con la plantilla ApplicationTemplateCore.wsp y luego las demás)

  1. Ubicar el stsadm.exe en la siguiente ruta: %PROGRAMFILES%\common files\microsoft shared\web server extensions\12\bin.
  2. Escriba la siguiente línea de comando: stsadm -o addsolution -filename <ruta de ubicación>\NombeArchivoPlantilla.wsp.
  3. Luego: stsadm -o deploysolution -name NombreArchivoPlantilla.wsp -allowgacdeployment local.
  4. stsadm -o copyappbincontent.

Ojo con la extensión de cada tipo de plantilla y método de instalación. Si no ve ninguna pestaña de las mencionadas arriba en la página de creación de sitios del portal es porque no instaló la plantilla con el método correcto.

La dirección donde explica con mayor detalle esto es en : http://technet.microsoft.com/en-us/library/cc288412.aspx .

miércoles, 2 de julio de 2008

EngineDAL O-R Mapping framework disponible en CodePlex

Al fin me anime al ver el interés por este framework que desarrolle de cero, para propósitos de estudio y ambientes productivos esta herramienta optimiza la capa de acceso a datos de tal forma que por medio de atributos y el uso de Generics. Estos atributos son colocados en lo que denominaremos "entidades de negocio inteligentes" las cuales por medio de atributos se configurará el nombre de la conexión, el nombre de las columnas de las tablas o Queries de tal suerte que luego de configurar cada entidad de negocio solo invocamos el EngineDAL y el se encarga a través de reflection el obtener la lista o ejecutar del lado de la base de datos el store procedure. Esta herramienta esta basada y corre sobre las Enterprise Library de Junio del 2006 para el .NET framework 2.0. Por lo que el código hace referencia a dichas librerías.

Que lo disfruten y con libertad pongan su comentarios y sugerencias:

http://www.codeplex.com/EngineDAL

Code4Fun!,

Manolo Herrera

Como resolver el problema del usuario huérfano luego de restaurar una base de datos de SQL-Server

Esto sucede cuando restauramos una base de datos en otra instancia o servidor de SQL-Server y como el Backup guarda el permiso de usuario dentro de ella misma pero cuando se restaura SQL-Server no restaura el usuario dentro de la nueva instancia y aunque creamos el usuario de nuevo en la nueva instancia o ya exista de todos modos no lo enlaza. Así que aquí les van los pasos a seguir:

1) Crea el usuario ya sea de dominio o de SQL-Server en el nuevo servidor o instancia de SQL-Server.

2) Ejecute en consola de comando de SQL-Server dentro del Management Studio si es SQL 2005 las siguientes líneas de comando:

alter authorization on database::"databasename" to "domonio\usernameusername"
go
use "databasename"
execute as user = N'dbo'revert
go

Hasta la próxima!,

Manolo Herrera

martes, 1 de julio de 2008

Como saber el nombre de las bases de datos de una instalación de MOSS 2007

Esto es muy útil especialmente cuando en la misma instancia de SQL-Server compartimos la instalación de SharePoint con otras aplicaciones.

Aquí les va el código:

use sharepoint_config
go

declare @ServerName varchar(100)
set @ServerName = 'virtualpse'
SELECT o.[Name] AS 'DatabaseName',
Instance.[Name] AS 'DatabaseInstance',
[Server].[Name] AS 'DatabaseServer'
FROM Objects AS o
INNER JOIN classes c on c.id = o.classid
LEFT JOIN Objects AS Instance ON o.ParentId = Instance.Id
LEFT JOIN [Objects] AS [Server] ON Instance.ParentId = [Server].Id
WHERE Server.Name = @Servername
and (c.Fullname LIKE '%Administration.SPConfigurationDatabase%'
OR c.Fullname LIKE '%Administration.SPContentDatabase%'
or c.Fullname like '%Administration.SPSearchDatabase%'
or c.Fullname LIKE '%Administration.SharedDataBase%'
or c.Fullname LIKE '%Administration.SharedResourceProvider%'
or c.Fullname LIKE '%Administration.SearchSharedDatabase%')

Esto lo deberán correr si están en SQL-Server 2005 con la herramienta de este producto llamada Managment Studio. Y deberán conocer por lo menos la base de datos que guarda la configuración si usan los nombres por default debería ser sharepoint_config. La variable @Servername deberan sustituir su valor por el nombre del servidor donde se instaló Sharepoint. Ojo que si lo instalaron en varios servidores esto deberá ejecutarse para cada uno de ellos.

El Resultado de este query será algo como lo que sigue

DatabaseNameDatabaseInstanceDatabaseServer
SharePoint_Configsqlexpressvirtualpse
SharePoint_AdminContent_1b3dcb18-70cf-4965-84ec-7266b418267esqlexpressvirtualpse
WSS_Contentsqlexpressvirtualpse
WSS_Content_1885985b7666470aa4935ce00511840asqlexpressvirtualpse
WSS_Content_c16c9807582e4c6194caf5db5c2ebd76sqlexpressvirtualpse
WSS_Search_virtualpsesqlexpressvirtualpse
SharedServices1_DBsqlexpressvirtualpse
SharedServices1_Search_DBsqlexpressvirtualpse

Code4Fun!,

Manolo

P.D. Agradezco al amigo que escribió el siguiente link: http://blogs.msdn.com/johnlee/archive/2008/03/09/list-all-databases-in-a-moss-2007-farm.aspx, esto me fue muy útil para mi investigación.