ALTER FEDERATION (Azure SQL-Datenbank)

Ändert die Verteilung der Daten innerhalb eines Verbunds in Azure SQL-Datenbank.

Wichtig

In der aktuellen Implementierung werden Verbunde bei der Web- und Business-Dienstebene nicht mehr unterstützt. Sie könnten beispielsweise benutzerdefinierte Shardinglösungen einsetzen, um die Skalierbarkeit, Flexibilität und Leistung zu maximieren.Weitere Informationen zu benutzerdefinierten Shardinglösungen finden Sie unter Horizontales Skalieren bei Azure SQL-Datenbanken.

Syntax Conventions (SQL Database)

Gilt für: Azure SQL-Datenbank.

Syntax

ALTER FEDERATION federation_name
{
    SPLIT AT (distribution_name = boundary_value)
    | DROP AT ([LOW | HIGH] distribution_name = boundary_value)
    | SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)
}[;]

Argumente

  • federation_name
    Der Name des Verbunds, der geändert werden soll. Der Name muss innerhalb von SQL-Datenbank eindeutig sein, den Regeln für Bezeichner entsprechen und vom Typ sysname sein.

  • distribution_name
    Der Name des Verbundschlüssels. Der Name ist ein Bezeichner, mit dem auf den Verbundschlüssel verwiesen wird. Mit verbundbezogenen Anweisungen wie CREATE TABLE … FEDERATED ON(...) oder USE FEDERATION wird auf den Namen verwiesen. Distribution_name muss den Regeln für Bezeichner entsprechen und ist vom Typ sysname.

    Boundary_value ist der Divisionspunkt für den Neupartitionierungsvorgang. Der Begrenzungswert sollte ein gültiger Wert für den Datentyp sein, der vom Verbundschlüssel des Verbunds angegeben wird. Im Fall eines SPLIT wird der Wert zum range_low und range_high für die neuen Verbundmitglieder, die als Teil des Vorgangs erstellt werden.

  • SPLIT AT (distribution_name = boundary_value)
    Verschiebt die Daten des Verbundmitglieds, das derzeit den Begrenzungswert enthält, in zwei neue Verbundmitglieder. Alle Zeilen in Verbundtabellen mit Verbundschlüsselinstanzen, die kleiner als boundary_value sind, werden in eines der neuen Zielverbundmitglieder kopiert. Instanzen, die größer oder gleich boundary_value sind, werden in das andere neue Verbundmitglied kopiert. Alle anderen für Objekte definierten Objekte wie Verweistabellen, gespeicherte Prozeduren, Funktionen, Benutzer und Berechtigungen werden für die neuen Verbundmitglieder geklont.

  • DROP AT ([LOW | HIGH] distribution_name = boundary_value)
    Löscht ein Verbundmitglied und erweitert den Bereich eines angrenzenden Verbundmitglieds, um die Lücke zu schließen, die durch den Löschvorgang entstanden ist. Dieser Vorgang wirkt sich auf das gelöschte Verbundmitglied und das angrenzende Verbundmitglied aus, das erweitert wird, um die Lücke zu schließen. Durch LOW oder HIGH wird das Verbundmitglied bestimmt, das am angegebenen boundary_value des Verbunds gelöscht wird. Der Begrenzungswert muss einem vorhandenen Partitionswert (range-high oder range-low von Verbundmitgliedern) im Verbund entsprechen.

    Während des DROP-Vorgangs erfolgt kein Schemavergleich zwischen den betroffenen Verbundmitgliedern. DROP erfordert keine physische Datenkopie. Die im Element enthaltenen Daten werden gelöscht. DROP AT setzt zudem Verbindungen zurück und ändert den DB_NAME() der betroffenen Verbundmitglieder.

    DROP AT ist ein asynchroner Vorgang.

  • SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)
    Entfernt sämtliche Verbundmetadaten und Einschränkungen aus der Verbundmitgliederdatenbank. Nach der Durchführung ist das Verbundmitglied eine eigenständige Datenbank. Während eines SWITCH OUT werden keine Daten gelöscht oder verschoben. LOW oder HIGH bestimmt das Verbundmitglied, das auf der entsprechenden Seite des vorhandenen Verbunds boundary_value ausgelagert wird. Der Begrenzungswert muss einem vorhandenen Partitionswert (range-high oder range-low) im vorhandenen Verbund entsprechen. Anders als bei DROP AT, erweitert SWITCH OUT nicht einen angrenzenden Verbundmitgliederbereich, um die Lücke zu füllen, die durch den Vorgang entstanden ist. Wenn Sie planen, die Verbundanwendung nach Azure SQL-Datenbank Elastic Scale zu migrieren, erstellen Sie zuerst einen Share Map, bevor Sie diesen Befehl ausführen.

    Warnung

    Der SWITCH OUT-Befehl ist dauerhaft.Wenn er einmal ausgeführt wurde, können Sie nicht mehr mit der USING FEDERATION-Anweisung auf das Mitglied zugreifen und die Datenbank auch nicht mehr zum ursprünglichen Verbund hinzufügen.Die Ausführung dieses Befehls hat keine Auswirkungen auf die anderen Verbundmitglieder.

