Datos de nube

Introducción al desarrollo con SQL Azure

Lynn Langit

Microsoft Windows Azure ofrece varias opciones para almacenamiento de datos. Esto incluye el almacenamiento de Windows Azure y SQL Azure. Puede seleccionar usar uno o ambos en su proyecto particular. El almacenamiento de Windows Azure actualmente contiene tres tipos de estructuras de almacenamiento: tablas, colas y blobs.

SQL Azure es un servicio de almacenamiento de datos relacional en la nube. Algunos de los beneficios de esta oferta son la capacidad de usar un modelo de desarrollo relacional conocido que incluye gran parte del lenguaje, herramientas y utilidades estándar de SQL Server (T-SQL). Por supuesto, trabajar con estructuras relacionales conocidas en detalle en la nube, tales como tables, vistas y procedimientos almacenados también tiene como resultado un aumento de la productividad de los desarrolladores al trabajar en esta nueva plataforma. Otros beneficios incluyen la reducción de la necesidad de tareas físicas de administración de base de datos para realizar configuración, mantención y seguridad del servidor, además de compatibilidad integrada, que otorgan confiabilidad, alta disponibilidad y escalabilidad.

No cubriré aquí el almacenamiento de Windows Azure ni haré una comparación entre los dos métodos de almacenamiento. Podrá leer más acerca de estas opciones de almacenamiento en la columna Puntos de datos de julio de 2010, escrita por Julie Lerman (msdn.microsoft.com/magazine/ff796231). Es importante que observe que las tablas de Windows Azure no son tablas relacionales. El enfoque de este artículo es la comprensión de las capacidades incluidas en SQL Azure.

Este artículo explicará las diferencias entre SQL Server y SQL Azure. Necesitará entender las diferencias en detalle, de manera que pueda sacar buen provecho de su conocimiento actual de SQL Server a medida que trabaje en proyectos que usen SQL Azure como origen de datos.

Si usted no es experimentado en computación nube, es recomendable que estudie un poco de Windows Azure antes de continuar leyendo este artículo. Un buen lugar para comenzar es el centro de desarrollador de nube de MSDN, en msdn.microsoft.com/ff380142.

Introducción a SQL Azure

Para empezar a trabajar en SQL Azure, necesitará crear una cuenta. Si es suscriptor a MSDN, podrá usar hasta tres bases de datos de SQL Azure (con un tamaño máximo de 1 GB cada una) por un total de 16 meses (obtenga más detalles en msdn.microsoft.com/subscriptions/ee461076) como un espacio aislado para desarrolladores. Para registrar una cuenta regular de SQL (se aplican cargos por almacenamiento y transferencia de datos), vaya a microsoft.com/windowsazure/offers/.

Después de registrar su cuenta de SQL Azure, la manera más simple de tener acceso inicial a ella es por medio del portal web en sql.azure.com. Debe iniciar sesión en la cuenta de Windows Live ID que asoció a su cuenta de Windows Azure. Después de iniciar sesión, podrá crear la instalación de su servidor y empezar a desarrollar su aplicación.

Un ejemplo del portal de administración de SQL Azure se muestra en la figura 1. Aquí podrá ver un servidor y sus bases de datos asociadas. Notará que también hay una ficha en el portal web para administrar la configuración de Firewall de su instalación de SQL Azure específica.

image: Summary Information for a SQL Azure Database

Figura 1 Información resumida para una base de datos de SQL Azure

Al crear su instalación de servidor de SQL Azure, se le asignará una cadena aleatoria como nombre de servidor. Por lo general, también podrá establecer durante la creación del servidor el nombre de usuario y contraseña del administrador, la localización geográfica del servidor y las reglas del firewall. Podrá seleccionar la ubicación de su instalación de SQL Azure al momento de la creación del servidor. Se le presentará una lista de ubicaciones (centros de datos) desde los cuales escoger. Si el front-end de su aplicación se creó en Windows Azure, tendrá la opción de ubicar tanto aquella instalación y como la instalación de SQL Azure en la misma ubicación geográfica al asociar las dos instalaciones.

