Introdução sobre o SQL Azure

Waldemir Cambiucci
Arquiteto de Soluções – Microsoft Brasil
Maio 2011

Tecnologias: SQL Azure, Windows Azure

 

Conteúdo

arrow_down.gifIntrodução
arrow_down.gifA plataforma Windows Azure
arrow_down.gifO SQL Azure
arrow_down.gifModelo de Provisionamento
arrow_down.gifModelo de Administração via portal
arrow_down.gifModelo de Acesso e Cenários de Aplicações
arrow_down.gifModelo de Compatibilidade
arrow_down.gifModelo de Segurança
arrow_down.gifModelo de Conexão
arrow_down.gifTamanho do Banco de Dados no SQL Azure
arrow_down.gifModelo de Particionamento Lógico de Dados
arrow_down.gifModelo de Gerenciamento
arrow_down.gifModelo de Migração
arrow_down.gifConsiderações Finais
arrow_down.gifReferências
arrow_down.gifSobre o Autor

Introdução

A computação em nuvem (ou cloud computing) tem sido um dos assuntos mais discutidos atualmente no mundo da tecnologia da informação, seja pela oportunidade de redução de custos em TI ou pelo poder de computação e alta disponibilidade via internet que oferece para seus usuários finais e empresas. Neste cenário, a Microsoft lançou a plataforma Windows Azure, que oferece uma plataforma como serviço (PaaS – Platform as a Service), a partir de seus datacenters espalhados pelo mundo. Além dos recursos nativos do Windows Azure, a plataforma oferece uma série de serviços que capacitam as aplicações com bancos de dados, barramentos de serviços, mecanismos de controle de acesso, entre outros. Um desses serviços é o SQL Azure, um banco de dados relacional que oferece as capacidades de um ambiente SQL na nuvem. Este artigo apresenta os principais conceitos e recursos do SQL Azure.

A plataforma Windows Azure

A plataforma Windows Azure é uma plataforma como serviços (PaaS – platform as a service) oferecendo recurso para computação de processos (Compute), armazenamento de objetos e dados (Storage), gerenciamento de serviços e recursos contratados (Management).

Podemos destacar quatro grandes grupos de capacidades sobre a plataforma Windows Azure, a saber:

  • Windows Azure: com seus recursos para computação, hospedagem de aplicações e serviços, gerenciamento e armazenamento de dados de alta escalabilidade, via o Azure Storage;
  • SQL Azure: com seus recursos para relatórios, persistência de dados relacional, sincronização de dados com o ambiente on-premise e gerenciamento de dados na nuvem;
  • Windows Azure AppFabric: com seus recursos para gerenciamento e publicação de serviços, através do Service Bus, e controle de acesso, através do Access Control. Funcionalidades como o Azure AppFabric Caching oferecem recursos adicionais para aplicação na nuvem de alta performance.
  • Windows Azure DataMarket: finalmente, o Azure DataMarket oferece mecanismos diversos para billing, gerenciamento de pagamentos, subscrição, informações sobre serviços publicados e relatórios para o controle de aplicações oferecidas na nuvem.

Todos esses recursos podem ser consumidos ou utilizados por aplicações, hospedadas no próprio Windows Azure. Aplicações hospedadas no ambiente local (on-premise) de uma empresa também podem consumir esses serviços e recursos na nuvem, criando soluções híbridas poderosas. A figura 1 ilustra os vários recursos presentes na plataforma Windows Azure, veja:

 

Figura 1 – Principais recursos e serviços da plataforma Windows Azure.

Na figura 1 vemos que os recursos da plataforma Windows Azure estão disponíveis para diferentes ambientes de desenvolvimento, como Visual Studio e .NET, Eclipse, PHP, PYTHON e JAVA. A mesma experiência obtida pelo desenvolvedor no ambiente local (on-premise) de uma empresa é obtida quando construímos aplicações para a plataforma Windows Azure.

