Dieser Artikel wurde maschinell übersetzt.

Windows Azure

Tipps zur Migration von Anwendungen in die Cloud

Georg Huey

Unsere bevorzugte Aspekte der Technologie ist, dass es ständig weiterentwickelt und ständig ändern – es gibt immer mehr zu erfahren! Als Kursteilnehmer und der Wolke computing Followers sind wir ungeheuer der Plattform Windows Azure begeistert. Als technischer Evangelists für Microsoft haben wir die großartigen Vermögen Arbeit mit Kunden in die Übernahme der neuen Technologie. Daher haben wir gesehen, eine Vielzahl von Möglichkeiten in der Windows-Azure angewendet.

Georg hätten frühzeitig einen persönlichen Grund, Windows Azure verwenden. Georg viele Community-Aktivitäten beteiligt ist, und die Möglichkeit, schnell temporäre Anwendungen drehen und rotieren Sie nach unten, wenn nicht mehr benötigt erwies als ungeheuer nützlich. Für Entwickler mit Erfahrungen, die Microsoft .NET Framework-Code zu schreiben, ist kaum eine Lernphase – die Anwendung erstellen, bereitstellen und ausführen.

Wegen der Zinsen bringen viele unserer Unternehmenskunden ­ Ed in Windows Azure, wir entschieden, eine Reihe von Windows Azure Migration Übungseinheiten der Microsoft Technology Centers halten. Die Absicht war, bringen Ihre Anwendungen in der Testumgebung, und Migrieren Sie diese tatsächlich Windows Azure für Kunden. Durch diesen Prozess konnte jeder einzelnen Kunden Ihre Webanwendungen und SQL-Datenbanken auf der Plattform Windows Azure erfolgreich migriert.

Wir waren überrascht nicht – wir bereits viel Erfahrung mit Windows Azure hatte und waren davon überzeugt wäre unsere Kunden mit Erfolg erfüllen. Aber im Verlauf des helfen, die Übungseinheit Teilnehmer die verschiedenen Anwendungen migrieren, haben wir ein paar Tricks, mit denen Migrationen reibungslos zu wechseln. In diesem Artikel werden wir einige dieser Tipps und Tricks, wir arbeiten mit Kunden auf realen Migrationen entdeckten freigeben.

Grundlagen der Migration

Wenn Sie zum Migrieren von einer Anwendung aus auf Räumlichkeiten, der Wolke (oder zum Erstellen einer neuen Anwendung Cloud-Dienst), gibt es verschiedene Aspekte der Anwendungsarchitektur, die berücksichtigt werden müssen:

  • Anwendungsverwaltung
  • Anwendungssicherheit
  • Anwendungskompatibilität
  • Datenbank-Kompatibilität

Die Fragen und bedenken, die wir gehört, die am häufigsten während der Migration Übungseinheiten tended, um diese vier Bereiche drehen. Dies hat zur Folge, konzentrieren wir uns auf unsere Diskussion über diese Themen.

Ein Missverständnis wir oft festgestellt wurde die Idee, mithilfe von Windows Azure Entwickler verfügen über gemeinsame Architekturmuster im Hinblick auf Probleme, z. B. Verfügbarkeit, Skalierbarkeit, Zuverlässigkeit und Sicherheit zu verschieben oder das Erstellen von Anwendungen in der Wolke Gedanken machen. Die Wahrheit ist, dass Architekturmuster im Kontext der verteilten Datenverarbeitung für Anwendungen konzipiert, die in den Geschäftsräumen Bereitstellung bzw. Windows Azure Bereitstellung gleichermaßen gültig sind.

Anwendungsverwaltung

Unabhängig davon, ob die Anwendung auf dem Gelände ausgeführt wird oder in der Wolke benötigt das Management-Betriebsteam Daten, die es ermöglichen, um effektive Entscheidungen zu treffen. Die Probleme, die Sie berücksichtigen müssen gehören Service Level Agreements, Kapazitätsplanung, Kunden Rechnungsinformationen, Überwachung, Überwachung, Analyse des Datenverkehrs und Verwalten der Kosten (wissen, wann Sie nach oben oder unten skaliert). Diese müssen behoben werden, bevor die Anwendung in die Produktion bereitgestellt wird – ­ und optimale Ergebnisse häufig vor die Anwendung erstellt wird.

