DotNetNuke Azure Accelerator Released!!

Saliéndome un poco por la tangente del trabajo que venía haciendo adaptando código de DotNetNuke a Azure, le he estado echando un vistazo al Accelerator de Umbraco para ver cómo estaba implementado, sobre todo después del post de Gisela en MSDN que me llamó la atención sobre la utilización de los Cloud Drives para almacenar los contenidos.

El resultado es lo que viene a ser el primer Accelerator para llevar DotNetNuke a Azure, ¡no podía ser que no tuviera!

He publicado el resultado en CodePlex y he comprobado que el proceso de instalación funciona correctamente. Podéis echarle un vistazo en:

http://dnnazureaccelerator.codeplex.com/

DNNAcceleratorArch

También podéis echar un vistazo a un ejemplo de DotNetNuke funcionando con el Accelerator en http://dnnaccelerator.cloudapp.net

La imagen que incorpora el proyecto en una unidad VHD es de la última versión disponible en este momento (DotNetNuke Community 5.6.1), y tiene preinstalados todos los módulos disponibles de esta versión: foros, blogs, etc.

No quiero alargar más este post, ya que en Codeplex tenéis más información y seguramente seguiré escribiendo sobre ello.

Espero que lo disfrutéis.

Un saludo,

David Rodríguez

Copiar una base de datos SQLAzure a un servidor distinto -en otra suscripción- con T-SQL

Si tienes una base de datos en un entorno de desarrollo en Azure, es normal que cuando quieras pasar a producción desees copiar la base de datos con la que has estado trabajando a una suscripción en producción, sobre todo cuando la suscripción final es del cliente y la facturación de uso de Azure se debe facturar a éste.

Para ello podemos usar distintas herramientas para traspasar esquema y datos, como RedGate SQLCompare 9, SQL Azure Migration Wizard, o el mismo MS SQL Server Management Studio 2008 R2.

Sin embargo, hay una manera muy sencilla de copiar dicha base de datos entre distintos servidores, que no es otra que la de ejecutar un comando T-SQL. Sé que este post no es muy novedoso, pero lo hago para utilizarlo como chuleta propia, que siempre ando buscando estos scripts cada vez que tengo que hacer esta tarea.

NOTA: esta sintaxis tiene la limitación de que sólo se puede hacer entre servidores SQL Azure que se encuentren en la misma sub-región o Datacenter.

Cómo copiar la base de datos entre distintos servidores

1) Crear un login en el servidor destino, con el mismo nombre de usuario y contraseña que el DBO de la base de datos origen y asignarle el rol “dbmanager”

-- Ejecutar en la master del servidor destino
-- Crear el Login
CREATE LOGIN MiLogin WITH password='MiPassword';
GO
-- Crear el usuario
CREATE USER MiUsuario FROM LOGIN MiLogin
GO
-- Asignar Rol dbmanager
EXEC sp_addrolemember 'dbmanager', 'MiUsuario';
GO

2) Copiar la base de datos origen con el comando CREATE DATABASE, ejecutándolo en el servidor destino (es un proceso asíncrono y para ver el resultado debéis ejecutar las consultas del siguiente paso). Si el nombre del servidor es xxxxx.database.windows.net, el “NombreServidorOrigen” es “xxxxx”. No se admiten copias entre distintas regiones, sub-regiones o datacenters:

-- Ejecutar iniciando sesión en destino con el 
-- usuario que creamos en el paso anterior
-- Copiar base de datos
CREATE DATABASE NombreBDDestino AS COPY OF NombreServidorOrigen.NombreBDOrigen
GO

3) Monitorizar el estado del proceso de copia a través de las consultas siguientes. Cuando el estado de la base de datos pase de “COPYING” a “ONLINE”, podremos operar ya con la base de datos.

-- Obtener el estado de las bases de datos
SELECT name, state, state_desc 
FROM sys.databases

-- Obtener detalles de los procesos de copia
SELECT * 
FROM sys.dm_database_copies

 

Una vez realizadas estas operaciones, si lo deseamos podemos crear nuevos usuarios e inicios de sesión para la base de datos en el servidor de destino, para que tengan credenciales distintas que en el servidor origen.

Errores conocidos

1) CREATE DATABASE permission denied in database ‘<NombreDBOrigen>’.

Este error lo da si el usuario con el que estamos intentando realizar la copia no es el DBO de la base de datos origen. Aseguraos de que estáis ejecutando el comando con el usuario correcto.

2) “Cannot open server "<NombreServidorOrigen>" requested by the login.  The login failed.”

Aseguraos que el nombre de usuario con el que estáis ejecutando el comando en el servidor destino tiene el mismo nombre y contraseña en el servidor origen. También debéis aseguraos de que el servidor origen está dentro de la misma sub-región o Datacenter. NO SE PUEDEN COPIAR BASES DE DATOS ENTRE DISTINTOS DATACENTERS con esta sintaxis. Para ello hay que acudir a otro tipo de herramientas como las comentadas al inicio del post.

3) “A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 – An existing connection was forcibly closed by the remote host.)”

Este error se debe a un error de conexión por reglas del firewall. También debéis tener en cuenta que no se puede hacer copia entre servidores que estén en datacenters distintos –ver error anterior.

Referencias:

Jornada sobre Cloud Computing – CEOE Tenerife

cloud_powerLa Confederación Provincial de Empresarios de Santa Cruz de Tenerife (CEOE-TENERIFE), en colaboración con Telefónica Movistar y el Centro Tecnológico de Canarias (CETECA), tiene previsto desarrollar el próximo 17 de febrero de 2011, a las 10:00 horas la Jornada Informativa “Cloud Computing: Ventajas de la nube para las empresas”.

