Die Verbindung von DatabaseSpy mit einer SQL Azure-Datenbank in der Cloud herstellen
Tipps und Techniken zur einfachen Integration der cloudbasierten SQL Azure-Datenbank von Microsoft in Produktionsumgebungen standen im Mittelpunkt der Tech-Ed-Konferenz im Juni in New Orleans. SQL Azure basiert auf Microsoft SQL Server-Technologien und ist darauf ausgelegt, einen hochverfügbaren und skalierbaren Datenbankdienst bereitzustellen, der von Microsoft in der Cloud gehostet wird. Entwickler, die Datenbanken in SQL Azure bereitstellen, müssen keine relationale Datenbanksoftware installieren, konfigurieren, aktualisieren oder verwalten, sondern lediglich ihre eigene Datenbankstruktur und Inhalte. Automatische Redundanz und Fehlertoleranz sind integriert, und es ist keine manuelle Administration erforderlich.
Sie können eine manuelle Verbindungszeichenfolge erstellen und die SQL Server-Syntax sowie Datentypen verwenden, um DatabaseSpy und andere Altova-Tools mit SQL Azure-Datenbanken zu verbinden, um typische Aufgaben der Datenbankentwicklung und -wartung durchzuführen. Dieser Blogbeitrag zeigt, wie man von DatabaseSpy aus eine Verbindung zu einer SQL Azure-Datenbank herstellt, und demonstriert verschiedene typische Operationen, die Sie möglicherweise durchführen möchten, wenn Sie eine bestehende Datenbank in die Cloud migrieren. Um diese Schritte selbst durchzuführen, benötigen Sie ein SQL Azure-Konto oder einen Benutzernamen und ein Passwort, die von einem Inhaber eines SQL Azure-Kontos erstellt wurden. Für weitere Informationen zur Einrichtung eines SQL Azure-Kontos besuchen Sie bitte die Microsoft-Website Startseite von SQL Azure. Sie müssen außerdem den SQL Server Native Client 10.0 (oder eine neuere Version) installieren. SQL Azure verhält sich nicht exakt wie eine lokale SQL Server-Datenbank, daher können wir den Altova SQL Server-Verbindungsassistenten nicht verwenden. Stattdessen werden wir eine ODBC-Verbindung verwenden.
![]()
Wir werden hier nicht alle Details des Prozesses zur Erstellung einer neuen Verbindungszeichenfolge erläutern. Sie können eine bestehende Verbindungszeichenfolge in das oben gezeigte Dialogfenster einfügen.
Nachdem Sie sich zum ersten Mal mit SQL Azure verbunden haben, ermöglicht eine DatabaseSpy-Projektdatei, alle Ihre Verbindungseinstellungen zusammen mit häufig verwendeten SQL-Skripten, Datenbankdesign-Dateien und Datenbankvergleichen in einer praktischen Sammlung zu speichern, die Sie später wiederherstellen können. Der Screenshot unten zeigt ein neues DatabaseSpy-Projekt, das gleichzeitig zwei Datenbanken verbindet: Sakila in MySQL und Sakila in der Cloud in SQL Azure.
![]()
Microsoft bietet eine Reihe von Konvertierungstools an, die Benutzern dabei helfen, bestehende Datenbanken auf die SQL Azure-Plattform zu migrieren. Wir haben den Microsoft SQL Server Migration Assistant for MySQL verwendet, um unsere lokale MySQL-Beispieldatenbank Sakila in unser SQL Azure-Konto zu konvertieren. DatabaseSpy ermöglicht es Benutzern, mehrere Verbindungen gleichzeitig zu öffnen, auch zu Datenbanken unterschiedlicher Typen. Die Datenbankvergleichsfunktion von DatabaseSpy macht es zu einem idealen Werkzeug, um die Ergebnisse der Sakila-Konvertierung zu überprüfen. Zunächst öffnen wir einen Datenbank-Schema-Vergleich und wählen einige Tabellen aus der MySQL-Datenbank für die linke Seite des Vergleichs aus.
![]()
Nachdem wir die entsprechenden Tabellen aus der SQL Azure-Version ausgewählt haben, werden diese in einem Fenster zur Datenbank-Schema-Vergleichsanzeige geöffnet.
![]()
Wenn wir auf den grünen "Vergleichen"-Button in der oberen linken Ecke des Fensters klicken, vergleicht DatabaseSpy die Datenbankstrukturen, hebt Unterschiede hervor und erstellt eine Zusammenfassung, die im Nachrichtenfenster angezeigt wird.
![]()
Einige Unterschiede stellen Datentypdefinitionen dar, die sich zwischen verschiedenen Datenbanken unterscheiden. Beispielsweise hat der MySQL-Datentyp "unsigned small int" kein exaktes Äquivalent in SQL Server. Daher hat das Konvertierungstool den Datentyp "int" für die Spalte "film_id" in der Tabelle "film" verwendet. Außerdem wurde der Datentyp "year", der in MySQL für die Spalte "release_year" verwendet wird, in SQL Azure in "smallint" umgewandelt. Ich vermute, dass dies die SQL Azure-Version der Datenbank zukunftssicherer macht, da sie Filme bis zum Jahr 32.767 verarbeiten kann, im Gegensatz zu 2155, was der maximale Wert des Datentyps "year" in MySQL ist! Wir können die Daten in den beiden Datenbanken vergleichen, indem wir im Kontextmenü einen Eintrag auswählen, wodurch die ausgewählten Tabellen in einem neuen Fenster zur Datenvergleichsanzeige geöffnet werden.
![]()
Der Datenvergleich zeigt, dass die Inhalte der Tabellen nicht identisch sind.
![]()
Wenn wir das Ergebnisfenster öffnen, stellen wir fest, dass die Spalte mit den Beschreibungen nicht erfolgreich übertragen wurde.
![]()
Wenn wir uns das Fenster "Datenbankschema-Vergleich" erneut ansehen, können wir feststellen, dass die Länge der Spalte "Beschreibung" auf Null gesetzt wurde. Dies erklärt die roten Pfeile, die im Ergebnisfenster von der Spalte "Beschreibung" in MySQL zur Spalte "Beschreibung" in SQL Azure zeigen. Wir können keinen Text in eine Spalte mit einer festgelegten Länge von Null einfügen. Öffnen wir stattdessen die SQL Azure-Version der Tabelle "Film" in einem neuen Designfenster.
![]()
Wir können die Größe des Beschreibungsfelds im Eigenschaftenfenster erhöhen und anschließend das resultierende Änderungsskript ausführen.
![]()
![]()
Als Nächstes, wenn wir den Datenvergleich erneut durchführen, stellen wir fest, dass die Daten zwar konvertiert wurden, aber die zuvor definierte Feldlänge von Null dazu geführt hat, dass die Daten unsichtbar sind.
![]()
Probleme mit der Antwortzeit Sie können DatabaseSpy verwenden, um Probleme mit der Antwortzeit zwischen der Cloud-Datenbank und der lokalen Kopie zu untersuchen. Wie aus dem oben gezeigten Datenvergleich hervorgeht, enthalten die Tabellen mit den Filmdaten in den beiden Datenbanken jeweils 1.000 Zeilen mit identischen Daten. Wir können wiederholt SELECT-Anweisungen ausführen, um die Daten sowohl aus SQL Azure als auch aus der lokalen MySQL-Datenbank abzurufen und die Ergebnisse zu messen. Das Nachrichtenfenster des SQL-Editors von DatabaseSpy zeigt die Ausführungszeit an.
![]()
Die Ausführung der oben genannten SELECT-Anweisung fünfmal hintereinander in der SQL Azure-Version der Datenbank "sakila" ergab Ergebnisse zwischen 60,632 Sekunden und 63,851 Sekunden. Die Ausführung derselben SELECT-Anweisung für die gleiche Tabelle mit Filminformationen in der lokalen MySQL-Datenbank lieferte folgendes Ergebnis:
![]()
Die wiederholte Durchführung des Tests für die lokale Version ergab ähnliche Ergebnisse. Für Entwickler bedeutet dies, dass Ihre datenbankgesteuerte Anwendung wahrscheinlich Anpassungen erfordern wird, um die Latenz zu berücksichtigen, wenn Sie Ihre Daten in die Cloud verlagern. Testen Sie Ihre eigene Verbindung zu SQL Azure mit einer kostenlosen Testversion von Altova DatabaseSpy.