Dabei handelte es sich um nur einige der Probleme, die bei Windows Azure Migration Labs berücksichtigt wurden. Durch die Verwendung von Windows-Diagnose-API für das Azure bereitgestellten in Windows Azure SDK (Microsoft.WindowsAzure.Diagnostics) Kunden Absturzabbilder Anwendung verfügbar machen konnten, Fehler bei der Anforderung, die Ablaufverfolgung, Windows-Ereignisprotokolle, IIS-Protokolle, Azure Windows Protokolle und Leistungsindikatoren.

Dies ist viel einfacher, als Sie erwarten. Welche Arten von Diagnoseinformationen zu erfassen (siehe Abbildung 1 für ein Beispiel), und die Informationen in einem zentralen Windows Azure Speicherort übertragen werden planen übertragen Daten erfahren Sie dem Diagnose Monitor.

Abbildung 1 Setting Up-Diagnose

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();
  }
...

Weitere Informationen zu Windows Azure Diagnose, finden Sie im Artikel “ Wolke-Diagnose: Vornehmen von der Protokollierung und Ablaufverfolgung in Windows Azure ” Mike Kelley, in der 2010 Juni-Ausgabe des MSDN Magazine.

Anwendungssicherheit

Ein Hauptanliegen jeder Organisation verschieben in der Wolke ist die Sicherheit. Die meisten Unternehmen haben eine beträchtliche Zeit, Geld und Engineering in entwerfen investiert, und entwickeln ein Sicherheitsmodell und es ist wichtig, dass Sie vorhandene Investitionen z. B. Identitätsspeichern, Lösungen für einzelne anmelden und Firewalls nutzen können.

Es gibt viele Möglichkeiten, wie ein Unternehmen gehen über das Sichern von Cloud-basierte Anwendungen, ist ein zunehmend beliebter Muster einem anspruchsbasierten Ansatz.

Dieser Prozess wird in Abbildung 2 dargestellt. Damit eine Anwendung in der Lage sein Sicherheitstoken von einem Security Token Service (STS) verarbeiten kann muss eine Vertrauensstellung zwischen der STS und der Anwendung hergestellt werden.

anspruchsbasierte Identität in einem Anwendungskontext

Abbildung 2 anspruchsbasierte Identität in einem Anwendungskontext

Zugriffssteuerungsregeln (Schritt 1) sind definiert, um die Geschäftsanforderungen zu erfüllen (die in der Anwendung anmelden kann). Diese Regeln werden mit dem STS gespeichert. Wenn ein Benutzer versucht, auf die Anwendung zugreifen, wird er auf der STS umgeleitet, so, dass er ein gültiges Token (Schritt 2) empfangen kann. Der Benutzer gibt einen Satz von Eingabeansprüche (z. B. eine Live ID oder ein Domänenkonto) der STS für Authentifizierungszwecke. Der STS werden diese Ansprüchen auf einen Satz von Ausgabeansprüchen zugeordnet, sobald der Benutzer authentifiziert wurde (Schritt 3). In Schritt 4 sind die Ausgabe Ansprüche in einem Token Security Assertionen Markup Language (SAML) verpackt, vom STS signiert und an den Benutzer zum Weiterleiten an die Anwendung (relying Partner in Schritt 5) zurückgegeben. Die Anwendung wird bestätigt, dass das SAML-Token gültig und vom vertrauenswürdigen STS (Schritt 6) ist. Sobald das Token bestätigt wird, wird die Anwendung überprüft die Ansprüche im Token und sendet die entsprechende Antwort (Schritt 7) zurück. Ziemlich einfach! Der Vorteil dieses Ansatzes ist es sehr gut in dem ASP.NET-Anbietermodell passt,. Die Schritte zum Erstellen einer ASP.NET-Anwendung anspruchsbewusste ist wirklich ganz einfach.

Zum Leben für Entwickler leichter machen, führte Microsoft Windows Identity Foundation (WIF) SDK. Dies wird alle die Routinearbeit Analyse von SAML 2.0-Token, die den Entwickler auf seine Anwendung zu konzentrieren, ohne die zugrunde liegende Sicherheitstechnologie für die Gedanken zu lassen.