No habrá acceso a su servidor de forma predeterminada, de manera que deberá crear reglas de firewall para las IP de cada cliente. SQL Azure usa el puerto 1433, de manera que debe asegurarse de que ese puerto esté abierto también para la aplicación de su cliente. Al conectarse a SQL Azure, deberá usar el formato nombredeusuario@nombredeservidor para su nombre de usuario. SQL Azure es compatible solamente con la autenticación de SQL Server. No es compatible con la autenticación de Windows. También es compatible con conjunto de resultados activos múltiples (MARS).

Las conexiones abiertas se cerrarán después de 30 minutos de inactividad. Además, las conexiones se pueden perder por consultas y transacciones demasiado largas o exceso de uso de recursos. La práctica recomendada de desarrollo en aplicaciones construidas alrededor de conexiones es abrir, usar y después cerrar esas conexiones de forma manual para incluir una lógica de reintento de conexión para conexiones interrumpidas y para además evitar almacenar en caché las conexiones a causa de este comportamiento. Para obtener más detalles acerca de los protocolos de cliente compatibles con SQL Azure, consulte la publicación de blog de Steve Hale en blogs.msdn.com/b/sqlnativeclient/archive/2010/02/12/using-sql-server-client-apis-with-sql-azure-vversion-1-0.aspx.

Otra práctica recomendada es cifrar su cadena de conexión para evitar ataques de tipo "man in the middle”.

Se conectará a la base de datos maestra de forma predeterminada si no especifica un nombre de base de datos en la cadena de conexión. En SQL Azure, la declaración USE de T-SQL no es compatible con cambios de bases de datos, de manera que generalmente deberá especificar la base de datos que desea conectar en la cadena conexión (asumiendo que desea conectarse a una base de datos que no sea la maestra). A continuación se muestra un ejemplo de una conexión ADO.NET:

    Server=tcp:server.ctp.database.windows.net;
    Database=<databasename>;
    User ID=user@server;
    Password=password;
    Trusted_Connection=False;
    Encrypt=true;

Configurar bases de datos

Después de que se conecte correctamente a su instalación, deseará crear una o más bases de datos. Aunque se pueden crear bases de datos usando el portal de SQL Azure, puede que prefiera hacerlo usando otras herramientas, tales como SQL Server Management Studio 2008 R2. Puede crear, de forma predeterminada, hasta 149 bases de datos por cada instalación de servidor de SQL Azure. Si necesita más bases de datos, debe llamar a atención comercial de Windows Azure para reducir el límite.

Al crear una base de datos, debe seleccionar el tamaño máximo. Las opciones actuales de tamaño (y de facturación) son Web y Business Edition. Web Edition, el predeterminado, es compatible con bases de datos de entre 1 y 5 GB en total. Business Edition es compatible con bases de datos de hasta 50 GB, con un tamaño que se calcula en incrementos de 10 GB; es decir, 10 GB, 20 GB, 30 GB, 40 GB y 50 GB.

Puede establecer el límite de su base de datos durante su creación, usando la palabra clave MAXSIZE. Puede cambiar el límite de tamaño de la edición (Web o Business) después de su creación inicial, usando la declaración ALTER DATABASE. Si alcanza el límite de tamaño o capacidad para la edición que seleccionó, verá el código de error 40544. El tamaño de la base de datos no incluye la base de datos maestra o cualquier registro de base de datos. Para obtener más detalles acerca del tamaño y los precios, consulte microsoft.com/windowsazure/pricing/#sql.

Es importante entender que, al crear una nueva base de datos de SQL Azure, en realidad está creando tres réplicas de esa base de datos. Esto se hace para garantizar una alta disponibilidad. Estas réplicas son completamente transparentes. La nueva base de datos aparecerá, en lo que concierne a usted, como una sola unidad.

Una vez creada la base de datos, puede obtener la información de la cadena de conexión para ésta al seleccionar la base de datos en la lista del portal y al hacer clic en el botón Cadenas de conexión. También puede probar rápidamente la conectividad por medio del portal al hacer clic en el botón Probar compatibilidad para la base de datos seleccionada. Para superar esta prueba, debe habilitar la opción Permitir que los servicios de Microsoft se conecten a este servidor, la cual está ubicada en la ficha Reglas de firewall, en el portal de SQL Azure.

Creación de la aplicación

