blog Arquitetura de Soluções

por Waldemir Cambiucci

Tech-ed Brasil 2009: exemplos para o SQL Azure Database

Tech-ed Brasil 2009: exemplos para o SQL Azure Database

  • Comments 3

Olá pessoal, tudo certo?

Durante o Tech-ed Brasil 2009, apresentei uma sessão sobre o SQL Azure Database, falando sobre as novidades do último CTP de agosto deste serviço.

Entre as novidades, temos agora o suporte a T-SQL, compatível com: Tables, indexes e views, Stored Procedures, Triggers
Constraints, Constantes, Table variables, session temp tables (#t),
etc.

Outros recursos estão previstos para as próximas atualizações do serviço, como Distributed Transactions, Distributed Query, CLR, Service Broker, Spatial, System tables, Trace Flags, entre outros. Vale acompanhar o blog do time de produto, aqui.

A página principal de administração de suas bases no portal do Azure é essa abaixo:

image

Ref.: https://sql.azure.com/

Podemos criar novas bases a partir do portal, via SQLCMD.EXE (em linha de comando), via SQL Server Management Studio 2008 (ainda parcialmente suportado) ou mesmo programaticamente.

Durante a palestra, apresentei um exemplo de código para a criação de uma base e algumas operações. Atendendo a pedidos, segue o código abaixo:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Data.SqlClient;
   6: using System.Data;
   7:  
   8: namespace Microsoft.SDS.Samples
   9: {
  10:     class Program
  11:     {
  12:         private static string userName = "MyUserAccount";
  13:         private static string password = "MyPassWord";
  14:         private static string dataSource = "tcp:MyServer.ctp.database.windows.net";
  15:         private static string sampleDatabaseName = "MyDatabaseName";
  16:  
  17:         static void Main(string[] args)
  18:         {
  19:             // Criando uma connection string para o master database.
  20:             SqlConnectionStringBuilder connString1Builder;
  21:             connString1Builder = new SqlConnectionStringBuilder();
  22:             connString1Builder.DataSource = dataSource;
  23:             connString1Builder.InitialCatalog = "master";
  24:             connString1Builder.Encrypt = true;
  25:             connString1Builder.TrustServerCertificate = true;
  26:             connString1Builder.UserID = userName;
  27:             connString1Builder.Password = password;
  28:  
  29:             // Criando uma connection string para o meu database.
  30:             SqlConnectionStringBuilder connString2Builder;
  31:             connString2Builder = new SqlConnectionStringBuilder();
  32:             connString2Builder.DataSource = dataSource;
  33:             connString2Builder.InitialCatalog = sampleDatabaseName;
  34:             connString2Builder.Encrypt = true;
  35:             connString2Builder.TrustServerCertificate = true;
  36:             connString2Builder.UserID = userName;
  37:             connString2Builder.Password = password;
  38:  
  39:             // Conectando ao master database e criando meu database.
  40:             using (SqlConnection conn = new SqlConnection(connString1Builder.ToString()))
  41:             {
  42:                 using (SqlCommand command = conn.CreateCommand())
  43:                 {
  44:                     conn.Open();
  45:                     string cmdText = String.Format("CREATE DATABASE {0}",
  46:                                                     sampleDatabaseName);
  47:                     command.CommandText = cmdText;
  48:                     command.ExecuteNonQuery();
  49:                     conn.Close();
  50:                 }
  51:             }
  52:  
  53:             // Conectando ao meu banco recém criado e realizando várias operações.
  54:             using (SqlConnection conn = new SqlConnection(connString2Builder.ToString()))
  55:             {
  56:                 using (SqlCommand command = conn.CreateCommand())
  57:                 {
  58:                     conn.Open();
  59:  
  60:                     // Criando uma tabela.
  61:                     command.CommandText = "CREATE TABLE T1(Col1 int primary key, Col2 varchar(20))";
  62:                     command.ExecuteNonQuery();
  63:  
  64:                     // Inserindo alguns registros.
  65:                     command.CommandText = "INSERT INTO T1 (col1, col2) values (1, 'string 1'), (2, 'string 2'), (3, 'string 3')";
  66:                     int rowsAdded = command.ExecuteNonQuery();
  67:  
  68:                     // Consultando a tabela e imprimindo resultados.
  69:                     command.CommandText = "SELECT * FROM T1";
  70:  
  71:                     using (SqlDataReader reader = command.ExecuteReader())
  72:                     {
  73:                         // Loop sobre os resultados.
  74:                         while (reader.Read())
  75:                         {
  76:                             Console.WriteLine("Col1: {0}, Col2: {1}",
  77:                                             reader["Col1"].ToString().Trim(),
  78:                                             reader["Col2"].ToString().Trim());
  79:                         }
  80:                     }
  81:  
  82:                     // Atualizando um registro.
  83:                     command.CommandText = "UPDATE T1 SET Col2='string 1111' WHERE Col1=1";
  84:                     command.ExecuteNonQuery();
  85:  
  86:                     // Removendo um registro.
  87:                     command.CommandText = "DELETE FROM T1 WHERE Col1=2";
  88:                     command.ExecuteNonQuery();
  89:  
  90:                     // Consultando registros.
  91:                     Console.WriteLine("\nDepois do update/delete, a tabela tem os seguintes registros...");
  92:  
  93:                     command.CommandText = "SELECT * FROM T1";
  94:  
  95:                     using (SqlDataReader reader = command.ExecuteReader())
  96:                     {
  97:                         // Loop sobre resultados.
  98:                         while (reader.Read())
  99:                         {
 100:                             Console.WriteLine("Col1: {0}, Col2: {1}",
 101:                                             reader["Col1"].ToString().Trim(),
 102:                                             reader["Col2"].ToString().Trim());
 103:                         }
 104:                     }
 105:                 }
 106:             }
 107:             Console.WriteLine("Pressione [ENTER] para continuar...");
 108:             Console.ReadLine();
 109:         }
 110:     }
 111: }

Para quem gosta do SQLCMD.EXE, o script de conexão que usei com o SQL Azure Database (SAD) foi o seguite:

sqlcmd.exe -S “MyServer.ctp.database.windows.net” -U  “MyUser@MyServer” -P  “MyPassword” -d  “master“

Com a linha de comando acima, conectamos ao SAD na base master. Com a conexão realizada, podemos executar os mesmos comandos T-SQL que conhecemos, suportados na v1 (CTP de agosto).

E para quem pretendo testar o serviço via SQL Server Management Studio 2008, vale a dica: cancelar a primeira janela de conexão e sempre criar uma nova consulta (New Query) para toda conexão com o banco.

image

E pode ignorar o erro ANSI_NULLS, que vai aparecer de tempos em tempos após cada conexão. Ainda estamos em CTP, lembre-se! :)