Der erste Schritt ist downloaden WIF und das SDK WIF . Sobald diese installiert sind, müssen Sie Sie benötigen, um Ihre Anwendung Ansprüche aufmerksam zu machen.

In der Visual Studio-Projektmappe mit der ASP.NET Web-Anwendung, mit der rechten Maustaste, und wählen Sie hinzufügen | neue Website hinzufügen. Wählen Sie die Vorlage ASP.NET Security Token Service-Website. Dadurch können Sie einen STS für Ihre Entwicklungsumgebung einrichten.

Sobald Sie Ihr STS erstellt haben, können Sie einen Verweis auf den STS hinzufügen, indem Sie mit der rechten Maustaste auf die Anwendung, und klicken Sie auf “ Hinzufügen STS-Verweis ”. Dies startet einen Assistenten, der Sie durch den Prozess der Herstellung einer Beziehung zwischen der Anwendung und der STS führt. Zeigen Sie web.config-Datei der Anwendung für die Website, und geben Sie den Anwendungs-URI (siehe Abbildung 3 ).

Föderation Hilfsprogramm-Assistent wird gestartet.

Abbildung 3 Föderation Hilfsprogramm-Assistent wird gestartet.

Wählen Sie im nächsten Schritt “ verwenden eines vorhandenen STS ”, und geben Sie den Speicherort der Datei FederationMetadata.xml des STS-Projekts (siehe Abbildung 4 ). Wählen Sie die Standardeinstellungen für den Rest des Prozesses.

Konfigurieren der STS

Abbildung 4 Konfigurieren der STS

Betrachten Sie die web.config-Datei. Sie werden feststellen, dass der Fed ­ Util.exe-Assistent eine beträchtliche Menge an Code geändert. Die wichtigsten Änderungen wurde die microsoft.identityModel Knoten der web.config-Datei. Hier sehen Sie Verweise auf STS-Projekt zusammen mit Anspruchstypen, die von der Anwendung erwartet. Um sicherzustellen, dass Ihre Anwendung entsprechend empfängt die Ansprüche von Ihr STS, platzieren den folgenden Code in Ihre Seite default.aspx (Beachten Sie, das müssen Sie einen Verweis auf die Microsoft.IdentityModel WIF-SDK hinzufügen) zurück:

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

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

Beim nächsten der Anwendung ausführen werden Sie automatisch Ihr STS umgeleitet. Der STS in der Standardeinstellung können Sie Authentifizierung als “ Adam Carter ”. Klicken Sie einfach auf die Login-Schaltfläche (ein Kennwort müssen nicht).

Nachdem der STS authentifiziert den Benutzernamen, werden Sie an die Webanwendung zusammen mit ein SAML-Token für die Authentifizierung benötigt umgeleitet. Ihre Anwendung akzeptiert das Token und die default.aspx-Seite ausführen können. Da WIF-Module der Anmeldeinformationen abfangen, Sie den Prinzipal Identität als ein IClaimsIdentity umgewandelt können und, daher können Sie die Ansprüche extrahieren Typ und Wert aus der Identität-Objekt (siehe Abbildung 5 ).

die Ansprüche Typ und Wert eines Objekts der Identität

Abbildung 5 die Ansprüche Typ und Wert eines Objekts der Identität

Die Webanwendung anspruchsbewusste ist, ist es einfach, Ihre vorhandenen Identitätsmodell an anpassen. Einfach so, dass er auf die Produktions-STS zeigt die Konfigurationsdatei zu aktualisieren, und stellen Sie sicher, dass Sie Ihre Anwendung als eine relying Party konfiguriert haben. Darüber hinaus können Sie diese Informationen verwenden, um einen benutzerdefinierten Rollenanbieter erstellen, sodass in Rollen Ansprüche Typen übersetzt werden kann.

Dies ist eine äußerst leistungsstarke Technik und können Sie Ihre Anwendungen für fast jede Umgebung verschieben – auf Räumlichkeiten, der Wolke oder sogar ein Partner Datencenter – und dennoch anhand der Identitätsspeicher über ein öffentlich verfügbar gemachte STS zu überprüfen.