Hinweise

Mehrere DROP- oder SPLIT-Vorgänge können gleichzeitig ausgeführt werden, solange sich keine der Quell- oder Zielverbundmitglieder überschneiden.

Eigenschaften des SPLIT-Vorgangs

  • Die ALTER FEDERATION … SPLIT-Anweisung muss die einzige Anweisung im Batch sein und darf nicht Teil einer äußeren Transaktion sein.

  • Die ALTER FEDERATION … SPLIT-Anweisung kann nur ausgeführt werden, während eine Verbindung mit der Verbundstammdatenbank besteht.

  • Es kann jeweils nur ein DROP- oder SPLIT-Befehl für die betroffenen Verbundmitglieder aktiv sein. Es können viele DROP- und SPLIT-Befehle gleichzeitig aktiv sein, solange sie für verschiedene Mitglieder eines Verbunds ausgeführt werden.

  • Alle Zielverbundmitglieder (die während eines SPLIT-Vorgangs erstellten Verbundmitglieder) erben die MAXSIZE-Eigenschaft und die EDITION-Eigenschaft des Quellverbundmitglieds.

  • Der SPLIT-Vorgang ist ein atomarer Vorgang. Alle Zielmitglieder müssen erfolgreich erstellt und synchronisiert werden, damit SPLIT abgeschlossen wird.

  • Der SPLIT-Vorgang ist ein asynchroner Vorgang.

    Während der Ausführung von SPLIT

    • Alle regulären (nicht verbundenen) Objekte, Schemas und Systemmetadaten werden aus dem Quellverbundmitglied kopiert, für das der SPLIT-Vorgang in das Zielverbundmitglied ausgeführt wird. Diese Liste enthält die Benutzer, Rollen, Objektberechtigungen, gespeicherten Prozeduren, Sichten, Verbund- oder Verweistabellen, Indizes usw. Die einzige Ausnahme sind Verteilungsstatistiken, die für die Neuberechnung gekennzeichnet sind. Mit NORECOMPUTE markierte Statistiken werden beibehalten und nach Neupartitionierungsvorgängen nicht erneut für Verbundtabellen berechnet.

    • Alle Verbundtabellenschemas werden aus dem Quellverbundmitglied kopiert, für das der SPLIT-Vorgang in das Zielverbundmitglied ausgeführt wird.

    • Benutzerdaten in den Verbundtabellen werden basierend auf dem Begrenzungswert in die Zielverbundmitglieder verschoben.

    • Die Benutzerdaten in allen Verweistabellen werden geklont und dann in das Zielverbundmitglied verschoben.

    Nach Abschluss von SPLIT:

    • Das neue Verbundmitglied enthält alle aktuellen Daten in den entsprechenden Zielverbundmitgliedern.

    • Die Sicht sys.federation_members wird aktualisiert, sodass sie die neuen Zielverbundmitglieder mit den zugehörigen Bereichswerten einschließt. Das Quellverbundmitglied wird gelöscht und ist nicht mehr in sys.databases oder in sys.federation_members enthalten.

    • Alle vorhandenen Verbindungen mit den Quellverbundmitgliedern werden getrennt. Bei einer Wiederholung werden die neuen Verbindungen zu den neuen Verbundmitgliedern weitergeleitet.

Eigenschaften des DROP-Vorgangs

  • Die ALTER FEDERATION … DROP-Anweisung muss die einzige Anweisung im Batch sein und darf nicht Teil einer äußeren Transaktion sein.

  • Die ALTER FEDERATION … DROP-Anweisung kann nur ausgeführt werden, während eine Verbindung mit der Verbundstammdatenbank besteht.

  • Der angegebene Begrenzungswert muss einer vorhandenen Bereichsbegrenzung (range_high, range_low) im Verbund entsprechen.

  • Der DROP-Vorgang ist ein asynchroner Vorgang.

    Wenn der DROP-Vorgang gestartet wird, bestimmen die LOW- oder die HIGH-Option sowie der angegebene Begrenzungswert das Verbundmitglied, das gelöscht wird. Ein angrenzendes Verbundmitglied wird erweitert, um den Bereich des gelöschten Verbundmitglieds einzuschließen.

    Während der Ausführung von DROP erfolgt keine Datenübertragung, und es wird kein Schemavergleich durchgeführt.

    Nach Abschluss von DROP:

    • Das verbleibende Verbundmitglied wird umbenannt.

    • Die Tabelle sys.federation_members umfasst nicht mehr das gelöschte Verbundmitglied und enthält den aktualisierten Bereich für das verbleibende Verbundmitglied.

    • Alle vorhandenen Verbindungen mit den Verbundmitgliedern werden getrennt. Das gelöschte Verbundmitglied akzeptiert keine Verbindungen mehr. Das verbleibende Verbundmitglied trennt alle vorhandenen Verbindungen.

