Abfragen und Übertragen von Daten zwischen Azure SQL-Datenbanken

Inhalt

In der Welt von DevOps, Es gibt einige Situationen, in denen Sie eine Möglichkeit haben müssen, Daten von anderen zu übertragen Azure SQL-Datenbanken.

Zur PrüfungAls Beispiel, Angenommen, Sie haben einen Kunden, der versehentlich eine große Anzahl von Datensätzen aus einer Tabelle in der Produktionsdatenbank gelöscht hat. Mit der Hilfe von Backups zu einem bestimmten Zeitpunkt, wir könnten die Datenbank zu einem früheren Zeitpunkt wiederherstellen, zu dem diese Datensätze noch vorhanden sind. Dieses Verfahren erstellt eine neue Datenbank mit dem wiederhergestellten Inhalt und dann können wir Namen zwischen diesen Datenbanken austauschen, indem wir sie umbenennen. Trotz dieses, Es gibt eine Einschränkung, diese Aktion auszuführen. Die wiederhergestellte Datenbank verliert den gesamten Point-in-Time-Verlauf der ursprünglichen Datenbank.

Un mejor enfoque sería restaurar los registros eliminados a la Datenbank Original. Trotz dieses, Dies ist nicht so einfach wie bei normalen SQL Server-Datenbanken. Beide Datenbanken können sich nicht sehen, selbst wenn sie sich auf demselben Server befinden und, als Beispiel, Kann ich nicht benutzen Verknüpfte Server in Azure SQL, um sie zu verbinden.

Möglicherweise haben Sie die Möglichkeit, diese Datensätze in SQL-Skripte zu exportieren, aber selbst dann, Es gibt einige Fälle, in denen die wiederherzustellende Datenmenge sehr groß ist, Das Erstellen dieser Skripte wäre also nicht der beste Weg, dieses Problem zu beheben.

Das ist wo Elastische Abfragen Zur Rettung kommen:


Mit dieser Technologie, Wir könnten die Daten, die in unsere Datenbanken ein- und ausgehen, leicht verwalten.

Bedarf

Lernprogramm

Stellen wir uns vor, der Client kürzt alle Datensätze für das Jahr 2016 des Liebling Tabelle in unserer Rechnungsdatenbank.

Der erste Schritt sollte sein, eine Verbindung zum Azure-Portal und führen Sie eine Wiederherstellung zu einem bestimmten Zeitpunkt durch Rechnungen in der Cloud Datenbank von einem Datum und einer Uhrzeit, zu der diese Datensätze noch vorhanden sind. Wir werden dies in einer Datenbank namens . wiederherstellen Rechnungen2016.

Dies wären die Schritte, die wir unternehmen müssen, um diese Aufzeichnungen wiederherzustellen:

Erstellen Sie einen Datenbankhauptschlüssel und Anmeldeinformationen für den Bereich

Das Hauptschlüssel wird als eins arbeiten „Gewölbe“ um die Zugangsdaten in der Datenbank zu speichern und die bereichsbezogene Anmeldeinformationen sind die Datenbankanmeldeinformationen, die verwendet werden, um eine Verbindung zu Ihrer wiederhergestellten Datenbank herzustellen.

Syntax:

CREAR ENCRIPTACIÓN DE LLAVE MAESTRA POR CONTRASEÑA = ‚Passwort‘;

DATENBANK-ANWEISUNGEN ERSTELLEN MIT IDENTITÄT = ‚‚, GEHEIM =‘

Beispiel:

CREAR ENCRIPTACIÓN DE LLAVE MAESTRA POR CONTRASEÑA =p @ ssw0rd‘;

CREAR CREDENCIAL ALCANCE DE LA BASE DE DATOS dbCredential CON IDENTIDAD =usuario01‘, GEHEIM = ‚p @ ssw0rd‘;

Erstellen Sie die Datenquelle extern

Das externe Datenquelle es donde establecemos los Parameter junto con la credencial creada previamente para permitir la conexión entre bases de datos.

Syntax:

EXTERNE DATENQUELLE ERSTELLEN MIT

(

TYP = RDBMS,

STANDORT = ‚‚,

DATABASE_NAME = ‚‚,

ANMELDEDATEN =

)

Beispiel:

EXTERNE DATENQUELLE ERSTELLEN wiederhergestellte Datenbank MIT

(

TYP = RDBMS,

STANDORT = ‚cloudinvoices.database.windows.net‘,

DATABASE_NAME = ‚Rechnungen2016‘,

CREDENTIAL = dbCredential

);

Erstellen Sie die externen Tabellen

Darauf solltest du achten externe Tabellen sind Erweiterungen der externen Datenbank. Betrachten Sie sie als verknüpfte Tabellen. Das bedeutet, dass wir in unserer Produktionsdatenbank nicht zwei Tabellen mit demselben Namen haben können, auch wenn einer eine normale Tabelle und der andere eine externe Tabelle ist.

In unserem Beispiel, wenn wir uns verbinden wollen Liebling Tabelle in der wiederhergestellten Datenbank, wir würden brauchen benennen Sie es um erste (als Beispiel, Schätzungen 2016 ) damit es nicht mit dem bestehenden kollidiert.

Syntax:

sp_renamenombre_objeto‘, ‚nuevo_nombre‘;

Beispiel: in der wiederhergestellten Datenbank:

sp_rename ‚Schätzungen‘, ‚Estimaciones2016‘;

Jetzt können wir unsere äußere Tabelle erstellen:

Syntax:

EXTERNEN TISCH ERSTELLEN [Tabellenname] (

{} [ ,…n ]

)

{MIT ()}

)

Beispiel:

EXTERNEN TISCH ERSTELLEN [Schätzungen2016] (

[EstimateId] eindeutiger Bezeichner NICHT NULL,

[Kunden ID] int NO NULO,

[Jahr] int NO NULO,

[Menge] dezimal NICHT NULL

)

MIT (

SOURCE_DATA = Datenbank wiederhergestellt

);

Nachdem Sie die erforderlichen Schritte ausgeführt haben, um die Konnektivität zwischen beiden Datenbanken herzustellen, Wir können die eigentliche Arbeit erledigen, die erforderlich ist, um die fehlenden Datensätze wiederherzustellen. Als Beispiel:

SCHÄTZUNGEN EINFÜGEN

AUSWÄHLEN * VON SCHÄTZUNGEN 2016 WO JAHR = 2016;

Am Ende dieser Aufgabe müssen wir eine Reinigung durchführen:

DROP EXTERNE TABLE Schätzungen2016;

DROP EXTERNE DATA SOURCE restoreDatenbank;

DATENBANK-BESCHEINIGTE ANMELDEDATEN DROP dbCredential;

DROP-MASTER-SCHLÜSSEL;

Das ist! Ich hoffe, Sie finden diese neue Technologie für diese Arten von Szenarien nützlich.. Bitte beachte, dass dies dir in vielen weiteren Fällen helfen könnte: externe Datenbanken abfragen, datenbankübergreifende Abfragen für horizontale Partitionen ( Zersplitterung ), Abfragen mehrerer Datenbanken zum Generieren von Berichten in PowerBI, etc.

Weitere Informationen zu elastischen Abfragen:

Wir sehen uns im nächsten Beitrag. Niemals aufhören zu lernen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.