Anwendungskompatibilität

Windows Azure ist eine Anwendungsplattform, daher ist es wichtig zu verstehen, die Typen von Anwendungen für die Plattform Windows Azure geeignet ist. Während Sie die Möglichkeit zum Ausführen von systemeigenen Codes und Anwendungen mit voller Vertrauenswürdigkeit ausgeführt werden können, müssen Sie Ihre Anwendung vor der Bereitstellung in der Wolke, was bedeutet, dass, die zum Auswerten der Anwendung, um festzustellen, ob es eine gute ist entscheidend ist, passt verpacken.

Beispiel: Eines unserer Kunden am Windows Azure Migration Labs hatte, dass eine vorhandene Anwendung, die aus einer SQL Server 2005-Back-End, eine LINQ to SQL Datenzugriffsebene und front-End unter Verwendung von MVC Framework 1.0 und ASP.NET 3.5 SP1 unter IIS ausgeführt.

Die Anwendung wird in einer Webfarm mit Lastenausgleichsfunktion routing des Datenverkehrs sat. Die Anwendung selbst wurde statusfrei, so hat es egal, auf welchem Server der Benutzer letztendlich geleitet wurde.

Eine interessante Details zu dieser Anwendung war, dass die MVC-Anwendung mehr als 220 separate Websites verwaltet. Das Unternehmen verwendet eine Kombination von MVC routing und in der SQL Server-Datenbank gespeicherten Informationen um zu bestimmen, welcher Inhalt für jede Website geladen werden soll. Es wurden fünf Webserver hinter der Lastenausgleich für mehr als 4 Millionen Seite Besuche pro Monat für die Sammlung von Websites.

Die primäre Herausforderung des Unternehmens konfrontiert war die Zeitdauer, die es, dauerte um einen neuen Webserver für Ihre Umgebung bereitzustellen: Monate! Wenn das Unternehmen die Anwendung Windows Azure migrieren interpretiert, wurde seine primäre Motivation eine enorme Zeit gespeichert. Scaling-out würde ein Detail Konfiguration, sondern ein Albtraum Quartal lang geworden.

Des Migrationsprozesses zu Windows Azure ist ziemlich einfach. Hier ist der allgemeine Prozess verwendet:

  1. Stellen Sie sicher, dass die Anwendung in der Entwicklungsumgebung ausgeführt wird.
  2. Migrieren der SQL Server-Back-End SQL Azure mit dem Migrations-Assistenten in SQL Azure (Wir müssen die Informationen in diesem Artikel beschrieben).
  3. Aktualisieren der lokalen Anwendung mit Azure SQL-Datenbank arbeiten. Dies war es so einfach wie die Verbindungszeichenfolge ändern.
  4. Konvertieren Sie die Anwendung in ein Projekt von Rollen.
  5. Überprüfen Sie, dass die Anwendung ausgeführt wird, auf dem lokalen ­ mentar Stoff entwickeln.
  6. Die Web-Funktion zu verpacken und auf Windows Azure bereit.
  7. Überprüfen Sie, dass die Anwendung von Windows Azure ausgeführt wird.

Um das Webpaket-Rolle zu verkleinern, beendet wir ziehen die Bilder und CSS-Dateien aus den Inhaltsordner, und ordnen Sie in der Windows-Azure Blob-Speicher.

Da der Inhalt im Windows Azure Blob Speicher war, konnte GGP im Netzwerk in Windows Azure Übermittlung von Inhalten (CDN) nutzen. Dies erlaubt Caches Daten näher an den Endbenutzer zu sitzen.

Eine Übersicht über Entwicklung, Test und Bereitstellung für Windows Azure finden Sie im Artikel “ Windows Azure: Entwickeln und Bereitstellen von Windows-Anwendungen in Visual Studio 2010 Azure ” in der April 2010 Ausgabe des MSDN Magazine. Eine tiefere Betrachtung Speicher-Problemen finden Sie unter “ Wolke Speicher: Your Application-Engine mit Windows Azure Speicher fueling ” in der Januar 2010 ausstellen.

Datenbank-Kompatibilität