Después de configurar la cuenta, crear el servidor, crear al menos una base de datos y establecer una regla de firewall de manera que pueda conectarse a la base de datos, puede empezar a desarrollar su aplicación al usar este origen de datos.

A diferencia de las opciones de almacenamiento de datos de Windows Azure; tales como tablas, colas o blobs; al usar SQL Azure como origen de datos para su programa, no hay nada por instalar en el entorno de desarrollo. Si usa Visual Studio 2010, podrá empezar de inmediato, sin SDK, herramientas o lo que sea.

Aunque muchos desarrolladores escogerán usar un front-end de Windows Azure con un back-end de SQL Azure, puede que no sea necesaria esa configuración. Puede usar cualquier cliente front-end compatible con una biblioteca de conexión, tal como ADO.NET u ODBC. Esto puede incluir, por ejemplo, una aplicación escrita en Java o PHP. Actualmente, no es compatible la conexión a SQL Azure por OLE DB.

Si está usando Visual Studio 2010 para desarrollar su aplicación, puede aprovechar la habilidad incluida de ver o crear varios tipos de objetos en su instalación de base de datos de SQL Azure seleccionada directamente desde el explorador de servidores de Visual Studio. Estos objetos son tablas, vistas, procedimientos almacenados y sinónimos. También podrá ver los datos asociados con estos objetos usando este visor. Para muchos desarrolladores, bastará con usar Visual Studio 2010 como la herramienta primaria para ver o administrar datos de SQL Azure. Se muestra la vista de explorador de servidores en la figura 2. Se muestra tanto la instalación local de una base de datos como una instancia basada en nube. Verá que los tres nodos tienen leves diferencias en las dos vistas. Por ejemplo, no hay un nodo de ensamblados en la instalación de nube, puesto que SQL Azure no es compatible con los ensamblados personalizados.

image: Viewing Data Connections in Visual Studio Server Explorer

Figura 2 Vista de las conexiones de datos en el explorador de servidores de Visual Studio

Como mencioné antes, otra herramienta que deseará usar para trabajar en SQL Azure es SQL Server Management Studio (SSMS) 2008 R2. Con SSMS 2008 R2, puede tener acceso a un conjunto más completo de operaciones para bases de datos de SQL Azure que en Visual Studio 2010. Yo utilizo ambas herramientas, dependiendo de las operaciones que estoy intentando completar. Un ejemplo de una operación disponible en SSMS 2008 R2 (que no está presente en Visual Studio 2010) es crear una base de datos nueva usando un script de T-SQL. Otro ejemplo es la habilidad de realizar fácilmente operaciones de indización (crear, mantener, eliminar, etc.). Se muestra un ejemplo en la Figura 3.

image: Using SQL Server Management Studio 2008 R2 to Manage SQL Azure

Figura 3 Uso de SQL Server Management Studio 2008 R2 para administrar SQL Azure

Recientemente se lanzó en SQL Server 2008 R2 una aplicación de nivel de datos, o DAC. Los pacs de DAC son objetos que combinan esquemas de base de datos y objetos de SQL Server o SQL Azure en una sola entidad. Puede usar tanto Visual Studio 2010 (para crear) o SQL Server 2008 R2 SSMS (para extraer) para crear una DAC desde una base de datos existente.

Si desea usar Visual Studio 2010 para trabajar con una DAC, entonces empiece al seleccionar el tipo de proyecto de aplicación de nivel de datos en Visual Studio 2010. Después, en el explorador de soluciones, haga clic con el botón secundario del mouse en el nombre de su proyecto y haga clic en Importar aplicación de nivel de datos. Se abrirá un asistente para guiarlo a través del proceso de importación. Si usa SSMS, empiece haciendo clic con el botón secundario del mouse en la base de datos que desea usar en el explorador de objetos, haga clic en Tareas, después haga clic en Extraer aplicación de nivel de datos para crear la DAC.

La DAC generada es un archivo comprimido que contiene varios archivos T-SQL y XML. Puede trabajar con sus contenidos al hacer clic con el botón secundario del mouse en el archivo .dacpac y al hacer clic en Desempaquetar. SQL Azure brinda compatibilidad para eliminar, implementar, extraer y registrar pacs de DAC, pero no es compatible con su actualización.