Ainda, uma aplicação na plataforma Windows Azure pode se beneficiar de todos os recursos acima descritos, conforme a necessidade, num modelo de contratação conhecimento como “pay as you go”, ou seja, o usuário paga somente pelos recursos efetivamente contratados e utilizados na plataforma.

O SQL Azure

O SQL Azure é um conjunto de serviços que oferece capacidades de processamento e armazenamento de dados relacionais na nuvem, sobre a plataforma Windows Azure.

Usando o SQL Azure, as aplicações podem aproveitar recursos como persistência de dados, business intelligence, sincronização, replicação de dados, relatórios, data mining, etc., a partir de uma infraestrutura de alta escalabilidade e provisionamento dinâmico, que são características nativas de um ambiente em nuvem.

A figura 2 apresenta os principais componentes do SQL Azure, veja:


Figura 2 – Principais componentes e serviços do SQL Azure.

 

Entre os benefícios do SQL Azure podemos destacar seu modelo de programação simétrico, que permite ao desenvolvedor trabalhar com o ambiente SQL Server 2008 local (on-premise) e o ambiente de dados do SQL Azure da mesma forma, aproveitando os mesmo recursos do .NET Framework.

Outro benefício do SQL Azure é permitir o foco na aplicação, uma vez que o administrador de dados ou DBA – Database Administrator – não precisa se preocupar com atividades relacionadas à infraestrutura do ambiente SQL Azure, como:

  • Compra de repositório e espaço de armazenamento de dados para seu datacenter;
  • Configuração física e lógica de repositórios;
  • Dimensionamento de servidores;
  • Instalação e atualização de software de bancos de dados;
  • Diagnóstico e resolução de falhas de hardware, etc.;

O principal recurso do SQL Azure é sua capacidade de persistência de dados relacionais, da mesma forma que temos no SQL Server 2008 local (on-premise). Além do suporte ao modelo relacional, o serviço SQL Azure suporta acesso direto via ADO.NET, da mesma forma como ocorre em aplicações locais acessando dados em um banco SQL Server local, ou seja, de forma transparente para o desenvolvedor.

A seguir, veremos as diversas características do SQL Azure.

 

Modelo de Provisionamento

O SQL Azure suporta um modelo de provisionamento baseado em contas Azure com servidores e bases de dados (ou instâncias de SQL Azure), o que permite ao usuário do serviço a criação de bases de dados de 1 GB a 50 GB de espaço para armazenamento, permitindo ainda diversas combinações.

A figura 3 ilustra a hierarquia desses componentes de provisionamento no SQL Azure:


Figura 3 – Modelo de provisionamento do SQL Azure.

Para o modelo de provisionamento do SQL Azure destacamos seus três componentes:

  • Account (conta): Cada conta Azure tem zero ou mais servidores contratados, sendo o instrumento principal para controle de Billing (pagamento);
  • Server (servidor): Cada servidor tem um ou mais bases de dados, sendo o container principal de nossas instâncias de bases. O servidor ainda contém metadados sobre as bases em uso e informações para autenticação. É através do servidor que nos conectamos em nossas bases de dados no SQL Azure, sendo a unidade de autenticação no modelo. Também, o servidor é a unidade de geo-localização, por onde controlamos o datacenter para hospedagem de nossas bases na plataforma Windows Azure, sendo também acessado através de um nome padrão DNS.
  • Database (base de dados): finalmente, cada database ou base de dados no SQL Azure possui os objetos SQL de nossas aplicações. É a unidade de consistência e multi-tenancy do modelo, contendo nossas informações de usuários, tabelas, views, índices, etc. A base de dados é a unidade granular básica para cobrança no SQL Azure.

Por exemplo, para a conta MyAccount, podemos ter um servidor de nome (Fully Qualified DNS name) xaqpblthd.database.windows.net, que conterá nossas bases de dados para aplicações MyDatabaseApp1 e MyDatabaseApp2.