Als SQL-Azure zuerst, migriert wir eine Reihe von unseren SQL Server-Datenbanken auf ihn. Zusammen mit unserer Erfahrung mit Windows Azure Migration Labs haben einige wichtige Dinge, die Sie berücksichtigen sollten, bevor auf den Migrationsprozess embarking gelernt.

Erstens ist es wichtig, überprüfen Sie die Größe Ihrer Datenbank und wie er in der Datenbank Verkaufsrabatte verwendet SQL Azure passt. Gegenwärtig bietet SQL Azure Web Edition in 1 GB und 5 GB Größe und Business Edition, 10, 20, 30, 40 und 50 GB Größe. Sie müssen Ihre Datenbank überprüfen und sicherstellen, dass er nicht mehr als 50 GB ist. Wenn Ihre Datenbank größer als 50 GB ist, dann müssen Sie Ihre Datenbank zu untersuchen und anzuzeigen, wenn er in kleinere Datenbanken aufgeteilt werden kann (also Sharding Ihrer Datenbank) oder Verschieben von große Daten-Blobs.

SQL-Azure unterstützt nur die SQL-Authentifizierung, müssen Sie berücksichtigen, ob die Änderungen, die von der Anwendung verwendete Authentifizierungsschema erforderlich sind. SQL-Azure hat, eine Ressource beschränken, die Verbindungszeit beschränkt. Wir werden diese beiden Probleme etwas später in diesem Artikel erläutert.

Die Version des SQL Server-Datenbank ist ein weiteres Element, das Sie vor dem Migrieren Ihrer Datenbank mit SQL Azure berücksichtigt werden müssen. SQL-Azure baut auf SQL Server 2008 auf. Dies bedeutet, dass wenn Sie SQL Server 2000 oder SQL Server 2005-Datenbanken zu SQL Azure migrieren möchten, müssen Sie sicherstellen, dass Ihre Datenbanken mit SQL Server 2008 kompatibel sind. Frühere Versionen von SQL Server unterstützen beispielsweise die alten Stil TSQL-Verknüpfungen wie * = und = * in der WHERE-Klausel Operatoren. SQL Server 2008 unterstützt nur ANSI-Format (Verknüpfungen). Beispiele:

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

Wenn der Kompatibilitätsgrad der Datenbank auf SQL Server 2005 oder SQL Server 2008 festgelegt ist, die alten style-TSQL-Verknüpfungen (* = und = *) werden nicht unterstützt. Dies ist nur ein Beispiel der Kompatibilitätsprobleme feststellen, bei der Migration auf SQL Server 2008.

Es ist nicht Gegenstand dieses Artikels ausführlich besprechen Sie den Migrationsprozess zu SQL Server 2008. Wenn Sie die Empfehlungen für Datenbank-Migration interessiert sind, sehen Sie sich die “ Ultimate Handbuch zum Aktualisieren auf SQL Server 2008 ”. Es ist auch eine Vielzahl von Ressourcen aus dem MSDN SQL Server Developer Center verfügbar.

Sie werden feststellen, dass die beste Route zum Migrieren von einer SQL Server 2008-­ kompatible Datenbank auf SQL Azure ist. Dies bedeutet, dass, wenn Sie den SQL Server 2000 oder 2005-Datenbank auf SQL Azure migrieren möchten, durch eine Aktualisierung auf Räumlichkeiten auf SQL Server 2008 aufzurufen können vor dem Migrieren zu SQL Azure.

Microsoft bietet ein großartiges Tool, Updateratgeber für SQL Server , die analysiert Instanzen von SQL Server 2000 und SQL Server 2005 zum Identifizieren von Features und Konfigurationsänderungen, die Ihre Aktualisierung betreffen können. Es enthält Links zur Dokumentation, die identifizierten beschreibt, Problem und dessen Problemlösung. Nachdem Sie überprüft haben, dass Ihre Datenbank mit SQL Server 2008 kompatibel ist, können Sie die Migration der Datenbank zu SQL Azure Vorlauf.

Andererseits müssen Sie beachten, dass SQL Azure 100 Prozent der neuen SQL Server 2008-Funktionen nicht unterstützt. In SQL Azure ist Filestream beispielsweise derzeit nicht unterstützt. Es gibt verschiedene Möglichkeiten, zur SQL-Azure auf Kompatibilität zu überprüfen.

