Project Code-Named “Houston”

Microsoft acaba de publicar la primera CTP de “Houston”, una nueva herramienta para trabajar con SQL Azure.

Es una herramienta web hecha en Silverlight, que nos va a permitir conectarnos a una base de datos SQL Azure y realizar las labores típicas que se puede realizar; manejar tablas, vistas, procedimientos almacenados, lanzar querys, abrir y lanzar ficheros sql….

La aplicación web está en publicada en Windows Azure y para permitir que ésta acceda a una base de datos nuestra de SQL Azure recordad que tendréis que configurar el firewall de SQL Azure, activando la opción de “Allow Microsoft Services”.

De momento es una versión CTP, pero habrá que estar atentos a ver cómo evoluciona la misma y que tipo de funcionalidad le van añadiendo en las siguientes versiones.

Para probar podéis hacerlo desde SQL Azure Labs, sitio dónde podréis ver otras futuras funcionalidades de SQL Azure, como la posibilidad de exportar el contenido de una base de datos Azure por el protocolo OData o las posibilidades de sincronización entre dos base de datos de SQL Azure.

Aquí os dejo unos pantallazos de la herramienta.

1

 2 3 4

Y si por alguna lo duda….sí, yo también he pensado en “Houston, Houston, tenemos un problema!!” 🙂

PowerShell CmdLets para Windows Azure

Como ya comentábamos en un post anterior, todo lo que se puede hacer desde el portal de administración de Azure se puede hacer sin necesidad de usar este portal, a través de un API REST de administración.

Pero para simplificarnos el trabajo tenemos otras opciones, que no pasan por escribirnos nuestras peticiones REST.

Una opción muy interesante es usar comandos de powershell para realizar las labores de administración sobre Azure, para los cuál tendremos que descargarnos e instalar el siguiente componente.

cmdlets2

Ahora un ejemplito…¿Cómo podemos decirle a un servicio que ya tenemos en Azure que aumente una instancia?

$cert = Get-Item cert:CurrentUserMy<Certificate ThumbPrint> 
$sub = <Azure Subcription Id> 
$servicename = <Service Name> 


Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub | 
Get-Deployment -Slot Production | 
Set-DeploymentConfiguration {$_.RolesConfiguration["WebSample"].InstanceCount += 1}

Este ejemplo coge la configuración del servicio, lo modifica para aumentar en 1 el número de instancias configurado y establece la nueva configuración en el servicio de Azure.

Simplificando las tareas administrativas en Azure

A través de portal de Azure podemos hacer todas las operaciones que la plataforma nos permite, como crear servicios, storage, desplegarlos, configurarlos, configurar la seguridad etc…

Pero si esto nos lo queremos tomar en serio, trabajar siempre usando el portal de Azure puede ser un trabajo pesado y poco productivo.

Pero para todo hay solución, ya que todo lo que se puede hacer desde el portal web, se puede hacer a través del API de administración que Azure expone a través de REST.

Mediante este API REST podremos realizar todas las labores de administración que necesitemos, sin necesidad de tener que acceder al portal web.

Interesante, pero…¿tengo que hacerme mi aplicación haciendo llamadas REST? Qué pereza!!

Pues no, tampoco es necesario que te lo hagas tú mismo. Hay varias alternativas para poder realizar labores administrativas.

  • Hacerte tu propio aplicación, atacando directamente al API REST.
  • Usar los CmdLets de PowerShell para Azure.
  • Usar la aplicación de línea de comandos csmanage.exe. Disponible con código fuente.
  • Usar otras aplicaciones de terceros, comerciales o no, que ofrezcan labores administrativas.

Sea como sea, si quieres hacer labores administrativas sin usar el portal web, es necesario que se haga de forma segura, que todo el mundo no lo pueda realizar.

Las labores de administración requieren de un certificado x.509, certificado que hay que subir previamente a nuestra cuenta de Azure, a través del portal Web. (certificados de ejemplo para pruebas pruebas los podrías crear desde IIS ).

image

image 

Una vez subido el certificado, el dato importante a tener en cuenta es la huella digital, el Thumbprint. Este vaklor es un valor que vamos a necesitar en las aplicaciones cliente desde las cuáles queremos realizar labores administrativas.