Otra herramienta que puede usar para conectarse a SQL Azure es el lanzamiento de la última versión preliminar Community Technology Preview (CTP) de la herramienta denominada con el nombre en código “Houston”. Houston es una herramienta de administración basada en Silverlight sin instalación, para instalaciones de SQL Azure. Al conectarse a una instalación de SQL Azure usando Houston, especifique la ubicación del centro de datos (a la fecha en la que se escribió este artículo, estos se encuentran en EE.UU. norcentral, EE.UU. sudcentral, norte de Europa, Europa central, Asia pacífico y Sureste de Asia).

Houston está en una etapa beta muy temprana, y el lanzamiento actual (que se muestra en la Figura 4) es bastante similar a SSMS. Houston es compatible con el trabajo en tablas, vistas, consultas y procedimientos almacenados en una instalación de base de datos de SQL Azure. Podrá tener acceso a éste desde el sitio de SQL Azure Labs en sqlazurelabs.com/houston.aspx.

image: Using Houston to Manage SQL Azure

Figura 4 Uso de Houston para administrar SQL Azure

Otra herramienta que puede usar para conectarse a una base de datos de SQL Azure es SQLCMD (msdn.microsoft.com/library/ee336280). Pese a que es compatible con SQLCMD, la herramienta de línea de comandos OSQL no es compatible con SQL Azure.

Usar SQL Azure

Entonces, ya se conectó a su instalación a SQL Azure y creó una nueva base de datos vacía. ¿Qué se puede hacer exactamente con SQL Azure? Puede que se esté preguntando específicamente cuales son los límites impuestos en la creación de objetos. Además ¿cómo rellenar todos esos objetos con datos, una vez que se crearon tales objetos?

Como mencioné al principio del artículo, SQL Azure proporciona almacenamiento relacional de datos de nube, pero tiene algunas características sutilmente diferentes con una instalación de SQL Server local. Comencemos con la creación de objetos, demos un vistazo a algunas de las diferencias clave entre ambas.

Puede crear los objetos usados de forma más habitual en su base de datos de SQL Azure usando métodos familiares. Todos los objetos relacionales más comúnmente usados (lo que incluye tablas, vistas, procedimientos almacenados, índices y funciones) están disponibles. Sin embargo, existen ciertas diferencias en la creación de objetos. El siguiente es un resumen de esas diferencias:

  • las tablas de SQL Azure deben contener un índice agrupado. Los índices no agrupados se pueden crear en tablas seleccionadas. Se pueden crear índices espaciales, pero no se pueden crear indices de XML.
  • no es compatible con tablas de montones.
  • es compatible con los tipos de CLR geoespaciales (como geografía y geometría), como con los tipos de datos HierachyID. No es compatible con otros tipos de CLR.
  • La creación de vista debe ser la primera declaración de un lote. Además, no es compatible con la creación de vista (o de procedimiento almacenado) cifrada.
  • las funciones pueden ser escalares, en línea o ser funciones de declaraciones múltiples con funciones con valores de tabla, pero no pueden ser ningún tipo de función de CLR.

Encontrará una referencia completa a declaraciones T-SQL con compatibilidad parcial con SQL Azure en MSDN, en msdn.microsoft.com/library/ee336267.

Antes de empezar a crear sus objetos, recuerde que se conectará con la base de datos maestra si no especifica una base de datos distinta en su cadena de conexión. En SQL Azure, la declaración USE (base de datos) no es compatible con cambios de bases de datos, de manera que si desea conectarse a una base de datos que no sea la maestra, debe explicitar específicamente esa base de datos en su cadena de conexión, como se indicó antes.

Migración de datos y carga

Si planea crear objetos de SQL Azure usando una base de datos local existente como sus datos y estructuras de fuente, puede simplemente usar SSMS para crear un script de un DDL adecuado para crear esos objetos en SQL Azure. Use el asistente Generar scripts y configure la opción “Script para el tipo de motor de base de datos” a “para SQL Azure”.

Una manera aún más sencilla de generar un script es usar el asistente para migración a SQL Azure, disponible para descargar en CodePlex, en sqlazuremw.codeplex.com. Con esta práctica herramienta, puede generar un script para crear los objetos y también cargar los datos por medio de copia masiva, usando bcp.exe.