Der blunt Force-Ansatz besteht darin, einfach die Wilde Seite übertragen – der TSQL-Skripts für SQL Azure ausgeführt, und suchen Sie nach Fehlern. Korrigieren Sie alle Fehler, die auftreten, und starten Sie erneut. Wiederholen Sie bis erfolgreich. Verwenden Sie vielleicht nicht die beste Zeit zu sparen, aber das ist für Sie entscheiden.

SQL Server Management Studio Skript-Generator-Assistenten können Sie TSQL-Skript generieren. Beachten Sie, dass wenn Sie Assistenten durchgehen, müssen Sie die Option Erweiterte Skripterstellung, und wählen Sie für die Eigenschaft “ Skript für die Modul-Datenbanktyp ” SQL Azure-Datenbank. Wenn Sie diesen Schritt verpassen, generiert SQL Server TSQL mit SQL Azure nicht kompatibel ist.

Eine andere Möglichkeit besteht darin, SQL Azure Migrations-Assistent (SQLAzureMW) von sqlazuremw.codeplex.com-downloaden. SQLAzureMW führen Sie am besten Kompatibilitätsprobleme zu identifizieren, wo möglich zu beheben und benachrichtigen Sie alle Probleme, denen Sie kennt.

Zum besseren Verständnis von Richtlinien und Einschränkungen beim SQL Azure finden Sie unter msdn.microsoft.com/library/ee336245-.

Sobald Sie Ihr Datenbankschema (Tabellen, Sichten, gespeicherte Prozeduren usw.) in SQL Azure haben, müssen Sie Ihre Daten uploaden. Hier sind die häufigsten Möglichkeiten:

  • SQL Server Integration Services
  • Bulk Copy Program (BCP)
  • SqlBulkCopy für die Datenmigration
  • SQL Azure Migrations-Assistent (mit BCP im Hintergrund)

Verwenden von SQLAzureMW

Georg erstellt SQLAzureMW unserer Kunden zu helfen, die den Migrationsprozess für SQL-Datenbank. Abbildung 6 zeigt SQLAzureMW in Aktion.

verwenden SQLAzureMW

Abbildung 6 verwenden SQLAzureMW

SQLAzureMW analysiert SQL Server-Datenbanken auf Kompatibilität mit SQL-Azure. Außerdem können Sie Datenbankobjekte und Daten aus der Quelldatenbank in SQL Azure zu migrieren.

Mithilfe von SQLAzureMW erhalten Datenbankentwickler eine Vorstellung davon, wie viel Arbeit bei der Migration Ihrer Datenbanken zu SQL Azure benötigt wird. Wenn SQLAzureMW viel Kompatibilitätsprobleme mit SQL Server 2000 oder 2005-Datenbank gekennzeichnet wird, empfehlen wir die Datenbank zuerst auf SQL Server 2008 aktualisieren anschließend Migrieren zu SQL Azure. Der Prozess für die Migration zu SQL Server 2008 gut dokumentiert ist, und es gibt zahlreiche Anleitungen und Erfahrungen, die Sie nutzen können. Weitere Informationen über die Migration zu SQL Server 2008 finden Sie in der SQL Server 2008 aktualisieren Technical Reference Guide ( microsoft.com/¬downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7 ). Aus MSDN SQL Server Developer Center (msdn.microsoft.com/sqlserver ) ist auch eine Vielzahl von Ressourcen verfügbar.

Beachten Sie, wenn Sie SQL Server 2008 R2 haben, dies Beenden nicht aus über den Aktualisierungsvorgang. SQL Server 2008 R2 Express Edition herunterladen, und durch den Aktualisierungsvorgang Side-by-Side wechseln.

Andere guten Quellen für Datenbankentwickler die Unterschiede zwischen SQL Server und SQL-Azure kennen – was kompatibel ist und was nicht, ist und allgemeinen Anleitungen und Einschränkungen – der Transact-SQL-Referenz (SQL Azure Database) msdn.microsoft.com/library/ee336281 -und allgemeine Richtlinien und Einschränkungen (SQL Azure Database) msdn.microsoft.com/library/ee336245-enthalten.