Otro valores que también necesitaremos, es el identificador de nuestra subscripción, que también lo podemos obtener del portal.

image

Y una vez hecho esto, ya podemos hacer cualquier de las opciones que hemos visto antes para administrar Azure.

Por ejemplo, una cosa que podemos hacer es desplegar en Azure directamente desde Visual Studio, como veíamos en un post anterior. El desplegar directamente requería instalar el certificado x.509.

Recordad que para configurar la cuenta necesitábamos el certificado y el subcription id.

image_thumb_71A48978

Por ejemplo, si usáramos csmanage, la configuración la tendríamos que incluir en el fichero de configuración de csmanage.

<appSettings>
    <add key="CheckServerCertificate" 
         value="true"/>
    <!-- Insert your subscriptionId as shown by the Windows Azure developer portal -->
    <add key="SubscriptionId" 
         value="<SubscriptionId>"/>
    <!-- Insert your certificate thumbprint without spaces -->
    <add key="CertificateThumbprint" 
         value="<Thumbprint>"/>
  </appSettings>

Y después simplemente utilizarlo 🙂

csmanage /list-hosted-services

csmanage /slot:production /delete-deployement /name:<name>

….

¿DMVs en SQL Azure?

Desde su aparición en SQL Server 2005 las DMVs han sido una herramienta muy necesaria para poder detectar y solucionar problemas de rendimiento en SQL Server.

SQL Azure está basado en SQL Server, pero desgraciadamente muchas de las DMVs no está disponibles en esta primera versión de Azure….aunque sí que quieren ir añadiéndolas en sucesivas versiones. Esperemos que llegue pronto!

El principal problema por el cuál no están soportadas todas las DMVs es porque en SQL Server éstas funcionan a nivel de instancia, cosa que en SQL Azure no es posible, tendrían que funcionar a nivel de base de datos. Este trabajo es el que deben hacer para que todas las DMVs estén accesibles también en SQL Azure.

Por ejemplo, el permiso que hay que tener para trabajar con DMVs en Azure es VIEW DATABASE STATE, mientras que en SQL Server es VIEW SERVER STATE ).

Microsoft ha publicado un documento bastante interesante dónde se comentan las diferentes DMVs disponibles en esta primera versión de SQL Azure, documento que podéis descargar desde aquí.

Algún ejemplo sacado de la documentación…

Identificar los planes de ejecución que provocan excesivas recompilaciones.

select top 25 
    sql_text.text, 
    sql_handle, 
    plan_generation_num, 
    execution_count, 
    dbid, 
    objectid  
from  
    sys.dm_exec_query_stats a 
    cross apply sys.dm_exec_sql_text(sql_handle) as sql_text 
where  
    plan_generation_num >1 
order by plan_generation_num desc

 

Identificar planes de ejecución ineficientes:

select  
    highest_cpu_queries.plan_handle,  
    highest_cpu_queries.total_worker_time, 
    q.dbid, 
    q.objectid, 
    q.number, 
    q.encrypted, 
    q.[text] 
from  
    (select top 50  
        qs.plan_handle,  
        qs.total_worker_time 
    from  
        sys.dm_exec_query_stats qs 
    order by qs.total_worker_time desc) as highest_cpu_queries 
    cross apply sys.dm_exec_sql_text(plan_handle) as q 
order by highest_cpu_queries.total_worker_time desc

Welcome WebMatrix

No sé si viene para quedarse, pero Microsoft acaba de publicar una nueva herramienta para el desarrollo de aplicaciones Web llamada WebMatrix.

Este anuncio lo acabo de ver en el blog de Scott Gu’s  y creo que que dará mucho que hablar. Aquí tenéis en enlace al post, dónde paso muestra de forma bastante detallada la nueva herramienta.

La nueva herramienta emplea otras de las tecnologías para las cuáles Microsoft está anunciando novedades, como IIS Developer Express, SQL Server Compact Edition y ASP.NET “Razor”.

Es una herramienta gratuita pensada para simplificar el desarrollo web.

Se integra con soluciones open source y permite de esta manera que con esta herramienta se puedan desarrollar aplicaciones web que hagan uso de estos productos.

image_thumb_25C7EC1A

image_thumb_64D5A450

image_thumb_5FCF52A2