También puede diseñar un paquete de SQL Server Integration Services (SSIS) para extraer y ejecutar un script de DDM o DDL. Si usa SSIS, lo más habitual sería que diseñara un paquete que extraiga el DDL desde la base de datos fuente, escriba en script ese DDL para SQL Azure y después ejecute ese script en una o más instalaciones de SQL Azure. También puede escoger cargar los datos asociados como parte de la ruta de ejecución del paquete. Para más información acerca del trabajo con SSIS, consulte msdn.microsoft.com/library/ms141026.

También sería adecuado considerar, en lo tocante a la creación de DDL y a migración de datos, el lanzamiento de CTP de los servicios de sincronización de datos de SQL Azure (sqlazurelabs.com). Puede ver este servicio en acción en un vídeo de Channel 9, “Using SQL Azure Data Sync Service to provide Geo-Replication of SQL Azure Databases” (Usar el servicio de sincronización de datos de SQL Azure para proporcionar georeplicación de bases de datos de SQL Azure) en tinyurl.com/2we4d6q. Actualmente, los servicios de sincronización de datos de SQL Azure funcionan por medio de grupos de sincronización (servidores HUB y MEMBER) y después por medio de sincronización programada al nivel de tablas individuales en la base de datos seleccionada para la sincronización.

Puede usar el Power Pack de Microsoft Sync Framework para SQL Azure para sincronizar datos entre el origen de datos y una instalación de SQL Azure. A la fecha de este artículo, esta herramienta se encuentra en estado de lanzamiento CTP y está disponible en tinyurl.com/2ecjwku. Si usa este marco de trabajo para realizar sincronizaciones de datos posteriores o continuas para su aplicación, también puede que desee descargar las SDK asociadas.

¿Qué pasa si su base de datos fuente es mayor que el tamaño máximo de la instalación de base de datos de SQL Azure? Esto podría ser mayor que el máximo absoluto de 50 GB para Business Edition o algún límite menor de otra opción de programa.

Actualmente, los clientes deben realizar una partición (o segmentar) sus datos de forma manual si el tamaño de su base de datos superaba los límites del programa. Microsoft anunció que próximamente se proporcionará una utilidad de partición automática para SQL Azure. En el intertanto, es importante observar que SQL Azure no es compatible con la partición de tablas de T-SQL. Existe una utilidad gratuita llamada Enzo SQL Shard (enzosqlshard.codeplex.com), que puede usar para realizar una partición de su origen de datos.

Deseará tomar notas de otras diferencias entre SQL Server y SQL Azure sobre la carga y el tener acceso a datos.

Recientemente se agregó la capacidad de copiar una base de datos de SQL Azure por medio del comando copiar base de datos. La sintaxis para la copia entre servidores es la siguiente:

    CREATE DATABASE DB2A AS COPY OF Server1.DB1A

Se brinda compatibilidad a la declaración INSERT de T- SQL (con la excepción de la actualización con vistas o proporcionar una sugerencia de bloqueo dentro de una declaración INSERT).

Algo más asociado a la migración de datos, DROP DATABASE de T-SQL y otros comandos DDL tienen límites adicionales al ejecutarse en una instalación de SQL Azure. Además, no es compatible los comandos RESTORE y ATTACH DATABASE de T-SQL. Para terminar, no es compatible con la declaración EXECUTE AS (inicio de sesión).

Acceso de datos y programación

Ahora, demos un vistazo a asuntos de programación habituales al trabajar con datos de nube. Primero, deseará considerar donde configurar su entorno de desarrollo. Si es un suscriptor a MSDN y puede trabajar con una base de datos menor a 1 GB, podría ser sensato desarrollarlo sólo como una aplicación nube (recinto de seguridad). De esta manera, no habrán inconvenientes con la migración desde local a nube. Al usar una cuenta de SQL Azure regular (no suscriptor a MSDN), podría desarrollar directamente con su instancia de nube (más probablemente al usar una copia ubicada en nube de su base de datos de producción). Por supuesto, desarrollar directamente desde la nube no es práctico en todas las circunstancias.