Unabhängig davon, ob Sie sich entscheiden, zum Aktualisieren auf SQL Server 2008 zunächst nur migrieren oder direkt von SQL Server 2000 oder 2005, dennoch müssen Sie eine Methode zum Analysieren Ihrer Datenbank für Kompatibilitätsprobleme und Azure SQL-kompatible SQL generieren. Dies ist, auf dem SQL ­ AzureMW hilft wirklich aus. Nicht nur kann SQLAzureMW die Datenbank analysieren Sie wird auch SQL Profiler-Ablaufverfolgungsdateien analysieren, wenn Sie dynamisches SQL auf Kompatibilität überprüfen möchten.

Während der Migration Übungseinheiten konnten wir alle SQL-Datenbanken (SQL Server 2000 und SQL Server 2005) Migrieren zu SQL Azure mit geringer oder ganz keine Änderungen. Die zwei verbleibenden Probleme, die behoben werden konnten Authentifizierungs- und SQL Azure Ressource Drosselung.

Das Authentifizierungsproblem wurde aufgrund der Tatsache, dass SQL Azure nur SQL-Authentifizierung nicht die Windows-Authentifizierung unterstützt. Im Fall von einem Kunden mussten Sie Ihre Verbindungszeichenfolge Benutzernamen und Kennwort, anstatt eine vertrauenswürdige Verbindung entsprechend ändern. Beispielsweise begann wir mit etwa wie folgt:

<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.

Beschränken von Ressourcen

Adressierung SQL Azure Ressource Drosselung benötigte etwas mehr Arbeit für einige Anwendungen. Für Anwendungen, die optimale Methoden eine Verbindung mit einer SQL-Datenbank, die nur bei Bedarf und an der letzten möglich Sekunden alle Transaktionen in eine schnelle und effiziente Weise und dem Wechseln der Verbindung so bald wie möglich zu tun hatten, war SQL Azure Drosselung ein Problem nicht. Andererseits, musste die Anwendungen, die eine Verbindung zu einer SQL-Datenbank beim Start geholt und aufrechterhalten, die auf die Verbindung, für die Lebensdauer des Programms oder für längere Zeiträume, zum Implementieren der Wiederholungslogik geändert oder umgestaltet werden einige optimale Methoden und nicht die Ressourcen enthalten.

Ein verbreitetes Missverständnis, in vielen wurden, war, dass SQL Azure nur die Verbindung trennen würde, wenn die Verbindung fünf Minuten lang im Leerlauf sat. SQL-Azure berücksichtigt verschiedene Faktoren bestimmen, wann eine Anwendung, einschließlich der übermäßigen Ressourcenauslastung, lang andauernde Abfragen, einzelne Transaktionen mit langer und Verbindungen im Leerlauf trennen.

Azure SQL-Team wird weiterhin die Ressource Drosselung Parameter optimieren, jedoch der Effekt ist, dass die Anwendung haben Wiederholungslogik hinein erstellt werden, da SQL Azure eine Trennung für Anwendungen erzwungen wird, die die Ressource Auslastung Parameter überschreitet.

Im Allgemeinen bietet SQL Azure bestimmten Fehlermeldungen, wenn er die Verbindung je drosselt. Eine vollständige Liste der Fehler finden Sie unter msdn.microsoft.com/library/ff394106-.

Wenn Sie eine große Anzahl von kleinen Transaktionen haben, sollten Sie das folgende Muster verwenden:

  1. Verwenden Sie den Verbindungspool. Der Verbindungs-Pool-Manager werden die Verbindungen aufrechterhalten für Sie und wird es wenig, keine Auswirkungen auf die Leistung der Anwendung zu öffnen und Schließen von Verbindungen.
  2. Behalten Sie die Verbindung so klein wie möglich Dauer. Öffnen Sie die Verbindung, führen Sie die Transaktion und schließen Sie die Verbindung.
  3. Das Try-Catch-Muster, um Datenbank-Aktivität verwendet.
  4. Fangen Sie die Ausnahmen ab, und wiederholen Sie die Transaktion, bei Bedarf.
  5. Protokolliert den Fehler und Ausnahmen zur Problemlösung erleichtern. Achten Sie darauf, erhalten einen UTC-Zeitstempel (oder Uhrzeit und Zeitzone bieten), Kontext-ID der Verbindung, und die Anzahl der Ausnahme.

