Tech-ed Brasil 2009: exemplos para o SQL Azure Database
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:
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.
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! :)
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.: https://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.
Comments
Anonymous
September 01, 2009
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.Anonymous
September 11, 2009
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 FernandaAnonymous
September 12, 2009
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.