Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Olá pessoal, tudo certo?
Hoje tivemos o segundo dia do Tech-Ed Brasil 2010 e na parte da manhã, fiz uma apresentação sobre o SQL Azure, o banco de dados relacional na plataforma Azure.
Para lembrar, temos 3 tipos de arquitetura de aplicações consumindo dados do SQL Azure, como vemos na figura a seguir:
Arquitetura Code Near – quando a aplicação e a base de dados estão sobre o Windows Azure. Assim, a aplicação é uma Web Role ou Worker Role, consumindo dados do SQL Azure.
Arquitetura Code Far – quando a aplicação está hospedada em ambiente local (on-premise) e consome dados hospedados no SQL Azure. Esse tipo de cenário é interessante para aplicações legadas que estão usando dados na nuvem, por exemplo.
Arquitetura Híbrida – quando a solução combina aplicação e dados entre o ambiente local e o ambiente na nuvem.
Cada cenário possui seus prós e contras, que devem ser avaliados de acordo com as necessidades da aplicação.
Entre os vários assuntos tratados, apresentei uma demo com diversas classes de conexão com o SQL Azure, usando: ODBC, ADO.NET, OLEDB, LINQ TO SQL, PHP e JAVA.
Como combinado, segue abaixo o link para a demo de conexão.
Conectando via ODBC…
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Data.Common;
6: using System.Data.Odbc;
7:
8: namespace ConnectDemoApp
9: {
10: public class OdbcConnectionDemo : SQLAzureConnectionDemo
11: {
12: public OdbcConnectionDemo(string userName, string password, string dataSource, string databaseName) :
13: base(userName, password, dataSource, databaseName)
14: {
15: }
16:
17: protected override DbConnection CreateConnection(string userName, string password, string dataSource, string databaseName)
18: {
19: return new OdbcConnection(CreateOdbcConnectionString(userName, password, dataSource, databaseName));
20: }
21:
22: private string CreateOdbcConnectionString(string userName, string password, string dataSource, string databaseName)
23: {
24: string serverName = GetServerName(dataSource);
25:
26: OdbcConnectionStringBuilder connectionStringBuilder = new OdbcConnectionStringBuilder
27: {
28: Driver = "SQL Server Native Client 10.0",
29: };
30: connectionStringBuilder["Server"] = "tcp:" + dataSource;
31: connectionStringBuilder["Database"] = databaseName;
32: connectionStringBuilder["Uid"] = userName + "@" + serverName;
33: connectionStringBuilder["Pwd"] = password;
34: return connectionStringBuilder.ConnectionString;
35: }
36:
37: protected override DbCommand CreateCommand(DbConnection connection)
38: {
39: return new OdbcCommand() { Connection = connection as OdbcConnection };
40: }
41: }
42: }
Conectando via ADO.NET…
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Data.Common;
6: using System.Data.SqlClient;
7:
8: namespace ConnectDemoApp
9: {
10: public class AdoConnectionDemo : SQLAzureConnectionDemo
11: {
12: public AdoConnectionDemo(string userName, string password, string dataSource, string databaseName)
13: : base(userName, password, dataSource, databaseName)
14: {
15: }
16:
17: protected override DbConnection CreateConnection(string userName, string password, string dataSource, string databaseName)
18: {
19: return new SqlConnection(CreateAdoConnectionString(userName, password, dataSource, databaseName));
20: }
21:
22: private string CreateAdoConnectionString(string userName, string password, string dataSource, string databaseName)
23: {
24: // create a new instance of the SQLConnectionStringBuilder
25: SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder
26: {
27: DataSource = dataSource,
28: InitialCatalog = databaseName,
29: Encrypt = true,
30: TrustServerCertificate = false,
31: UserID = userName,
32: Password = password,
33: };
34:
35: return connectionStringBuilder.ToString();
36: }
37:
38: protected override DbCommand CreateCommand(DbConnection connection)
39: {
40: return new SqlCommand() { Connection = connection as SqlConnection };
41: }
42: }
43: }
Conectando via LINQTOSQL…
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5:
6: namespace ConnectDemoApp
7: {
8: public class LinqToSqlConnectionDemo
9: {
10: /// <summary>
11: /// AdventureWorksSqlAzureDataContext takes care of handling your transactions for you
12: /// leaving you free you use Linq to extraxt information stored up in the cloud.
13: /// </summary>
14: public void ConnectToSQLAzureDemo()
15: {
16: HolTestDBEntities context = new HolTestDBEntities();
17:
18: // get all company names
19: IQueryable<string> emails = from customer in context.Customer
20: select customer.EmailAddress;
21:
22: // display these all on the console
23: foreach (string email in emails)
24: {
25: Console.WriteLine(email);
26: }
27: }
28: }
29: }
Conectando via OLEDB…
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Data.Common;
6: using System.Data.OleDb;
7:
8: namespace ConnectDemoApp
9: {
10: public class OleDbConnectionDemo : SQLAzureConnectionDemo
11: {
12: public OleDbConnectionDemo(string userName, string password, string dataSource, string databaseName)
13: : base(userName, password, dataSource, databaseName)
14: {
15: }
16:
17: protected override DbConnection CreateConnection(string userName, string password, string dataSource, string databaseName)
18: {
19: return new OleDbConnection(CreateOleDBConnectionString(userName, password, dataSource, databaseName));
20: }
21:
22: private string CreateOleDBConnectionString(string userName, string password, string dataSource, string databaseName)
23: {
24: string serverName = GetServerName(dataSource);
25:
26: OleDbConnectionStringBuilder connectionStringBuilder = new OleDbConnectionStringBuilder
27: {
28: Provider = "SQLOLEDB",
29: DataSource = dataSource,
30: };
31: connectionStringBuilder["Initial Catalog"] = databaseName;
32: connectionStringBuilder["UId"] = userName + "@" + serverName;
33: connectionStringBuilder["Pwd"] = password;
34:
35: return connectionStringBuilder.ConnectionString;
36: }
37:
38: protected override DbCommand CreateCommand(DbConnection connection)
39: {
40: return new OleDbCommand() { Connection = connection as OleDbConnection };
41: }
42: }
43: }
Conectando via JAVA…
1: // Build a connection string
2: String connectionUrl= "jdbc:sqlserver://server.database.windows.net;" +
3: "database=mydatabase;encrypt=true;user=user@server;password=*****";
4:
5: // Next, make the sure the SQL Server Driver is loaded.
6: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
7:
8: // Then attempt to get a connection. This will null or throw if we can't get a connection.
9:
10: Connection sqlConn = DriverManager.getConnection(connectionUrl);
11: if (sqlConn == null)
12: {
13: System.out.println("Unable to obtain connection. exiting");
14: System.exit(1);
15: }
16:
17: // Got a connection, do what you will
18: // Free the connection
19: sqlConn.close();
Conectando via PHP…
1: <?php
2: $host = "server.database.windows.net";
3: $dbname = "database";
4: $dbuser = "user@server";
5: $dbpwd = "password";
6: $driver = "{SQL Server Native Client 10.0}";
7:
8: // Build connection string $dsn="Driver=$driver;Server=$host;Database=$dbname;Encrypt=true;TrustServerCertificate=true";
9: if (!($conn = @odbc_connect($dsn, $dbuser, $dbpwd))) {
10: die("Connection error: " . odbc_errormsg());
11: }
12:
13: // Got a connection, do what you will
14: // Free the connection
15: @odbc_close($conn);
16: ?>
Bastante coisa!
Por enquanto é só! Até o próximo post :)
Waldemir.