SQLAzureMW ist ein gutes Beispiel für eine Anwendung, die für den Umgang mit den Ressourcen in SQL Azure Drosselung hatte. Wie bereits erwähnt, kann SQLAzureMW eine SQL-Datenbank auf dem Gelände SQL Azure migrieren. Wenn Sie eine Datenbank migrieren, die mehr als 1.000 Tabellen verfügt, 1.500 gespeicherte Prozeduren und Millionen von Zeilen mit Daten, kann einfach mehr als fünf Stunden, abhängig von der tatsächlichen zu übertragende Datenmenge erlangen.

In diesem Szenario müssten SQLAzureMW weit mehr 2.500 TSQL-Anweisungen, die für SQL Azure sowie die Daten über BCP Migration ausgeführt. Ausführung mehr als 2.500 TSQL würde Anweisungen in einer einzigen Anweisung (oder Transaktion) mehr als wahrscheinlich SQL Azure Ressource Drosselung Parameter, daher führt eine beendete Verbindung überschritten.

Als Lösung SQLAzureMW funktionieren Sie Transaktionen in kleinere bunches und ausgeführt wird, bis SQL Azure die Verbindung beendet wird. Wenn SQL ­ AzureMW der Verbindungsfehler auftritt, bei eine neue Verbindung mit SQL-Azure wiederhergestellt und wird die Verarbeitung nach dem letzten erfolgreichen Befehl auswählt. Auf die gleiche Weise Wenn BCP verwenden, um die Daten in SQL Azure hochladen, zerlegt SQLAzureMW der Daten in kleinere Abschnitte, und verwendet wiederholen Logik herausfinden, den letzten erfolgreichen Datensatz geuploadet werden, bevor die Verbindung beendet wurde. Und dann neu starten, das Daten uploaden mit der nächsten Gruppe von Datensätzen BCP hat.

Azure SQL-Produktteam hat seit der ersten Freigabe von SQL Azure umfangreiche Verbesserungen an SQL Azure vorgenommen. Z. B. nicht mehr die Drosselung Probleme, die während der Migration Übungseinheiten in wurden viele haben sofort – obwohl noch empfohlen, dass Ihre Anwendungen Wiederholungslogik, verwenden behandeln Verbindungen ordnungsgemäß beendet.

Nächste Schritte

Wie Sie sehen können zwar eine Reihe von Problemen, die bei der Planung für eine reibungslose Migration von Windows Azure berücksichtigt werden müssen, ist in der Praxis wir gefunden haben, dass der Umfang der Arbeit, zum Migrieren erforderlich eine Anwendung aus auf Räumlichkeiten, Windows Azure oft minimal. Natürlich ist dies für jede Anwendung unterschiedlich sein soll.

Sie müssen dazu Ihre eigene Analyse, um festzustellen, ob es sinnvoll ist, Migrieren zu Windows Azure und Adresse müssen Sie Probleme mit. Während Windows Azure Migrations-Labs gefunden unserer Kunden diese Migration Ihrer Anwendungen mit geringer oder ganz keine Änderungen konnten und dass er die Plattform Windows Azure mit sehr wenig Lernkurve und Investitionen nutzen konnte. Hier die Informationen sollten zusammen mit Tools wie SQLAzureMW, ein ebenso erfolgreiches Ergebnis erzielen Ihnen.

George Huey ist Hauptarchitekt im Entwickler- und Plattformteam bei Microsoft. Huey arbeitet mit Unternehmen, damit Sie verstehen, neue und neuer Technologien und wie diese Technologien zur Lösung Ihrer Geschäftsprobleme angewendet werden können. Er ist außerdem Autor von SQL Azure Migrations-Assistent (SQLAzureMW).

Wade Wegner arbeitet für Microsoft und ist die technische Evangelist für die Windows Azure-Plattform. Sie können ihm auf Twitter unter twitter.com/wadewegner.

*Dank an den folgenden technischen Experten für die Überprüfung der in diesem Artikel:*Jim Nakashimi