Esporta (0) Stampa
Espandi tutto

Considerazioni sullo sviluppo nel database SQL di Azure

Aggiornamento: dicembre 2013

Lo sviluppo delle applicazioni per il Microsoft database SQL di Microsoft Azure è molto simile allo sviluppo delle applicazioni per SQL Server. In questo argomento vengono indicate alcune differenze e alcune considerazioni da tenere a mente durante lo sviluppo di applicazioni del database SQL di Microsoft Azure. Vengono inoltre descritti i passaggi di base da eseguire in qualità di sviluppatore e vengono elencate le procedure di codifica consigliate.

Creazione di server di database SQL

Per utilizzare il database SQL di Microsoft Azure, è necessario innanzitutto creare un account della piattaforma Azure. L'account di Azure viene utilizzato per configurare e gestire le sottoscrizioni e per la fatturazione dell'uso di Azure, Azure AppFabric e il database SQL di Microsoft Azure. Una volta creato l'account Azure, è possibile utilizzare il portale di gestione della piattaforma Azure e aggiungere o eliminare un server database SQL di Azure e un database. Inoltre, è possibile utilizzare l'API di gestione di database SQL di Azure per aggiungere o eliminare a livello di codice server database SQL di Azure e gestire le regole firewall associate a un server.

Un server database SQL di Azure è un gruppo logico di database con funzione di punto amministrativo centrale per più database. Quando si crea un server database SQL di Azure, viene creato automaticamente un database master di sola lettura. Il database master tiene traccia di account di accesso e di autorizzazioni per creare database o altri account di accesso. È necessario essere connessi al database master quando si eseguono le operazioni di CREATE, ALTERo DROP di account di accesso o database. Per ulteriori informazioni sulla gestione della sicurezza nel database SQL di Microsoft Azure, vedere Gestione di database e account di accesso in database SQL di Azure.

Per impostazione predefinita, ogni accesso al server database SQL di Azure è bloccato dal firewall database SQL di Azure. Per iniziare a utilizzare il server database SQL di Azure, è necessario specificare una o più regole firewall di livello server per consentire l'accesso al server database SQL di Azure. Tali regole possono essere gestite tramite l'interfaccia utente del portale di gestione o utilizzando l'API di gestione di database a livello di codice. Prima di poter utilizzare l'API di gestione di database, è necessario aggiungere un certificato per l'autenticazione come descritto in Autenticazione delle richieste API di gestione di database SQL di Windows Azure.

Dopo avere creato un'impostazione del firewall di livello server, è possibile utilizzare l'account di accesso dell'entità di livello server e il database master per visualizzare e modificare le impostazioni del firewall. Nel database master le impostazioni del firewall vengono definite come regole. Nella vista sys.firewall_rules vengono visualizzate le impostazioni del firewall di livello server correnti, mentre le stored procedure sp_set_firewall_rule e sp_delete_firewall_rule consentono di modificare le regole firewall di livello server.

Se si desidera controllare l'accesso ad alcuni database nel server database SQL di Azure, è possibile creare regole firewall di livello database per tali database. È possibile creare regole firewall di livello database per il database master e il database utente. È possibile connettersi a un database e visualizzare le regole firewall di livello database nella vista sys.database_firewall_rules. Le stored procedure sp_set_database_firewall_rule e sp_delete_database_firewall_rule nel database master e nel database utente consentono di modificare le regole firewall di livello database per il rispettivo database. Per ulteriori informazioni sulle regole firewall di livello database e di livello server, vedere Firewall di database SQL di Azure.

È possibile accedere ai dettagli di fatturazione degli account database SQL di Azure nel server database SQL di Azure tramite le viste di sistema sys.database_usage e sys.bandwidth_usage. Per ulteriori informazioni, vedere Account e fatturazione nel database SQL di Azure.

Creazione di database SQL

Le istanze di database SQL di Azure possono essere create in due modi:

  • Utilizzando il portale di gestione.

  • Utilizzando l'istruzione CREATE DATABASE.

Per informazioni sull'esecuzione della migrazione di un database da un'istanza on-premise di SQL Server a database SQL di Azure, vedere Migrazione di database nel database SQL di Azure (precedentemente denominato SQL Azure).

Inoltre, un esempio di codice fornito in Procedura: Connettersi al database SQL di Azure tramite ADO.NET dimostra come utilizzare l'istruzione CREATE DATABASE nel codice dell'applicazione client.

noteNota
Per modificare l'edizione e il nome del database dopo la creazione, è possibile utilizzare l'istruzione ALTER DATABASE.

Compilazione e hosting delle applicazioni di database SQL

