Il presente articolo è stato tradotto automaticamente.

Windows Azure

Suggerimenti per la migrazione delle proprie applicazioni nella cloud

Giorgio Huey

Uno dei nostri Preferiti aspetti della tecnologia è è in continua evoluzione e modificare continuamente, c'è sempre più informazioni! Studenti e followers della cloud computing, siamo lieti enormemente sulla piattaforma Windows Azure. Evangelists tecnici di Microsoft, abbiamo eroi ideale per lavorare con i clienti nell'adozione di nuove tecnologie. Di conseguenza, abbiamo visto un host diversi modi in cui applicare Windows Azure.

Anticipo su Giorgio aveva una ragione per cui si desidera utilizzare Windows Azure personale. Giovanni sono coinvolto in molte attività della comunità e la possibilità di rapidamente applicazioni temporanee di selezione e rotazione verso il basso quando non più necessari si è rivelata estremamente utile. Per gli sviluppatori esperti la scrittura di codice di Microsoft .NET Framework, è non qualsiasi curva di apprendimento, generare l'applicazione, distribuirlo ed eseguirlo.

A causa degli interessi molti dei nostri clienti aziendali esprimere ­ ed in Windows Azure, abbiamo deciso di tenere una serie di laboratori di Windows Azure migrazione a Microsoft Technology Center. L'intento era portare le proprie applicazioni in ambiente di laboratorio e effettivamente la migrazione a Windows Azure. Questo processo è in grado di migrare correttamente le applicazioni e i database SQL per la piattaforma Windows Azure ogni singolo cliente.

Non ci fosse sorpresa, abbiamo già era sufficiente esperienza con Windows Azure ed erano certi dovrebbe soddisfare i clienti con successo. Ma di aiutare i partecipanti del laboratorio la migrazione delle applicazioni diverse, abbiamo appreso alcuni trucchi agevolare le migrazioni. In questo articolo abbiamo verrà condividere alcuni di questi suggerimenti e trucchi abbiamo scoperto utilizzo dei clienti sulle migrazioni reali.

Nozioni fondamentali sulla migrazione

Se si decide di migrazione un'applicazione da edificio per la nuvola (o creare una nuova applicazione su un servizio cloud), vi sono molti aspetti dell'architettura dell'applicazione è necessario considerare:

  • Gestione delle applicazioni
  • Sicurezza dell'applicazione
  • Compatibilità delle applicazioni
  • Compatibilità del database

Le domande e problemi che abbiamo sentiti più di frequente durante i laboratori di migrazione tended a imperniati su queste quattro aree. Di conseguenza, abbiamo concentrerò nostra discussione intorno a questi argomenti.

Si uno ritiene abbiamo spesso rilevato durante l'idea che, utilizzando Windows Azure, gli sviluppatori non necessario preoccuparsi di modelli architetturali comuni riguardanti problemi quali la disponibilità, scalabilità, affidabilità e protezione durante lo spostamento o la creazione di applicazioni nell'area. La verità è che sono ugualmente validi per le applicazioni ideate per la distribuzione di edificio o distribuzione di Windows Azure modelli architetturali nel contesto di elaborazione distribuita.

Gestione dell'applicazione

Indipendentemente se l'applicazione è in esecuzione su edificio o nell'area, il team di gestione delle operazioni richiede che i dati che consentiranno loro di prendere decisioni efficace. I problemi da considerare includono contratti di servizio, pianificazione della capacità, cliente fatturazione, controllo, applicazione di monitoraggio, analisi del traffico e gestione dei costi (sapere quando scalare in alto o in basso). Questi devono essere risolti prima che l'applicazione viene distribuita nell'ambiente di produzione, ­ e per ottenere risultati ottimali, spesso prima che venga creato l'applicazione.