Assim, para criar bases de dados no SQL Azure, você irá precisar de uma conta ativa no Windows Azure. Se você ainda não possui uma conta ativa na plataforma Azure, confira a opção de conta para testes gratuita, disponível até 30 de setembro de 2011, no link a seguir:

Free Windows Azure Platform Trial
Ref.:http://www.microsoft.com/windowsazure/free-trial/

 

Modelo de Administração via portal

Uma vez criada sua conta no Windows Azure, você poderá acessar o portal de administração da plataforma Windows Azure, a partir do qual podemos gerenciar os recursos contratados para nossa conta.

A figura 4 apresenta a página principal do portal de administração da plataforma.

No painel a esquerda da página de administração, notamos as opções de gerenciamento da plataforma, a seguir:

  • Hosted Services, Storage Accounts & CDN
  • Database
  • Reporting
  • Service Bus, Access Control & Caching
  • Virtual Network

Cada opção acima oferece uma página de administração dedicada para recursos específicos da plataforma Windows Azure, associados a sua conta no Azure.


Figura 4 – Página do portal de administração do Windows Azure.

A opção Database agrupa as funcionalidades para administração do SQL Azure.


Figura 5 – Página do portal de administração do Windows Azure, mostrando os recursos da opção Database do portal.

Na figura 5, vemos a conta Azure “wcamb”, sem nenhum servidor SQL Azure contratado. Vemos também o menu superior da página, com as opções para criação de novo servidor SQL Azure, além dos botões Drop, Reset Admin Password, e opções sobre instâncias de bases de dados como Create, Drop, Test Connectivity e Manage.

Ao clicarmos no botão “Create” do grupo “Server”, podemos criar um novo servidor SQL Azure, para ser o container de nossas bases de dados na nuvem.

Seguindo as caixas de diálogo para configuração de nome de login, endereços IP liberados para acesso e configurações de firewall, nosso novo servidor SQL Azure será associado a nossa Azure Account, conforme vemos na figura 6.


Figura 6 – Novo servidor SQL Azure criado para a conta “wcamb”.

Na tela do portal de administração notamos agora uma nova entrada para a subscrição “wcamb”, com o nome de servidor “vy2ba9un14”.

Para esse servidor, o DNS completo para acesso será o “vy2ba9un14.database.windows.net”.

Note ainda que uma instância de bases de dados chamada “master” está presente. Essa base não é cobrada pela plataforma. A base “master” é responsável pelas informações de controle e administração de sua conta SQL Azure, para o servidor contratado.

Uma vez criado o servidor SQL Azure, podemos criar uma primeira instância de base de dados, para nossas aplicações. Fazemos isso através do menu superior do portal de administração, clicando no botão “Create”.


Figura 7 – Criando uma nova instância de base de dados no servidor do SQL Azure.

Ao clicar o botão “Create”, a caixa de diálogo sobre a nova instância será apresentada. Poderemos então escolher entre dois tipos de contratação de bases de dados no SQL Azure:

  • Web Edition: que permite instâncias de 1 GB ou 5 GB de espaço para armazenamento de dados;
  • Business Edition: que permite instâncias de 10, 20, 30, 40 e 50 GB de espaço para armazenamento de dados.

Na figura 8, vemos a escolha de uma base Web Edition com 1 GB de espaço, para testes.


Figura 8 – Criando uma base de dados Web Edition de 1 GB de espaço.

A partir da confirmação acima, uma nova instância de SQL Azure chamada “MyDatabaseWebApp” é criada com sucesso, oferecendo 1 GB de espaço para armazenamento.

A figura 9 ilustra o final do processo de criação de bases no SQL Azure:


Figura 9 – Nova instância de SQL Azure chamada “MyDatabaseWebApp” criada com sucesso.