El principal objetivo de esta jornada es acercar al tejido empresarial las nuevas formas en que se ofrecen los recursos informáticos, reduciendo significativamente sus costes, tiempos de implementación y puesta en marcha.

Tengo el placer de formar parte en la presentación del mismo, así que te animo a que te inscribas y así poder despejar todas las dudas que tengas sobre este nuevo paradigma de computación.

Os dejo los datos del evento y el programa de la jornada para más información.

> Descargar en formato PDF

Jornada sobre Cloud Computing – CEOE Tenerife

Fecha:

17 de febrero de 2011, 10:00am (GMT+0)

Lugar de celebración:

Sede principal de CEOE-Tenerife
Rambla de Santa Cruz, 147, Edf. Tulipán, bajo

Programa de la jornada:

HORARIO PROGRAMA
10:00 horas Inauguración de la Jornada
Confederación Provincial de Empresarios de Santa Cruz de Tenerife (CEOE-Tenerife)
Centro Tecnológico de Canarias (CETECA)
Movistar
10:15 horas ¿Qué es Cloud Computing? ¿Qué ventajas tiene para las empresas trabajar en la “nube”?
D. David Rodríguez
Socio Tecnológico del Centro Tecnológico de Canarias (CETECA)
11:00 horas Productos relacionados con Cloud Computing
D. Marco Antonio Cabrera León
Responsable en Cloud de Marketing de Negocios de Telefónica
11:30 horas Casos de éxito
Experiencias de Empresas Canarias en Cloud Computing
12:00 horas ¿Cómo financiar un proyecto de innovación tecnológica?
Dña. Tania Bethencourt González
Técnica Centro CIDE de CEOE-Tenerife
12:30 horas Ruegos y Preguntas / Clausura

AFORO LIMITADO: se ruega confirmación de asistencia cumplimentando sus datos de contacto a tbethencourt@ceoe-tenerife.com o llamando al 922 285 958 (Srta. Tania Bethencourt)

RedGate SQLCompare y SQLDataCompare 9 Beta, con soporte para SQL Azure

Logo_Redgate01Una de las tareas que tenía pendiente desde hace un par de meses, era comprobar si Red Gate, tenía en marcha la adaptación de dos de sus herramientas –para mí imprescindibles en las labores de DBA- a SQL Azure.

Hasta la fecha no tenía constancia del lanzamiento de las mismas, pero parece ser que desde hace algo más de un mes han liberado la versión 9 Beta de dos de mis herramientas favoritas: SQLCompare y SQLDataCompare, y sobre todo con la intención de tener soporte completo para SQL Azure.

Para el que no conozca la suite de herramientas, comentarles que la primera, SQLCompare, es una herramienta para el mantenimiento y sincronización de esquemas de bases de datos muy reconocidas por los DBAs. La segunda, SQLDataCompare, hace lo mismo pero a nivel de datos, con lo que podemos sincronizar bi-direccionalmente dos bases de datos distintas a través de T-SQL autogenerado. Si alguien conoce el SQL Azure Migration Wizard que se encuentra en CodePlex, se trata de dos herramientas que realizan la misma tarea pero de una forma mucho más completa –su número de versión 9 lo avala.

Si queréis probar el funcionamiento de las mismas, debéis acceder a través del siguiente enlace http://www.red-gate.com/azure y rellenar la encuesta inicial. Al enviar la encuesta os presenta en pantalla los enlaces para la descarga:

RedGateDownload

SQLCompare

Una vez realizada la descarga e instalada la herramienta, creamos el proyecto con la configuración de las dos bases de datos que queremos comparar. En principio para el ejemplo de las capturas de pantalla he seleccionado una base de datos en blanco en Azure para realizar la migración inicial. Al guardar el proyecto, podemos sincronizar los esquemas desde Azure a local, y viceversa. Si os fijáis, la base de datos puede estar en línea, ser un backup, un snapshot o estar dentro de control de código fuente. Muy potente.

EditProject

También podemos seleccionar entre unos 50 parámetros distintos para alterar el comportamiento de los scripts de sincronización que genera, para que sean compatibles con SQL Azure.

OptionsProjecct

CompareSuccess

Una vez que se realiza la comparación, se nos presenta el interfaz principal a través del cual podemos ver qué objetos del esquema son iguales o distintos en las bases de datos, llegando al nivel de detalle de generar automáticamente el T-SQL. Lo bueno de trabajar en modo intermedio con scripts, es que siempre podemos revisarlos antes de pasar a producción, además de poder dejar ese trabajo a los encargados de hacerlo.

CompareDetail

SQLDataCompare

La segunda herramienta es muy similar a la anterior, sólo que ésta en vez de compara y sincronizar esquemas, trabaja sobre los datos, comparando cada valor de cada registro de cada tabla (podemos seleccionar qué tablas queremos comparar, no os asustéis). También se pueden seleccionar otras tantas opciones de sincronización como se hizo en el proyecto de esquemas. Toda esta configuración se guarda en un archivo de proyecto para futuros mantenimientos.

EditProjectData

OptionsProjectData

Respecto al traspaso de datos, entre otras cosas ofrece algo que el SQL Azure Migration Wizard no da, que es la generación del T-SQL de alteración de los datos –el primero utiliza BCP para realizar el upload de los datos-, muy útil cuando quieres automatizar una instalación inicializando la base de datos.

DataComparison

ReviewScript

Por lo que he probado, está funcionando correctamente. Eso sí, la base de datos que tenía en local de DotNetNuke hace tiempo que le hice algunas correcciones para que no me diera tantos problemas al migrar a Azure.

Espero que resulte útil. Un saludo y happy…DBAing?