Trennen einer skalierbaren freigegebenen Datenbank

Mit der Zeit werden die Berichtsdaten zu alt, um noch nützlich zu sein, und die Berichtsdatenbank wird dann als veraltet bezeichnet. Das Aktualisieren einer skalierbaren freigegebenen Datenbank beinhaltet einen Aktualisierungszyklus mit drei Phasen, der mit der Trennungsphase beginnt. Im Wesentlichen geht es bei der Trennungsphase um das Trennen einer veralteten Berichtsdatenbank und das Aufheben der Bereitstellung der Berichtsvolumes der Berichtsserver. Nach dem Trennen von einer gegebenen Serverinstanz ist die veraltete Berichtsdatenbank keine skalierbare freigegebene Datenbank auf dieser Serverinstanz mehr.

Die Schritte der Trennungsphase

In dieser Phase führen Sie folgende Aktionen auf jedem der Berichtsserver aus:

  1. Deaktivieren Sie optional neue Abfragen für die Datenbank, und erlauben Sie die normale Beendigung aktueller Abfragen. Weitere Informationen finden Sie unter "Vorbereitende Strategien für das Trennen einer veralteten Berichtsdatenbank" weiter unten in diesem Thema.

  2. Trennen Sie die Datenbank von jeder der Serverinstanzen.

    Sie können dies mithilfe der folgenden Transact-SQL-Anweisung ausführen:

    sp_detach_db @dbname='<database_name>'
    

    Dabei ist <database_name> der Name der Datenbank.

  3. Heben Sie die Bereitstellung der Gruppe der Berichtsvolumes auf jedem der Berichtsserver auf.

    Geben Sie die folgenden Befehle an der Eingabeaufforderung ein, um die Bereitstellung eines Volume mithilfe des Hilfsprogramms DiskPart aufzuheben:

    DiskPart

    DISKPART> ausgewähltes Volume =<Laufwerksnummer>

    DISKPART> remove

    DISKPART> exit

    Dabei ist <drive-letter> der dem Berichtsvolume zugewiesene Laufwerkbuchstabe. Wenn die Datenbank mehrere Berichtsvolumes verwendet, führen Sie diesen Schritt für jedes der Volumes durch.

  4. Maskieren Sie die LUN (Logical Unit Number), die dem Berichtsvolume entspricht, um sie für die Berichtsserver auszublenden. Verwenden Sie dazu die Hilfsprogramme Ihres Hardwareherstellers. Wenn die Datenbank mehrere Berichtsvolumes verwendet, führen Sie diesen Schritt für jedes der Volumes durch.

HinweisHinweis

Die Trennungsphase ist die erste Phase eines Aktualisierungszyklus für eine gegebene Gruppe von Berichtsvolumes. Sie können jedoch zwei alternative Gruppen von Berichtsvolumes für die veraltete und die neue Version einer Berichtsdatenbank verwenden. Dies ermöglicht Ihnen einander überschneidende Trennungs- und Aktualisierungsphasen der beiden Volumegruppen. Weitere Informationen finden Sie unter Maximieren der Verfügbarkeit einer skalierbaren, freigegebenen Datenbank.

Vorbereitende Strategien für das Trennen einer veralteten Berichtsdatenbank

Wenn Sie die veraltete Version einer Datenbank ersetzen, müssen Sie die geschäftlichen Anforderungen an Ihre Berichtsumgebung berücksichtigen. Sie sollten abwägen, welche der folgenden geschäftlichen Anforderungen wichtiger ist: die Beendigung gerade ausgeführter Abfragen oder eine möglichst schnelle Durchführung der Aktualisierung.

Je nachdem, welche Anforderung wichtiger ist, können Sie entscheiden, wie Sie die Trennungsphase auf jedem Ihrer Berichtsserver verwalten.

  • Zulassen der Beendigung von Abfragen

    Zur Beibehaltung aller laufenden Abfragen beginnen Sie die Trennungsphase durch Stoppen des Transaktionsflusses zur Datenbank, z. B. durch Stoppen der E/A-Aktivitäten. Warten Sie dann auf jeder Serverinstanz, bis alle aktuellen Abfragen beendet sind. Wenn die Datenbank von allen Serverinstanzen getrennt wurde, können Sie die Bereitstellung des Berichtsvolume aufheben.

  • Möglichst schnelles Aktualisieren der Datenbank

    Zur schnellen Ausführung der Aktualisierung verschaffen Sie sich exklusiven Zugriff auf die Datenbank auf jeder der Serverinstanzen, indem Sie alle Abfragen sofort oder nach einer angegebenen Anzahl von Sekunden beenden. Beendete Abfragen können erneut gestartet werden, nachdem eine aktualisierte Version der Datenbank angefügt wurde.

    Beispiel: Verwenden Sie folgende Transact-SQL-Anweisung, um aktuellen Abfragen 60 Sekunden Zeit zu lassen, bevor alle verbleibenden Abfragen beendet werden:

    USE master;
    ALTER DATABASE AdventureWorks2008R2
    SET SINGLE_USER
    WITH ROLLBACK AFTER 60;
    GO
    

    Sie können jetzt die Datenbank von jeder der Serverinstanzen trennen und die Bereitstellung der Berichtsvolumes von jedem der Berichtsserver aufheben.

Weitere Informationen finden Sie unter ALTER DATABASE (Transact-SQL).

An diesem Punkt ist die entfernte Gruppe von Berichtsvolumes bereit für die Erstellungs- oder Aktualisierungsphase des nächsten Aktualisierungszyklus.

Alternativ können Sie die Datenbank auf einer alternativen Gruppe von Berichtsvolumes aktualisieren, bevor Sie mit der Trennungsphase für die derzeit bereitgestellte Gruppe von Berichtsvolumes beginnen. Weitere Informationen finden Sie unter Maximieren der Verfügbarkeit einer skalierbaren, freigegebenen Datenbank.