Si decide trabajar con una base de datos SQL Server local como su origen de datos de desarrollo, entonces, deberá desarrollar un mecanismo para sincronizar su instalación local con la instalación en la nube. Puede hacer esto al usar cualquiera de los métodos comentados anteriormente, y las herramientas como el servicio de sincronización de datos y Sync Framework se están desarrollando con este escenario en mente.

Mientras use sólo las características compatibles, el método para cambiar su aplicación desde una instalación local de SQL Server a una base de datos de SQL Azure es simple: sólo necesita cambiar la cadena de conexión de su aplicación.

Independientemente de si configuró su instalación de desarrollo localmente o en la nube, necesitará comprender ciertas diferencia de programación entre SQL Server y Azure. Ya cubrimos las diferencias entre T-SQL y las cadenas de conexión. Además, todas las tablas deben tener como mínimo un índice agrupado (no se brinda compatibilidad con las tablas de conjuntos).

Como se mencionó anteriormente, no se brinda compatibilidad para la declaración USE para cambiar bases de datos. Esto también significa que no se brinda compatibilidad para transacciones o consultas distribuidas (entre bases de datos) y que tampoco se brinda compatibilidad con servidores vinculados.

Otras opciones que no están disponibles al trabajar con una base de datos de SQL Azure incluyen:

  • indización de textos completos
  • tipos personalizados de CLR (por otra parte, se brinda compatibilidad a los tipos de CLR de geometría y geografía integrados)
  • RowGUID (en lugar de este, use el tipo uniqueidentifier con la función NEWID)
  • índices de columna XML
  • tipo de datos Filestream
  • columnas dispersas

Siempre se usa la intercalación predeterminada para la base de datos. Para hacer ajustes de intercalación, establezca la intercalación de nivel de columna en el valor deseado usando la declaración T-SQL COLLATE.

Para terminar, no puede usar SQL Profiler o el asistente de optimización de la base de datos para su base de datos de SQL Azure.

Algunas herramientas importantes que puede usar con SQL Azure para optimización y supervisión incluyen:

  • el optimizador de consultas de SSMS para ver detalles del plan de ejecución de consultas, tanto estimadas como concretas, y estadísticas de cliente
  • las vistas de administración dinámica de Select para supervisión de salud y estado
  • Entity Framework para conectarse a SQL Azure después de la creación del modelo inicial y de la asignación de archivos por medio de la conexión a una copia local de su base de datos de SQL Azure.

Según el tipo de aplicación que esté desarrollando, es posible que esté usando SSAS, SSRS, SSIS o PowerPivot. También puede usar cualquiera de estos productos como consumidor de datos de base de datos de SQL Azure. Simplemente conéctese a su servidor de SQL Azure y a la base de datos seleccionada usando los métodos ya descritos en este artículo.

También es importante entender completamente el comportamiento de las transacciones de SQL Azure. Como se indicó anteriormente, sólo se brinda compatibilidad a las transacciones locales (dentro de la misma base de datos). Además, el único nivel de aislamiento de transacciones disponible para una base de datos hospedada en SQL Azure es READ COMMITTED SNAPSHOT. Al usar este nivel de aislamiento, los lectores obtienen la última versión de datos consistente disponible cuando se aplique la declaración STARTED.

SQL Azure no detecta conflictos de actualización. Esto también es llamado un modelo de concurrencia optimista, puesto que pueden ocurrir actualizaciones perdidas, lecturas no reproducibles y fantasmas. Por supuesto, no pueden ocurrir lecturas sucias.

Administración de bases de datos

Generalmente, al usar SQL Azure, la función administrador forma parte de la administración de instalación lógica. La administración física se realiza en la plataforma. Desde un punto de vista práctico, esto significa que no hay servidores físicos que usar, instalar, implementar revisiones, mantener o asegurar. No hay capacidad de ubicar de forma física archivos, registros, tempdb, etc. en ubicaciones físicas específicas. Debido a esto, no se brinda compatibilidad para los comandos USE <base de datos>, FILEGROUP, BACKUP, RESTORE o SNAPSHOT de T-SQL.

SQL Azure no es compatible con el agente de SQL. Además, no existe la capacidad (o necesidad) de configurar replicación, envío de registros, creación de reflejos de bases de datos o agrupación. Si necesita mantener una copia local y sincronizada de los esquemas y datos de SQL Azure, puede usar cualquiera de las herramientas discutidas anteriormente para migración de datos y sincronización. Estos funcionan de ambas maneras. También puede usar el comando DATABASE COPY.