Questi sono solo alcuni dei problemi che sono stati considerati durante i laboratori di migrazione Windows Azure. Utilizzando l'API di diagnostica Windows Azure fornito in Windows Azure SDK (Microsoft.WindowsAzure.Diagnostics), i clienti erano in grado di esporre il dump di arresto anomalo dell'applicazione non riuscita richiesta traccia, registri eventi Windows, nei registri IIS, nei registri di Windows Azure e contatori delle prestazioni.

Questo è molto più semplice di quanto ci si potrebbe aspettare. Il monitoraggio diagnostico per indicare quali tipi di informazioni di diagnostica per raccogliere ( Figura 1 per un esempio vedere) e impostare la pianificazione di trasferimento dati per le informazioni da trasferire in una posizione di archiviazione centrale Windows Azure.

Figura 1 impostazione diagnostica

public class WebRole : RoleEntryPoint {
  public override bool OnStart() {
    DiagnosticMonitorConfiguration config = 
      DiagnosticMonitor.GetDefaultInitialConfiguration();

    // To see which counters you can capture, type
    // "typeperf.exe /q" in a command window.

    // Capture CPU utilization.
    PerformanceCounterConfiguration procUtilization = 
      new PerformanceCounterConfiguration();
    procUtilization.CounterSpecifier = 
      @"Processor(*)\% Processor Time";
    procUtilization.SampleRate = 
      System.TimeSpan.FromSeconds(30.0);  
    config.PerformanceCounters.DataSources.Add(procUtilization);

    // Monitor available memory.
    PerformanceCounterConfiguration procAvailMemory = 
      new PerformanceCounterConfiguration();
    procAvailMemory.CounterSpecifier = @"\Memory\Avail MBytes";
    procAvailMemory.SampleRate = 
      System.TimeSpan.FromSeconds(30.0);  
    config.PerformanceCounters.DataSources.Add(procAvailMemory);

    // Add event collection from Windows Event Log 
    // (System and Application event logs).
    config.WindowsEventLog.DataSources.Add("System!*");
    config.WindowsEventLog.DataSources.Add("Application!*");

    // All of the information monitored so far is being stored locally. 
    // Tell diagnostic monitor what schedule period should be used when 
    // transfering the events. 
    config.Directories.ScheduledTransferPeriod = 
      TimeSpan.FromMinutes(1);
    config.Logs.ScheduledTransferPeriod = 
      TimeSpan.FromMinutes(1);

    // Start the diagnostics monitor.
    DiagnosticMonitor.Start("DiagnosticsConnectionString", config);

    // True gives full crash dumps. False gives small crash dumps.
    CrashDumps.EnableCollection(false); 

    System.Diagnostics.Trace.TraceInformation("OnStart Completed");

    RoleEnvironment.Changing += RoleEnvironmentChanging;

    return base.OnStart();
  }
...

Per ulteriori informazioni sulla diagnostica Windows Azure, vedere l'articolo “ area diagnostica: Eseguire controllo di registrazione e analisi in Windows Azure ” da Mike Kelley, nel numero di giugno 2010 di MSDN Magazine.

Sicurezza dell'applicazione

Una priorità assoluta di qualsiasi organizzazione spostando la nuvola è la protezione. Molte aziende hanno investito una notevole quantità di tempo, denaro e progettazione in Progettazione e lo sviluppo di un modello di protezione, è importante che siano in grado di sfruttare gli investimenti esistenti quali archivi di identità, single Sign-on soluzioni e firewall.

Esistono molti modi per una società proteggere le applicazioni basate su cloud, un motivo sempre più diffuso è un approccio basato su attestazioni.

Il processo è illustrato nella Figura 2. Affinché un'applicazione può essere in grado di elaborare i token di protezione da un Security Token Service (STS), è necessario stabilire una relazione di trust tra l'applicazione e il servizio STS.

image: Claims-Based Identity in an Application Context

Figura 2 di identità basata sulle attestazioni in un contesto di

Vengono definite le regole di controllo di accesso (passaggio 1) per soddisfare i requisiti aziendali (che possono accedere all'applicazione). Queste regole vengono memorizzate con il servizio STS. Quando un utente tenta di accedere all'applicazione, viene reindirizzata il servizio STS, in modo che possa ricevere un token valido (passaggio 2). L'utente fornisce un insieme di input attestazioni (ad esempio, un Live ID o un account di dominio) per il servizio STS per scopi di autenticazione. Il servizio STS verrà mappato tali attestazioni per un set di attestazioni di output dopo l'autenticazione dell'utente (passaggio 3). Nel passaggio 4, le attestazioni di output vengono inserite in un token SAML (Security Assertions Markup Language), firmate mediante il servizio STS e restituite all'utente per l'inoltro dell'applicazione (il componente partner nel passaggio 5). L'applicazione conferma che il token SAML è valido e il servizio STS attendibili (passaggio 6). Dopo il token viene convalidato, l'applicazione controlla le attestazioni del token e invia la risposta appropriata (passaggio 7). Semplice! Il vantaggio di questo approccio è che esso rientri molto bene il modello di provider ASP.NET. Il processo di creazione di un'applicazione ASP.NET grado di riconoscere attestazioni è davvero semplice.

Per semplificare la vita per gli sviluppatori, Microsoft ha introdotto Windows identità Foundation (WIF) SDK. Questo è tutto il lavoro noioso dell'analisi di token SAML 2.0, consentendo agli sviluppatori di concentrarsi sulla sua applicazione senza preoccuparsi della tecnologia di protezione.

La prima cosa da fare è scaricare WIF e di WIF SDK. Dopo che questi sono installati, sarà necessario che l'applicazione grado di riconoscere attestazioni.

Nella soluzione Visual Studio con l'applicazione ASP.NET Web, fare clic destro e scegliere Aggiungi | Aggiungi nuovo sito Web. Selezionare il modello ASP.NET Security Token Service Web Site. Consente di impostare un STS per l'ambiente di sviluppo.

Una volta al servizio STS creato, è possibile aggiungere un riferimento per il servizio STS facendo doppio clic sull'applicazione e scegliere “ Aggiungi riferimento STS. ” Verrà avviata una procedura guidata che illustra il processo di creazione di una relazione tra l'applicazione e il servizio STS. Scegliere file web.config dell'applicazione per il sito e specificare l'URI dell'applicazione (vedere di Figura 3).

image: Starting the Federation Utility Wizard

Figura 3 Avvio guidato federazione utilità

Nel passaggio successivo, scegliere “ utilizza un STS esistente ” e quindi specificare il percorso del file FederationMetadata.xml nel progetto STS (vedere di Figura 4). Scegli i valori predefiniti per il resto del processo.

Figure 4 Configuring the STS

Figura 4 configurazione di STS

Esaminare il file web.config. Si noterà che la procedura guidata Util.exe ­ Fed modificato una notevole quantità di codice. Le modifiche più importanti apportate al nodo microsoft.identityModel del file web.config. Qui si vedrà i riferimenti al progetto STS, insieme ai tipi di attestazioni previsto dall'applicazione. Per garantire che l'applicazione in modo appropriato riceve le attestazioni da di STS, inserire il codice seguente nella pagina default.aspx (si noti che è necessario aggiungere un riferimento al Microsoft.IdentityModel dal SDK WIF):

IClaimsIdentity ici = 
  (IClaimsIdentity)Thread.CurrentPrincipal.Identity;

foreach (Claim c in ici.Claims) {
  Response.Write(c.ClaimType + " - " + c.Value + "<br/>");
}

Quando successivamente si esegue l'applicazione, viene automaticamente reindirizzato per il servizio STS. Per impostazione predefinita, il servizio STS consente di autenticare come “ Antonio Carter. ” Fai clic sul pulsante di accesso (non richiede una password).

Dopo che il servizio STS autentica l'accesso, verrà reindirizzata nuovamente all'applicazione Web, con un token SAML necessario per l'autenticazione. Accetta il token e consentire alla pagina default.aspx eseguire l'applicazione. Poiché i moduli WIF intercettano le credenziali di protezione, si è in grado di eseguire il cast di identità principale come un IClaimsIdentity e, di conseguenza, è possibile estrarre le attestazioni tipo e valore dell'identità dell'oggetto (vedere di Figura 5).

image: The Claims Type and Value of an Identity Object

Figura 5 le attestazioni di tipo e valore di un oggetto di identità

Ora che l'applicazione Web è in grado di riconoscere attestazioni, è facile adattare il modello di identità esistenti. È sufficiente aggiornare il file di configurazione in modo che punti alla produzione STS e assicurarsi di aver configurato l'applicazione come un componente. Inoltre, è possibile utilizzare queste informazioni per creare un provider di ruoli personalizzato che è possibile convertire i tipi di attestazioni in ruoli.

Questa è una tecnica estremamente potente e consente di spostare le applicazioni per qualsiasi ambiente, sull'edificio, la nuvola o persino un datacenter di partner e ancora convalida gli archivi di identità tramite un STS esposti pubblicamente.

Compatibilità delle applicazioni

Windows Azure è una piattaforma per applicazioni, è importante comprendere quali tipi di applicazioni adatte alla piattaforma Windows Azure. Mentre è possibile eseguire il codice nativo e sarà possibile eseguire le applicazioni con attendibilità completa, è necessario package dell'applicazione prima di distribuirla nell'area, è importante valutare l'applicazione per verificare se si tratta di un buon mezzo adatta.

Ecco un esempio. Uno dei nostri clienti con i laboratori di migrazione Windows Azure era un'applicazione esistente di un server back-end di SQL Server 2005, una LINQ a livello di accesso ai dati SQL e un front-end utilizzando MVC Framework 1.0 e ASP.NET 3.5 SP1 in esecuzione su IIS.

L'applicazione noi in una Web farm con un bilanciamento del carico di traffico di routing. L'applicazione è stata senza informazioni sullo stato in modo non ha importanza a quale server l'utente finale è stato indicato.

Un'interessante dettaglio dell'applicazione era che l'applicazione MVC gestisce oltre 220 siti Web separati. La società utilizzata una combinazione di routing MVC e le informazioni archiviate nel database di SQL Server per determinare quale contenuto dovrà essere caricato per ogni sito Web. Non vi sono cinque server Web dietro il bilanciamento del carico che gestiscono visite pagina oltre 4 milioni al mese per la raccolta di siti Web.

La sfida principale della società ha dovuto affrontata era il periodo di tempo impiegato per il provisioning di un nuovo server Web per l'ambiente: mesi! Quando la società considerato la migrazione dell'applicazione Windows Azure, la motivazione primaria stava salvando una notevole quantità di tempo. Lo scaling out sarebbe diventato un dettaglio di configurazione anziché un incubo trimestre lungo.

Il processo di migrazione a Windows Azure è abbastanza semplice. Ecco il processo generico utilizzato:

  1. Verificare che l'applicazione viene eseguita correttamente nell'ambiente di sviluppo.
  2. La migrazione di SQL Server back end Azure SQL utilizzando la migrazione guidata Azure SQL (verrà trattato i dettagli più avanti in questo articolo).
  3. Aggiornare l'applicazione locale con il database SQL Azure. Non è semplice come la modifica della stringa di connessione.
  4. Consente di convertire l'applicazione in un progetto Web ruolo.
  5. Verificare che l'applicazione è in esecuzione in locale sviluppare tessuto mento ­.
  6. Package di ruolo Web e distribuirlo in Windows Azure.
  7. Verificare che l'applicazione viene eseguita da Windows Azure.

Per ridurre le dimensioni del pacchetto Web ruolo, terminato estrarre tutte le immagini e file CSS fuori delle cartelle contenute e posizionandoli in Windows Azure blob di archiviazione.

Poiché il contenuto era Windows Azure blob di archiviazione, è in grado di sfruttare la rete di recapito di contenuto (CDN) di Windows Azure GGP. Ciò consentiva la cache di dati seduti vicino agli utenti finali.

Per una panoramica di sviluppo, test e distribuzione di Windows Azure, vedere l'articolo “ Windows Azure: Sviluppo e distribuzione azzurro applicazioni Windows in Visual Studio 2010 ” nella 2010 aprile emissione di MSDN Magazine. Per un'analisi più approfondita a problemi di archiviazione, vedere “ Storage Area: Emettere fueling motore dell'applicazione con Windows Azure Storage ” nella 2010 gennaio.

Compatibilità del database

Quando SQL Azure innanzitutto, abbiamo migrato pochi del nostro database di SQL Server a esso. Insieme a nostra esperienza con i laboratori di migrazione Windows Azure, abbiamo appreso prima di iniziare il processo di migrazione, è necessario considerare alcuni aspetti importanti.

Innanzitutto, è importante controllare le dimensioni del database e come adatta le indennità di database utilizzate da SQL Azure. SQL Azure offre attualmente, Web Edition nelle edizioni Business e le dimensioni di 1 GB e 5 di 10, 20, 30, 40 e 50 GB dimensioni. È necessario controllare il database e assicurarsi che non sia superiore a 50 GB. Se il database è superiore a 50 GB, quindi è necessario esaminare il database e vedere se può essere suddivisi in database più piccoli (in altre parole, sharding database) o lo spostamento di grandi quantità di dati BLOB.

SQL Azure supporta solo l'autenticazione di SQL, sarà necessario valutare se le modifiche sono necessarie per lo schema di autenticazione utilizzato dall'applicazione. SQL Azure sopra di questo, ha una limitazione di risorse che limita il tempo di connessione. Verrà trattato entrambi i problemi più avanti nell'articolo.

La versione del database di SQL Server è un altro elemento, che è necessario prendere in considerazione prima della migrazione del database a SQL Azure. SQL Azure si basa su SQL Server 2008. Ciò significa che, se si desidera eseguire la migrazione dei database di SQL Server 2000 o SQL Server 2005 a SQL Azure, è necessario assicurarsi che i database siano compatibili con SQL Server 2008. Ad esempio, nelle versioni precedenti di SQL Server supportano i join TSQL vecchi stile quali * = e = * operatori nella clausola WHERE. SQL Server 2008 supporta solo join stile ANSI. Ad esempio:

SELECT ProcessClassTypeName
       , bpa.PropertyMetadata AS PropertyMetadataOverride
       , act.PropertyMetadata AS PropertyMetadataDefault
  FROM dbo.BusinessProcessActivities bpa
  LEFT JOIN dbo.Activities act ON act.Activity_ID = bpa.Activity_ID

Quando il livello di compatibilità del database è impostato su SQL Server 2005 o SQL Server 2008, il vecchio stile join TSQL (* = e = *) non sono supportati. Questo è solo un esempio dei problemi di compatibilità che sono disponibili per la migrazione a SQL Server 2008.

Esula dall'ambito di questo articolo per descrivere in dettaglio il processo di migrazione a SQL Server 2008. Se siete interessati a procedure consigliate per la migrazione della database, estrarre il “ di Ultimate Guida per l'aggiornamento a SQL Server 2008 ”. È inoltre disponibile un'ampia gamma di risorse disponibili presso la MSDN SQL Server developer center .

È il percorso migliore per migrare da un database compatibile di ­ SQL Server 2008 - SQL Azure sono disponibili. Ciò significa che se si desidera eseguire la migrazione di SQL Server 2000 o 2005 database SQL Azure, è possibile passare attraverso un aggiornamento su edificio a SQL Server 2008 prima la migrazione a SQL Azure.

Microsoft offre un ottimo strumento chiamato di Preparazione aggiornamento a SQL Server analizza le istanze di SQL Server 2000 e SQL Server 2005 per identificare le funzionalità e le modifiche alla configurazione che potrebbero interferire con l'aggiornamento. Vengono forniti collegamenti alla documentazione descrive ognuno identificato problema e su come risolverlo. Dopo avere verificato che il database sia compatibile con SQL Server 2008, avanzamento veloce per la migrazione del database a SQL Azure.

Detto questo, è inoltre necessario essere consapevoli che SQL Azure non supporta il 100% delle nuove funzionalità di SQL Server 2008. Ad esempio, filestream non è attualmente supportato in SQL Azure. Esistono vari modi per verificare eventuali problemi di compatibilità quando SQL Azure.

L'approccio blunt force è semplicemente cavalcare lato wild, eseguire gli script TSQL SQL Azure e cercare gli errori. Correggere gli eventuali errori che si verificano ed eseguire nuovamente. Ripetere finché non riuscita. Forse non il meglio utilizza il tempo, ma è per decidere.

È possibile utilizzare la procedura guidata Generatore script di SQL Server Management Studio per generare lo script T-SQL. Si noti che quando dettagliatamente la procedura guidata, assicurarsi di selezionare l'opzione di scripting avanzata e selezionare SQL Azure Database per la proprietà “ script per il tipo di motore di database ”. Se non viene rilevata in questo passaggio, viene generato TSQL non è compatibile con SQL Azure.

È inoltre possibile scaricare SQL Azure migrazione guidata (SQLAzureMW) da sqlazuremw.codeplex.com . SQLAzureMW eseguirà il migliore per identificare i problemi di compatibilità, correggerli dove possibile e notifica di tutti i problemi che conosce.

Per comprendere meglio le indicazioni generali e le limitazioni di SQL Azure, vedere msdn.microsoft.com/library/ee336245 .

Una volta SQL Azure contiene lo schema del database (tabelle, viste, stored procedure e così via), sarà necessario caricare i dati. Di seguito sono i modi più comuni:

  • SQL Server Integration Services
  • Programma di copia di massa (BCP)
  • SqlBulkCopy per la migrazione dei dati
  • Azure migrazione guidata (che utilizza BCP in background)

Utilizzando SQLAzureMW

Giorgio creato SQLAzureMW per aiutare i clienti con il processo di migrazione del database SQL. Figura 6 Mostra SQLAzureMW in azione.

image: Using SQLAzureMW

Figura 6 con SQLAzureMW

SQLAzureMW analizza i database di SQL Server per problemi di compatibilità con SQL Azure. Consente inoltre di eseguire la migrazione di dati e oggetti di database dal database di origine a SQL Azure.

Utilizzando SQLAzureMW, gli sviluppatori di database possono avere un'idea della quantità di lavoro dovranno migrazione i database a SQL Azure. Se SQLAzureMW segnalati numerosi problemi di compatibilità con SQL Server 2000 o 2005 database, si consiglia di aggiornare il database a SQL Server 2008 prima, quindi la migrazione a SQL Azure. Il processo di migrazione a SQL Server 2008 è ben documentato e numerose indicazioni e competenze che possono sfruttare. Per ulteriori informazioni sulla migrazione a SQL Server 2008, vedere la Guida SQL Server 2008 aggiorna Technical Reference (microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7 ). È disponibile inoltre un'ampia gamma di risorse da MSDN SQL Server developer center (msdn.microsoft.com/sqlserver ).

Si noti che se non si dispone di SQL Server 2008 R2, ciò non impedire è attraverso il processo di aggiornamento. È sufficiente scaricare SQL Server 2008 R2 Express Edition e passare attraverso il processo di aggiornamento side-by-side.

Altre fonti buona per gli sviluppatori di database comprendere le differenze tra SQL Server e SQL Azure, cosa è compatibile e non, novità e indicazioni generali e limitazioni, includere il riferimento a Transact-SQL (database SQL Azure) msdn.microsoft.com/library/ee336281 e indicazioni generali e limiti (database SQL Azure) in msdn.microsoft.com/library/ee336245 .

Non importa se si decide di eseguire l'aggiornamento a SQL Server 2008 prima o semplicemente migrare direttamente da SQL Server 2000 o 2005, è necessario un modo per analizzare il database per problemi di compatibilità e generare codice SQL compatibile con SQL Azure. Si tratta in cui SQL ­ AzureMW contribuisce davvero. Non è solo possibile analizzare il database SQLAzureMW analizzerà anche i file di traccia di SQL Profiler quando si desidera controllare SQL dinamico per problemi di compatibilità.

Durante i laboratori di migrazione, siamo riusciti a migrare tutti i database SQL (SQL Server 2000 e SQL Server 2005) per SQL Azure con poco alcuna modifica. I due problemi rimanenti necessarie per affrontare erano autenticazione e limitazione di risorse SQL Azure.

Il problema di autenticazione era che SQL Azure supporta solo l'autenticazione di SQL, autenticazione di Windows. Nel caso di un cliente, dovevano modificare la stringa di connessione per riflettere il nome utente e password anziché una connessione trusted. Ad esempio, abbiamo avviato con qualcosa di simile:

<add key="ConStr" 
  value="server=DbSvr;database=CRMDB;Trusted_Connection=yes" />
We simply changed the connection string to something like this:
<add key="ConStr" 
  value="Server=avl6qnn22s.database.windows.net;Database=CRMDB;User ID=WebSvrAdmin@avl6qnn22s;Password=password;Trusted_Connection=False;" />
To get more information on connecting to SQL Azure using ADO.NET, see msdn.microsoft.com/library/ee336243.

Limitazione della risorsa

Indirizzamento di limitazione della risorsa SQL Azure richiedeva un po' più di lavoro per alcune applicazioni.Per le applicazioni seguito consigliate per ottenere una connessione a un database SQL solo quando necessario e all'ultimo secondo possibile, eseguire tutte le operazioni in modo rapido ed efficiente e consentendo di passare della connessione appena possibile limitazione SQL Azure non era un problema.D'altra parte, le applicazioni che catturata una connessione a un database SQL all'avvio e conservati nella connessione per tutta la durata del programma o per lunghi periodi di tempo, era modificato per implementare la logica Riprova o sottoposto a refactoring di seguire le procedure consigliate e non contengono risorse.

Si uno ritiene che è stato eseguito in un lotto era che SQL Azure sarebbe solo disconnettere la connessione se la connessione sat inattivo per cinque minuti.SQL Azure prende in considerazione diversi fattori di determinare quando interrompere un'applicazione, incluso l'utilizzo eccessivo di risorse, le query con esecuzione prolungata, transazioni singole con esecuzione prolungata e le connessioni inattive.

Il team SQL Azure continuerà a modificare la risorsa la limitazione di parametri, ma il risultato finale è che l'applicazione deve disporre di logica di tentativi incorporato perché SQL Azure comporterà una disconnessione in qualsiasi applicazione che supera i relativi parametri di utilizzo delle risorse.

In generale, SQL Azure fornisce messaggi di errore specifici se essa throttles mai la connessione.Per un elenco completo degli errori, vedere msdn.microsoft.com/library/ff394106 .

Se si dispone di un elevato volume di transazioni di piccole dimensioni, è consigliabile utilizzare il modello seguente:

  1. Utilizzare il pool di connessioni.La gestione di pool di connessione manterrà le connessioni aperta automaticamente e verrà quasi alcun impatto sulle prestazioni dell'applicazione aprire e chiudere le connessioni.
  2. Mantenere la connessione per piccola una durata possibile.Aprire la connessione, eseguire l'operazione e chiudere la connessione.
  3. Utilizzare il modello try-catch intorno l'attività del database.
  4. Intercettare le eccezioni e ripetere la transazione, se appropriato.
  5. Log di errori ed eccezioni per facilitare la risoluzione dei problemi.Assicurarsi di ottenere un timestamp UTC o fornire ora e fuso orario, l'ID di contesto di connessione e il numero di eccezione.

SQLAzureMW è un buon esempio di un'applicazione che ha dovuto affrontare la limitazione in SQL Azure risorsa.Come accennato in precedenza, SQLAzureMW possibile migrare un database SQL su edificio SQL Azure.Se si sta eseguendo la migrazione di un database contenente le tabelle più di 1.000, 1.500 stored procedure e milioni di righe di dati, facilmente potrebbe richiedere più di cinque ore a seconda della quantità effettiva di dati che devono essere caricati.

In questo scenario, SQLAzureMW avrebbe oltre 2.500 istruzioni SQL da eseguire su SQL Azure, nonché i dati di migrazione tramite BCP.L'esecuzione di più di 2.500 TSQL istruzioni in una singola istruzione (o transazione) più probabilmente supererebbe risorse SQL Azure limitazione parametri, e pertanto crea una connessione interrotta.

Come soluzione di interruzioni SQLAzureMW verso il basso le transazioni in più piccoli bunches e viene eseguita finché SQL Azure interrompe la connessione.­ SQL AzureMW rileva l'errore di connessione, ristabilisce una nuova connessione con SQL Azure e riprende l'elaborazione dopo l'ultimo comando riuscita.Allo stesso modo, quando si utilizza BCP per caricare i dati SQL Azure, SQLAzureMW chunks i dati in sezioni più piccole e riprova a utilizza la logica per determinare l'ultimo record correttamente caricato prima della chiusura della connessione.Quindi ha BCP riavviare il caricamento dei dati con il set di record successivo.

Il team del prodotto SQL Azure ha reso grandi miglioramenti a SQL Azure poiché SQL Azure primo rilascio.Ad esempio, molti dei problemi di limitazione è stato eseguito in durante i laboratori di migrazione sono andato immediatamente, anche se si consiglia comunque le applicazioni utilizzano logica di tentativi per gestire terminato normalmente le connessioni.

Operazioni successive

Come si può vedere, sebbene esistano numerosi problemi da considerare nella pianificazione di una facile migrazione Windows Azure, in pratica di che abbiamo trovato che la quantità di lavoro necessaria per eseguire la migrazione un'applicazione da edificio a Windows Azure è spesso minima.Naturalmente, questo sarà diverso per ogni applicazione.

È necessario eseguire analisi per determinare se è opportuno eseguire la migrazione a Windows Azure e quali problemi è necessario all'indirizzo.Durante i laboratori di migrazione Windows Azure, i nostri clienti trovare fossero in grado di eseguire la migrazione delle applicazioni con poco alcuna modifica e che sono in grado di utilizzare la piattaforma Windows Azure con poco curva di apprendimento e di investimento.Le informazioni qui, con strumenti quali SQLAzureMW, devono raggiungere un risultato positivo allo stesso modo.

George Huey è un architetto principale per gli sviluppatori & Platform Evangelism Group Microsoft. Huey opera con società che consentono di comprendere le tecnologie nuove ed emergenti e modalità di applicazione di queste tecnologie per risolvere i problemi aziendali. È anche autore di migrazione guidata SQL Azure (SQLAzureMW).

Wade Wegner per Microsoft ed è il tecnico evangelist per la piattaforma Windows Azure. È possibile contattarlo sul suo blog all'indirizzo blog.wade­wegner.com o o Twitter in twitter.com/wadewegner.

*Grazie all'esperto di tecnica seguente per la revisione di questo articolo:*Jim Nakashimi