image

Para quem ainda não viu, o Windows Azure Platform Training Kit (August 2009 Update) está bem legal, oferecendo uma introdução sobre o SAD e seus recursos. Leitura obrigatória! :)

Windows Azure Platform Training Kit
Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&displaylang=en

Estou trabalhando ainda num artigo maior, descrevendo os principais aspectos do novo CTP do SQL Azure Database. Aguardem! :)

Por enquanto é só! Até o próximo post :)

Waldemir.

  • Olá pessoal,

    Para quem ainda não viu, o arquiteto Flavio de Moraes escreveu um belo post introdutório sobre o SQL Azure Database, ensinando os primeiros passos para o registro e uso do serviço no Azure.

    Vale conferir!

    SQL Azure no Ar

    Ref.: http://flaviomoraes.wordpress.com/2009/08/28/sql-azure-no-ar/

    Um abraço!

    Waldemir.

  • Fiz o logon no sistema, mas diversos erros ocorrerão, a minha base de dados não estava acessível, não consegui testar nenhuma funcionalidade.

    Att

    Fernanda

  • Olá Fernanda, tudo certo?

    Obrigado pelo comentário no blog.

    Sei que o serviço é retirado do ar de tempos em tempos, para manutenções ou atualizações. Tive indisponibilidades como essa antes do Tech-ed Brasil, no final de agosto. Essas ocorrências aparecem registradas no portal do serviço SQL Azure, no link abaixo:

    http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx

    Como o serviço ainda está em período de CTP, essas indisponibilidades são previsíveis, pois segundo o time de produto, são as alterações recebidas através de feedbacks do mercado.

    A partir de novembro deste ano, teremos o lançamento comercial do serviço, quando realmente os níveis de operação (SLA) contratados deverão ser respeitados. Para saber mais sobre os níveis de operação, vamos acompanhar o link abaixo:

    http://www.microsoft.com/azure/faq.mspx#license

    Acabei de fazer o teste no link https://sql.azure.com/ e o serviço está no ar novamente! Consegui conectar pelo portal, por ADO.NET e pelo SQL Server Management Studio, visitando minhas 4 bases de dados na nuvem.

    Deve ter sido uma manutenção rápida! :)

    Um abraço!

    Waldemir.

Page 1 of 1 (3 items)
Leave a Comment
  • Please add 3 and 7 and type the answer here:
  • Post