Eigenschaften des SWITCH OUT-Vorgangs

  • Die SWITCH OUT-Anweisung muss die einzige Anweisung im Batch sein und darf nicht Teil einer äußeren Transaktion sein.

  • Der SWITCH OUT-Vorgang kann nur ausgeführt werden, während eine Verbindung mit der Verbundstammdatenbank besteht.

  • Der SWITCH OUT-Vorgang ist ein asynchroner Vorgang.

  • Neue Verbindungen zum Verbundmitglied werden blockiert, bis der Vorgang abgeschlossen ist.

  • Wenn der SWITCH OUT-Vorgang abgeschlossen ist, geschieht Folgendes:

    • Die Tabelle sys.databases in der Masterdatenbank wird aktualisiert und zeigt an, dass die Datenbank kein Verbundmitglied mehr ist.

    • Alle vorhandenen Verbindungen mit den Verbundmitgliedern werden getrennt. Das SWITCH OUT-Verbundmitglied nimmt keine Verbindungen über den Befehl USING FEDERATION mehr an.

    • Sämtliche verbundspezifischen Einschränkungen in der Zieldatenbank und verbundene Tabellen werden gelöscht.

  • NACHDEM der SWITCH OUT-Befehl an alle Verbundmitglieder ausgegeben wurde, können der Verbund und die Verbundstammdatenbank gelöscht werden.

Berechtigungen

Um für Verbunde CREATE, ALTER und DROP auszuführen, muss eine Verbindung mit dem Verbundstamm bestehen, und Sie müssen Mitglied der Rolle dbmanager auf dem Server sein. Außerdem müssen Sie Mitglied der Gruppe dbo für die Datenbank sein.

Die SPLIT- und DROP-Anweisungen erfordern CREATE- und DROP DATABASE-Berechtigungen für die Quellverbundmitglieder und für den verbundenen Server. In Azure SQL-Datenbank ist dies auf Mitglieder der festen Serverrolle dbmanager beschränkt. Der Besitzer des Quellverbundmitglieds wird zum Besitzer des Zielverbundmitglieds, unabhängig davon, über welches Benutzerkonto der Vorgang ausgeführt wird.

Beispiele

Das folgende Beispiel zeigt die Verwendung des SWITCH OUT-Vorgangs, um ein Verbundmitglied auszulagern, das den Verbundschlüssel 99 besitzt. Dieser befindet sich auf der low-Seite des Begrenzungswert des Verbunds von 100.

ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = 100)

Das folgende Beispiel zeigt die Verwendung des SWITCH OUT-Vorgangs, um in einem Verbund mit nur einem Mitglied die high-Seite des uniqueidentifier-Begrenzungswerts des Verbunds von 00000000-0000-0000-0000-000000000000 auszulagern.

ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = '00000000-0000-0000-0000-000000000000')
  • DROP AT (LOW distribution_name = boundary_value)

    Löscht das Verbundmitglied bis zum Wert LOW des Begrenzungswerts und erweitert das Verbundmitglied bis zum Wert HIGH des Begrenzungswerts. Angenommen, ein Verbund (fed1) enthält drei Verbundmitglieder, die sich über 0,100 (db1), 100,200 (db2) und 200,300 (db3) erstrecken. Durch Ausgeben von ALTER FEDERATION fed1 DROP AT (LOW customer_id=200) wird in diesem Fall Folgendes ausgeführt:

    1. DROP für db2 und für alle Daten zwischen 100,200

    2. Umbenennen von db3 in db4 Dbid von Db4 bleibt unverändert.

    3. Db4 umfasst nun den Bereich von 100,300

  • DROP AT (HIGH distribution_name = boundary_value)

    Löscht das Verbundmitglied bis zum Wert HIGH des Begrenzungswerts und erweitert das Verbundmitglied bis zum Wert LOW des Begrenzungswerts. Angenommen, ein Verbund (fed1) enthält drei Verbundmitglieder, die sich über 0,100 (db1), 100,200 (db2) und 200,300 (db3) erstrecken. Durch Ausgeben von ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200) wird in diesem Fall Folgendes ausgeführt:

    1. DROP für db3 und für alle Daten zwischen 200,300

    2. Umbenennen von db2 in db4 Dbid von db4 bleibt mit db2 identisch.

    3. Db4 umfasst nun den Bereich von 100,300

Siehe auch

Andere Ressourcen

Verwalten von Datenbankverbunden