Pronto! Nossa conta no Windows Azure possui um servidor e uma instância de SQL Azure pronta para uso. A partir deste ponto, podemos criar novas tabelas, índices, stored proceduresou mesmo migrar dados presentes em bases de dados locais (on-premise) para a nuvem.

Da mesma forma, outras instâncias de bases de dados podem ser criadas no servidor SQL Azure contratado, conforme a necessidade de nossas soluções.

Modelo de Acesso e Cenários de Aplicações

Uma aplicação pode contratar um banco de dados SQL Azure de diversos tamanhos para persistência de dados relacionais. Pode ainda combinar diversas instâncias dessas bases conforme a necessidade, por exemplo, para cenários de soluções multi-inquilino.

A partir da criação das bases de dados na nuvem, teremos 3 cenários possíveis para o consumo de dados no SQL Azure:

  • Code Near: a aplicação pode estar hospedada no Windows Azure, consumindo os dados diretamente do SQL Azure;
  • Code Far: a aplicação pode estar hospedada no ambiente local da empresa (on-premise), fora do Windows Azure, consumindo os dados do SQL Azure via internet;
  • Hybrid: as bases do SQL Azure são compartilhadas e acessadas por funcionalidades hospedadas tanto no Windows Azure como em ambiente on-premise.

A figura 10 ilustra esses cenários de acesso para aplicações com o SQL Azure:


Figura 10 – Cenários de acesso para aplicações consumindo dados no SQL Azure.

Nota: é importante determinar o correto modelo de consumo de dados do SQL Azure para sua aplicação nas fases iniciais de projeto. Assim, você terá uma melhora administração e evolução da solução ao longo do tempo, aproveitando melhor os recursos da plataforma Windows Azure. 

Modelo de Compatibilidade

Diversos objetos SQL são suportados para as bases do SQL Azure, com destaque para:

  • Tables, index, views
  • Stored Procedures
  • Triggers
  • Constraints
  • Constants
  • Spatial data
  • Table variables, session temp tables, entre outros.

Os seguintes recursos ainda não são suportados, sendo previstos para versões futuras:

  • SQL Server Agent
  • SQL Server Error Logs
  • SQL Server Utility
  • SQL Server PowerShell Provider
  • Master Data Services
  • Change Data Capture
  • Data Auditing
  • Data Compression
  • Extended Events
  • FILESTREAM Data
  • Integrated Full-Text Search
  • Large User-Defined Aggregates (UDAs)
  • Large User-Defined Types (UDTs)
  • Performance Data Collection (Data Collector)
  • Policy-Based Management
  • Resource Governor
  • Sparse Columns
  • SQL Server Replication
  • Transparent Data Encryption.

Você encontra uma lista completa de recursos e compatibilidade do SQL Azure no link:

General Guidelines and Limitations (SQL Azure Database)
Ref.: http://msdn.microsoft.com/en-us/library/ee336245.aspx

Modelo de Segurança

O modelo de segurança suportado pelo SQL Azure é baseado no padrão SQL Server Authentication, onde o usuário deve fornecer Username + Password  para toda conexão com o SQL Azure.

O serviço também suporta a configuração de uma lista de endereços IP’s que podem acessar o servidor do SQL Azure de forma remota.

Nesse contexto, dois aspectos são importantes para o serviço:

  • O SQL Azure está acessível apenas através da porta TCP 1433;
  • Antes do primeiro acesso, precisamos definir a lista de endereços IP’s através do portal de administração do SQL Azure.

Modelo de Conexão

As aplicações cliente podem se conectar às bases de dados do SQL Azure utilizando os seguintes provedores suportados:

  • .NET Data Provider for SQL Server (System.Data.SqlClient) do .NET 3.5 SP 1
  • SQL2008 Native Client ODBC driver.
  • SQL2008 Driver for PHP version 1.1.
  • TDS (tabular data stream) v.7.3 ou superior.

Essa lista de provedores amplia o número de cenários de aplicações que podem aproveitar os recursos do SQL Azure, oferecendo uma grande flexibilidade para desenvolvedores de software.

Podemos manipular nossa base de dados no SQL Azure Database via ADO.NET, de forma transparente e a partir de nossas aplicações em .NET. Esse recurso permite a máxima integração de aplicações locais, executadas em nossa infraestrutura, persistindo dados no ambiente da nuvem, sobre o SQL Azure.

A listagem 1 apresenta uma aplicação exemplo “CONSOLE APPLICATION” , que cria uma nova base de dados, assim como novas tabelas e consultas sql via ADO.NET.

Listagem 1 – Exemplo de código ADO.NET acessando o SQL Azure.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace SQLAzureConsole
{
    class Program
    {
        private static string userName = "MyUserAccount";
        private static string password = "MyPassWord";
        private static string dataSource = "tcp:MyServer.database.windows.net";
        private static string sampleDatabaseName = "MyDatabaseName";

        static void Main(string[] args)
        {
            // Criando uma connection string para o master database.
            SqlConnectionStringBuilder connString1Builder;
            connString1Builder = new SqlConnectionStringBuilder();
            connString1Builder.DataSource = dataSource;
            connString1Builder.InitialCatalog = "master";
            connString1Builder.Encrypt = true;
            connString1Builder.TrustServerCertificate = true;
            connString1Builder.UserID = userName;
            connString1Builder.Password = password;

            // Criando uma connection string para o meu database.
            SqlConnectionStringBuilder connString2Builder;
            connString2Builder = new SqlConnectionStringBuilder();
            connString2Builder.DataSource = dataSource;
            connString2Builder.InitialCatalog = sampleDatabaseName;
            connString2Builder.Encrypt = true;
            connString2Builder.TrustServerCertificate = true;
            connString2Builder.UserID = userName;
            connString2Builder.Password = password;

            // Conectando ao master database e criando meu database.
            using (SqlConnection conn = new SqlConnection(connString1Builder.ToString()))
            {
                using (SqlCommand command = conn.CreateCommand())
                {
                    conn.Open();
                    string cmdText = String.Format("CREATE DATABASE {0}",
                                                    sampleDatabaseName);
                    command.CommandText = cmdText;
                    command.ExecuteNonQuery();
                    conn.Close();
                }
            }

            // Conectando ao meu banco recém criado e realizando várias operações.
            using (SqlConnection conn = new SqlConnection(connString2Builder.ToString()))
            {
                using (SqlCommand command = conn.CreateCommand())
                {
                    conn.Open();

                    // Criando uma tabela.
                    command.CommandText = "CREATE TABLE T1(Col1 int primary key, Col2 varchar(20))";
                    command.ExecuteNonQuery();

                    // Inserindo alguns registros.
                    command.CommandText = "INSERT INTO T1 (col1, col2) values (1, 'string 1'), (2, 'string 2'), (3, 'string 3')";
                    int rowsAdded = command.ExecuteNonQuery();

                    // Consultando a tabela e imprimindo resultados.
                    command.CommandText = "SELECT * FROM T1";

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        // Loop sobre os resultados.
                        while (reader.Read())
                        {
                            Console.WriteLine("Col1: {0}, Col2: {1}",
                                            reader["Col1"].ToString().Trim(),
                                            reader["Col2"].ToString().Trim());
                        }
                    }

                    // Atualizando um registro.
                    command.CommandText = "UPDATE T1 SET Col2='string 1111' WHERE Col1=1";
                    command.ExecuteNonQuery();

                    // Removendo um registro.
                    command.CommandText = "DELETE FROM T1 WHERE Col1=2";
                    command.ExecuteNonQuery();

                    // Consultando registros.
                    Console.WriteLine("\nDepois do update/delete, a tabela tem os seguintes registros...");

                    command.CommandText = "SELECT * FROM T1";
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        // Loop sobre resultados.
                        while (reader.Read())
                        {
                            Console.WriteLine("Col1: {0}, Col2: {1}",
                            reader["Col1"].ToString().Trim(),
                                            reader["Col2"].ToString().Trim());
                        }
                    }
                }
            }
            Console.WriteLine("Pressione [ENTER] para continuar...");
            Console.ReadLine();
        }
    }
}