La verdad es que yo de momento no tengo claro si esta herramienta puede llegar a ser útil, pero bueno, habrá que probarla y ver si pudiera ser útil para ciertos escenarios.

Al menos habrá que darle una oportunidad!

Microsoft Sync Framework y SQL Azure

Para aquellos que no conozcáis Microsoft Sync Framework, es la MSDN se define así:

“Sync Framework es una completa plataforma de sincronización que hace posible la colaboración y el acceso sin conexión para aplicaciones, servicios y dispositivos.

Sync Framework incorpora las tecnologías y herramientas que habilitan la movilidad y el uso compartido de los datos; además, se pueden dejar los datos sin conexión. Mediante Sync Framework, los desarrolladores de software pueden generar ecosistemas de sincronización que integran cualquier aplicación con datos de cualquier almacén usando un protocolo través de cualquier red”

Simplificando, Microsoft Sync Framework permite sincronizar los datos dos orígenes de datos para los cuáles exista un proveedor de acceso a datos (SQL Server, SQL Server Compact Edition, Oracle…), pudiendo seleccionar la información a sincronizar y la dirección de sincronización.

La sincronización se puede hacer de manera directa, origen y destino se “comunican directamente” o a través de una capa de servicios.

Pues bien, Microsft Sync Framework se puede utilizar también con SQL Azure, ya que existe un proveedor para SQL Azure, un proveedor que todavía está en CTP. Lo podéis descargar desde aquí.

De esta manera, podemos mantener sincronizados dos orígenes de datos, por ejemplo un SQL Server con un SQL Azure, pudiendo decirle qué información queremos que sincronice y en qué dirección.

Y podemos sincronizar una base de datos de SQL Azure con otra de SQL Azure? Sí, podremos…pero esta funcionalidad todavía está en preview, versión que ha sido publicada a primeros de junio.

Una vez instalado el proveedor de SQL Azure tenemos diferentes maneras de crear la sincronización. La primera opción es usa el wizard de sincronización que se instala con el proveedor.

En el ejemplo que pongo a continuación pongo un ejemplo de cómo sincronizar una base de datos SQL Server con una base de datos SQL Azure.

El wizard genera un job en el SQL Server origen. Este job fuerza la sincronización entre ambos orígenes de datos.

Aunque aquí no lo veremos, junto con el proveedor también se instalan unas plantillas para Visual Studio 2008 para poder generar una aplicación que haga la sincronización, en lugar de crear el job de SQL Server.

image

image

image

image

image

image

image

image

image

Espero que os sea de utilidad!

Migrando a SQL Azure (II)

En el post anterior os comentaba cómo es posible migrar una base de datos a SQL Azure, generando un script de datos. En esta ocasión os quiero presentar otra herramienta de CodePlex que permite la migración de base de datos a SQL Azure y que mí personalmente me gusta bastante: SQL Azure Migration Wizard.

Esta herramienta da la opción de analizar una base de datos para ver si es compatible con SQL Azure, generar scripts de datos y migrar datos, haciendo uso del comando BCP.

Permite la conexión entre SQL Server-SQL Azure, SQL Azure-SQL Server y entre SQL Azure-SQL Azure.

También es capaz de analizar trazas del SQL Profiler y scripts con T-SQL para detectar posibles incompatibilidades a la hora de migrar a SQL Azure.

Veamos un ejemplo de cómo migrar una base de datos que está en SQL Server a SQL Azure.

En el proceso que os pongo a continuación, los pasos son los siguientes:

  • Seleccionar la operación que queremos realizar: Analizar y migrar una base de datos.
  • Conectarnos al servidor SQL Server y seleccionamos la base de datos a migrar.
  • Seleccionar qué objetos deseamos migrar.
  • Generar el script de datos. Migramos tanto el schema, como la información que contengan las tablas.
  • Conectarnos a SQL Azure.
  • Crear una base de datos nueva.
  • Lanzar el script contra esa base de datos. Y ya está, ya tenemos migrada la base de datos a SQL Azure!

image

image

image

image

Fijaros que para los datos que contienen las tablas se genera un fichero .dat usando el comando BCP.

image

Nos conectamos a SQL Azure…

image

image

Ya ya está, base de datos migrada!

image_thumb_414D646F