Además de mantener sus datos sincronizados, ¿cuáles son otras de las tareas que los administradores pueden necesitar realizar en una instalación de SQL Azure? 

Normalmente, todavía será necesario realizar administración lógica. Esto incluye tareas relacionadas con seguridad y administración de rendimiento. Además, puede que termine supervisando el uso de capacidad y costos asociados. Para ayudarles con estas tareas, SQL Azure proporciona un panel público de historial de estado, que indica el estado actual del servidor y el historial reciente (se muestra un ejemplo del historial en la figura 5), en microsoft.com/windowsazure/support/status/servicedashboard.aspx.

image: SQL Azure Status History

Figura 5 Historial de estado de SQL Azure

SQL Azure proporciona un nivel de seguridad alto de forma predeterminada. Fuerza el cifrado SSL en todas las conexiones de cliente permitidas (por las reglas de firewall). También asegura los inicios de sesión a nivel de servidor y los usuarios y roles a nivel de base de datos. No hay roles de nivel de servidor en SQL Azure. El cifrar la cadena de conexión es una práctica recomendada. Además, puede que desee usar certificados de Windows Azure para seguridad adicional. Para obtener más detalles, consulte blogs.msdn.com/b/sqlazure/archive/2010/09/07/10058942.aspx.

En el área de rendimiento, SQL Azure incluye características tales como eliminar automáticamente transacciones de larga duración y conexiones inactivas (de más de 30 minutos). Pese a que no se puede usar el analizador de SQL o marcas de traza para optimización de rendimiento, puede que desee usar el optimizador de consultas de SQL para ver los planes de ejecución de consultas y estadísticas de clientes. También puede realizar administración de estadísticas y optimización de índices usando los métodos T-SQL estándar.

También existe una exclusiva lista de vistas de administración dinámica (que cubren información de bases de datos, ejecución o transacción), disponibles para administración de bases de datos. Estos incluyen sys.dm_exec_connections, _requests, _sessions, _tran_database_transactions, _active_transactions y _partition_stats. Para ver una lista completa de vistas de administración dinámica compatible con SQL Azure, consulte msdn.microsoft.com/library/ee336238.aspx#dmv.

También existen algunas vistas nuevas, tales como sys.database_usage y sys.bandwidth_usage. Estos muestran el número, tipo y tamaño de las bases de datos y el uso del ancho de banda para cada base de datos, de manera que los administradores puedan entender con claridad las facturas de SQL Azure. Se muestra un ejemplo en la Figura 6. En esta vista, la cantidad se indica en KB. Puede supervisar el espacio usado por medio de este comando:

    SELECT SUM(reserved_page_count) * 8192 
    FROM sys.dm_db_partition_stats

image: Bandwidth Usage in SQL Query

Figura 6 Uso de ancho en Consulta SQL

También puede tener acceso a los cargos actuales por la instalación de SQL Azure por medio del portal de SQL Azure al hacer click en el vínculo Facturación, ubicada en la esquina superior derecha de la pantalla.

Obtener más información

Para obtener más información acerca de SQL Azure, sugiero descargar el Kit de entrenamiento de Windows Azure. Esto incluye lecciones prácticas, documentación, vídeos y más. El kit de entrenamiento está disponible en microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78.

Además, es posible que desee leer el blog del equipo de SQL Azure, en blogs.msdn.com/b/sqlazure/ y revisar el centro de desarrollador de SQL Azure en MSDN, en msdn.microsoft.com/windowsazure/sqlazure.

Si desea continuar viendo las próximas características de SQL Azure, asegúrese de visitar SQL Azure Labs en sqlazurelabs.com.                                                                                

Lynn Langit* es una desarrolladora evangelista de Microsoft del sur de California. Ha publicado dos libros acerca de SQL Server Business Intelligence y ha creado un conjunto de software pedagógico para introducir a niños a la programación en TeachingKidsProgramming.org. Puede leer su blog en blogs.msdn.com/b/SoCalDevGal.*

Gracias a los siguientes expertos técnicos por su ayuda en la revisión de este artículo: George Huey y David Robinson