-Desse modo, é possível integrar de forma transparente nossas aplicações com um banco de dados relacional na nuvem, sobre o SQL Azure.

Tamanho do Banco de Dados no SQL Azure

O SQL Azure oferece dois tipos básicos para contratação de uma base de dados na nuvem:

  • SQL Azure Web Edition – com tamanhos de 1 GB e 5 GB;
  • SQL Azure Business Edition – com tamanhos de 10, 20, 30, 40 e 50 GB;

Para cada limite de base de dados contratado, não consideramos dados de logs, master database, system tables, catálogos do servidor ou réplicas adicionais.

Até o fechamento deste artigo (Abril/2011), não é suportado o auto-particionamento de dados ou fan-out queries.

Isso significa que devemos tratar o particionamento lógico de dados a partir da aplicação, coordenando o uso de uma ou mais instância de base de dados SQL Azure quando necessário, num modelo conhecido como sharding.

Modelo de Particionamento Lógico de Dados

O SQL Azure suporta um modelo de particionamento lógico de dados conhecido como sharding, onde diversas bases de dados são usadas para armazenar porções de dados da aplicação. Para todas as bases de dados envolvidas, o mesmo schema é utilizado, criando um particionamento horizontal entre diversas bases (shards), usando um mesmo critério de particionamento, por exemplo, informações geográficas, clientes, etc.

O uso de sharding envolve certa complexidade para a aplicação, exigindo uma análise sobre quando podemos separar dados por bases do particionamento, de acordo com cada cenário. Entretanto, a solução tornar-se interessante para cenários multi-inquilino, comuns em soluções SaaS – Software as a Service hospedadas na nuvem.

Para saber mais sobre métodos de sharding e controle de particionamento de dados, confira os laboratórios do training kit da plataforma Windows Azure, disponível para download no link a seguir:

Windows Azure Platform Training Kit - April Update
Ref.:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413e88f8-5966-4a83-b309-53b7b77edf78&displaylang=en

Modelo de Gerenciamento

Além das opções de administração que vimos no portal principal do Windows Azure, a plataforma também oferece um Management Studio online para gerenciamento de nossas bases no SQL Azure.

A ferramenta “Database Manager” está disponível através do botão “Manage” do menu principal da página de administração.


Figura 11 – Tela principal da ferramenta Database Manager do SQL Azure, mostrando informações sobre a base “MyDatabaseName”.

Na tela principal da ferramenta Database Manager temos opções para criação de consultas SQL, criação de tabelas, criação de Views e Stored Procedures.

A figura 12 ilustra a execução de uma consulta SQL sobre a base de dados ”MyDatabaseName”, veja:


Figura 12 – Consultas sobre a base “MyDatabaseName” via Database Manager.

Vale destacar que o DBA também pode administrar e gerenciar suas bases de dados no SQL Azure usando o SQL Server Management Studio local, da mesma forma que faz para administrar o SQL Server 2008. Para isso, deverá entrar o nome DNS do servidor na nuvem, assim como suas credenciais de administração no SQL Azure, como vemos na figura a seguir:


Figura 13 – Usando o SQL Server Management Studio para administrar bases de dados na nuvem, no SQL Azure.

Note que para acessar o SQL Azure a partir do SSMS, devemos usar o modo de autenticação “SQL SERVER AUTHENTICATION”, fornecendo nossas credenciais para o correto login.

Modelo de Migração

A migração de soluções locais (on-premise) para o ambiente do SQL Azure passa pela criação da base na nuvem, assim como seus objetos SQL e upload de dados. Existem diversas ferramentas disponíveis para a migração de dados locais para a nuvem, como:

  • SQL Server BCP Utility
  • SQL Server Integration Services (SSIS)
  • Import and Export Data
  • SQL Server Management Studio (SSMS).
  • Bulk Copy API (exemplo, SQL Azure Migration Wizard)
  • Server Migration Assistant (SSMA) - http://blogs.msdn.com/ssma/

A partir do training kit de Abril/2011 da plataforma Windows Azure, temos um laboratório que ilustra o processo de migração de bases e dados de forma manual, através da ferramenta SQL Server Management Studio.  Você encontra esse laboratório na pasta:

  • C:\WAPTK April2011\Labs\MigratingDatabasesToSQLAzure

Outra ferramenta interessante para o processo de migração de bases locais para o SQL Azure é o projeto SQL Azure Migration Wizard, disponível para download a partir do link:

SQL Azure Migration Wizard v3.6.1
Ref.:http://sqlazuremw.codeplex.com/

Nota: o SQL Azure Migration Wizard não é suportado pela Microsoft. Para cenários de produção ou dados reais, utilizar os mecanismos integrados do SQL Azure Management Studio (SSMS) ou SQL Server Integration Services (SSIS). Scripts executados pelo SQLCMD.EXE e SQL Server BCP utility também sãoindicados.

Considerações Finais

Neste artigo, você conheceu os principais recursos do SQL Azure, um serviço importante da plataforma Windows Azure da Microsoft.

Aplicações híbridas, combinando recursos locais (on-premise) com recursos na nuvem é uma tendência que observamos hoje em dia. Nesse cenário, o SQL Azure torna-se parte importante de uma estratégia para persistência e publicação de dados na nuvem, sobre uma plataforma como serviços, com alta escalabilidade e provisionamento dinâmico.

Seja através de aplicações na nuvem ou de dados na nuvem, continue acompanhando a evolução da plataforma Windows Azure.

 

Referências

SQL Azure Team Blog
Ref.: http://blogs.msdn.com/b/sqlazure/

Windows Azure Platform Administration Portal
Ref.: https://windows.azure.com/default.aspx

Windows Azure SDK and Windows Azure Tools for Microsoft Visual Studio (March 2011)
Ref.: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018&displaylang=en

Windows Azure Platform Training Kit - April Update (April 2011)
Ref.: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413e88f8-5966-4a83-b309-53b7b77edf78&displaylang=en

SQL Azure posts no blog WCAMB
Ref.: http://blogs.msdn.com/b/wcamb/archive/tags/sql+azure/

Free Windows Azure Platform Trial
Ref.: http://www.microsoft.com/windowsazure/free-trial/

General Guidelines and Limitations (SQL Azure Database)
Ref.: http://msdn.microsoft.com/en-us/library/ee336245.aspx

SQL Azure Migration Wizard v3.6.1
Ref.: http://sqlazuremw.codeplex.com/

What is Windows Azure?
http://msdn.microsoft.com/en-us/library/dd179367.aspx


 

Sobre o Autor

Waldemir Cambiucci trabalha na Microsoft Brasil como arquiteto de soluções, com foco na comunidade de arquitetos e clientes corporativos. É graduado em Engenharia de Computação, mestre em Engenharia Elétrica e Pós-Graduado em Finanças e Administração. Com mais de 15 anos de experiência em TI, atua na Microsoft há 9 anos, tendo participado de projetos importantes no Brasil e no exterior. É palestrante frequente em diversos eventos técnicos como Tech-Ed Brasil 2007/2008/2009/2010, SOA Conference Brasil 2008/2009, RAF Brasil 2007/2008/2010, entre outros e escreve periodicamente para revistas e sites de tecnologia. É arquiteto certificado pelo IASA Foundations e possui as certificações MCP, MCSD, MCAD, MCDBA, MCSA, MCTS. Seu blog é o http://blogs.msdn.com/wcamb/ e seu twitter é o http://twitter.com/wcamb/.