Esistono due modi per compilare e ospitare applicazioni del database SQL di Microsoft Azure:

  • Ospitare il codice dell'applicazione on-premise nel proprio data center aziendale, ma ospitare il database in database SQL di Azure. Nel codice dell'applicazione vengono utilizzate le librerie client per accedere al database in database SQL di Azure. Per ulteriori informazioni sulle librerie client disponibili, vedere Linee guida e limitazioni per il database SQL di Azure. Per ottenere un codice di esempio, vedere l'argomento Procedura: Connettersi al database SQL di Azure tramite ADO.NET.

  • Ospitare il codice dell'applicazione in Azure e il database in database SQL di Azure. L'applicazione utilizza le stesse librerie client per accedere al database in database SQL di Azure. In questo caso, è possibile che l'applicazione client sia un desktop o un'applicazione Silverlight che utilizza i vantaggi di Entity Data Model e il client WCF Data Services per accedere ai dati ospitata in database SQL di Azure. Per ottenere un codice di esempio, vedere Procedura: connettersi al database SQL di Azure tramite WCF Data Services.

È possibile ridurre la latenza di rete delle richieste a database SQL di Azure ospitando l'applicazione nella piattaforma Azure. La distribuzione dell'applicazione a Azure fornisce transazioni più efficienti tra l'applicazione e database SQL di Azure rispetto a un'applicazione non ospitata in Azure. Per ulteriori informazioni sull'hosting di applicazioni e dati nel cloud, vedere Accesso ai dati di database SQL di Azure.

La larghezza di banda utilizzata tra database SQL di Azure e Azure o Azure AppFabric è gratuita all'interno della stessa area o dello stesso data center. Quando si distribuisce un'applicazione Azure, posizionare l'applicazione e database SQL di Azure nella stessa area per evitare costi di larghezza di banda. Per ulteriori informazioni, vedere Account e fatturazione nel database SQL di Azure.

Sviluppo di applicazioni di database SQL

Lo sviluppo di applicazioni per il database SQL di Microsoft Azure è molto simile allo sviluppo di applicazioni per SQL Server. Durante lo sviluppo di un'applicazione che accede al database SQL di Microsoft Azure, è possibile scegliere tra diversi tipi di applicazioni e tecnologie. Il database SQL di Microsoft Azure funziona con applicazioni di terze parti, PHP e molte applicazioni Microsoft, quali ADO.NET, Entity Framework, WCF Data Services e ODBC.

Nel database SQL di Microsoft Azure è disponibile un servizio di database multi-tenant su larga scala nelle risorse condivise. Per garantire a tutti i clienti di database SQL di Microsoft Azure un'esperienza ottimale, la connessione al servizio potrebbe essere chiusa a causa delle condizioni seguenti:

  • Utilizzo eccessivo delle risorse

  • Query con esecuzione prolungata

  • Transazioni singole con esecuzione prolungata tra le istruzioni BEGIN TRAN e END TRAN

  • Connessioni inattive

Il loro funzionamento è diverso da quello di un'istanza on-premise di SQL Server.

Per fornire un'esperienza utente migliore quando una connessione viene chiusa, incorporare la logica di ripetizione tentativi nell'applicazione per rilevare una connessione chiusa e tentare quindi di completare l'azione sospeso. Per ulteriori informazioni sulle limitazioni delle connessioni nel database SQL di Microsoft Azure, vedere Linee guida e limitazioni generali per il database SQL di Azure.

Quando l'applicazione client si connette al database SQL di Microsoft Azure, CONTEXT_INFO (Transact-SQL) viene impostato automaticamente con una sessione univoca valore GUID specifico. Recuperare questo valore GUID e utilizzarlo nell'applicazione per tenere traccia dei problemi di connettività.

Nelle istruzioni di codice C# seguenti viene illustrato come modificare l'applicazione per tenere traccia della connettività.


// Define global variables.
private static Dictionary<SqlConnection, Guid> _cache = new Dictionary<SqlConnection, Guid>();
public static SqlConnection conn;

// Connect to the sample database.
using (conn = new SqlConnection(connStringBuilder.ToString()))
{
   // Define the event handler.
   conn.StateChange += new StateChangeEventHandler(OnConnectionStateChange);
   conn.Open();
   using (SqlCommand command = conn.CreateCommand())
   {
      // Perform a query or an update.
      // Retrieve the session ID.
      Guid id = SessionId(conn);
      conn.Close();
    }
}

// Retrieve the session ID to track the connectivity. 
public static Guid SessionId(this SqlConnection conn)
{
    return _cache[conn];
}

// Implement your event handler.
public static void OnConnectionStateChange(object sender, StateChangeEventArgs e)
{
   SqlConnection conn = (SqlConnection)sender;
   switch (e.CurrentState)
   {    
      case ConnectionState.Broken:
           Console.WriteLine("Connection is broken...");
           _cache.Remove(conn);
           break;
      case ConnectionState.Closed:
           Console.WriteLine("Connection is closed...");
           _cache.Remove(conn);
           break;
      case ConnectionState.Open:
           Console.WriteLine("Connection is open...");
           using (SqlCommand cmd = conn.CreateCommand())
           {
               cmd.CommandText = "SELECT CONVERT(NVARCHAR(36), CONTEXT_INFO())";
              _cache[conn] = new Guid(cmd.ExecuteScalar().ToString());
            }
            break;
   }
}

Vedere anche

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft