Aktivieren von Stretch Database für eine Datenbank

Gilt für: SQL Server 2016 (13.x) und höher – nur Windows

Wichtig

Stretch Database ist in SQL Server 2022 (16.x) und der Azure SQL-Datenbank veraltet. Diese Funktion wird in einer zukünftigen Version der Datenbank-Engine entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Um eine vorhandene Datenbank für Stretch Database zu konfigurieren, wählen Sie Aufgaben > Stretch > Aktivieren für eine Datenbank in SQL Server Management Studio aus, um den Assistenten zum Aktivieren einer Datenbank für Stretch zu öffnen. Sie können auch Transact-SQL verwenden, um Stretch Database für eine Datenbank zu aktivieren.

Wenn Sie Aufgaben > Stretch > Aktivieren für eine einzelne Tabelle auswählen und Sie die Datenbank noch nicht für Stretch Database aktiviert haben, konfiguriert der Assistent die Datenbank für Stretch Database und ermöglicht Ihnen im Zuge dieses Vorgangs auch die Auswahl von Tabellen. Führen Sie die Schritte in diesem Artikel statt der Schritte in Aktivieren von Stretch Database für eine Tabelle aus.

Um Stretch Database für eine Datenbank oder eine Tabelle zu aktivieren, benötigen Sie "db_owner"-Berechtigungen. Für das Aktivieren von Stretch Database für eine Datenbank sind ebenfalls CONTROL DATABASE-Berechtigungen erforderlich.

Hinweis

Bedenken Sie später beim Deaktivieren von Stretch Database Folgendes: Wenn Sie Stretch Database für eine Tabelle oder eine Datenbank deaktivieren, wird das Remoteobjekt nicht gelöscht. Wenn Sie die Remotetabelle oder Remotedatenbank löschen möchten, müssen Sie sie mithilfe des Azure-Verwaltungsportals löschen. Die Remoteobjekte erzeugen weiterhin Azure-Kosten, bis Sie die Objekte manuell löschen.

Bevor Sie beginnen

  • Lesen Sie Einschränkungen für Stretch Database.

  • Stretch Database migriert Daten zu Azure, sodass Sie ein Azure-Konto und ein Abonnement für die Abrechnung benötigen. Registrieren für ein Azure-Konto.

  • Erhalten Sie die erforderlichen Informationen zu Verbindungen und Anmeldungen, um einen neuen Azure-Server zu erstellen oder einen vorhandenen Azure-Server auszuwählen.

Voraussetzung: Aktivieren Sie Stretch Database auf dem Server.

Bevor Sie Stretch Database für eine Datenbank oder eine Tabelle aktivieren können, müssen Sie sie auf dem lokalen Server aktivieren. Dieser Vorgang erfordert die Berechtigung „Systemadministrator“ oder „Severadministrator“.

  • Wenn Sie über die erforderlichen Administratorberechtigungen verfügen, konfiguriert der Assistent Datenbank für Stretch aktivieren die Datenbank Server für Stretch.

  • Wenn Sie nicht über die erforderlichen Berechtigungen verfügen, muss ein Administrator die Option manuell durch Ausführen von sp_configure aktivieren, bevor Sie den Assistenten ausführen. Alternativ muss ein Administrator den Assistenten ausführen.

Führen Sie zum manuellen Aktivieren von Stretch Database auf dem Server sp_configure aus, und aktivieren Sie die Option remote data archive . Im folgenden Beispiel wird die Option remote data archive aktiviert, indem ihr Wert auf 1 festgelegt wird.

EXEC sp_configure 'remote data archive' , '1';
GO

RECONFIGURE;
GO

Weitere Informationen finden Sie unter Konfigurieren der Serverkonfigurationsoption "Remote Data Archive" sowie unter sp_configure (Transact-SQL).

Verwenden des Assistenten

Informationen zum Assistenten „Datenbank für Stretch aktivieren“ (einschließlich der von Ihnen einzugebenden Informationen und der auszuwählenden Angaben) finden Sie unter Get started by running the Enable Database for Stretch Wizard (Erste Schritte mit dem Assistenten „Datenbank für Stretch aktivieren“).

Verwenden von Transact-SQL

Bevor Sie Stretch Database für einzelne Tabellen aktivieren können, müssen Sie sie auf dem lokalen Server aktivieren.

Um Stretch Database für eine Datenbank oder eine Tabelle zu aktivieren, benötigen Sie "db_owner"-Berechtigungen. Für das Aktivieren von Stretch Database für eine Datenbank sind ebenfalls CONTROL DATABASE-Berechtigungen erforderlich.

  1. Wählen Sie vor Beginn einen vorhandenen Azure-Server für die Daten aus, die Stretch Database migriert, oder erstellen Sie einen neuen Azure-Server.

  2. Erstellen Sie auf dem Azure-Server eine Firewallregel mit dem IP-Adressbereich der SQL Server-Instanz, sodass SQL Server mit dem Remoteserver kommunizieren kann.

    Sie können die erforderlichen Werte problemlos finden und die Firewallregel erstellen, indem Sie versuchen, über den Objekt-Explorer in SQL Server Management Studio (SSMS) eine Verbindung mit dem Azure-Server herzustellen. SSMS unterstützt Sie beim Erstellen der Regel, indem das folgende Dialogfeld geöffnet wird, das die erforderlichen IP-Adresswerte bereits enthält.

    Wichtig

    Die Stretch Database-Unterstützung wird in SQL Server Management Studio v19 entfernt. Zum Verwalten der Stretch Database können Sie SQL Server Management Studio v18.9.1 oder niedriger verwenden.

    Screenshot showing a firewall rule for Stretch.

  3. Zum Konfigurieren einer SQL Server-Datenbank für Stretch Database muss die Datenbank über einen Datenbankhauptschlüssel verfügen. Der Datenbankhauptschlüssel sichert die Anmeldeinformationen, die Stretch Database für die Verbindung mit der Remotedatenbank verwendet. Im folgenden Beispiel wird ein neuer Datenbank-Hauptschlüssel erstellt.

    USE <database>;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD='<password>';
    GO
    

    Weitere Informationen zum Datenbankhauptschlüssel finden Sie unter CREATE MASTER KEY (Transact-SQL) sowie unter Erstellen eines Datenbank-Hauptschlüssels.

  4. Wenn Sie eine Datenbank für Stretch Database konfigurieren, müssen Sie die Anmeldeinformationen für Stretch Database angeben, um die Kommunikation zwischen dem lokalen SQL Server-Computer und dem Azure-Remoteserver zu ermöglichen. Sie haben zwei Möglichkeiten.

    • Sie können die Anmeldeinformationen des Administrators angeben.

      • Wenn Sie Stretch Database durch Ausführen des Assistenten aktivieren, können Sie die Anmeldeinformationen zu diesem Zeitpunkt erstellen.

      • Wenn Sie Stretch Database mithilfe von ALTER DATABASE aktivieren möchten, müssen Sie die Anmeldeinformationen manuell erstellen, bevor Sie ALTER DATABASE zum Aktivieren von Stretch Database ausführen.

        Im folgenden Beispiel werden neue Anmeldeinformationen erstellt.

        CREATE DATABASE SCOPED CREDENTIAL [<db_scoped_credential_name>]
            WITH IDENTITY = '<identity>' , SECRET = '<secret>';
        GO
        

        Weitere Informationen zu den Anmeldeinformationen finden Sie unter CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Zum Erstellen von Anmeldeinformationen ist die ALTER ANY CREDENTIAL-Berechtigung erforderlich.

    • Sie können ein Verbunddienstkonto verwenden, damit SQL Server mit dem Azure-Remoteserver kommunizieren kann, wenn alle der folgenden Bedingungen zutreffen.

      • Das Dienstkonto, unter dem die SQL Server-Instanz ausgeführt wird, ist ein Domänenkonto.

      • Das Domänenkonto gehört zu einer Domäne, deren Active Directory mit Microsoft Entra ID (früher Azure Active Directory) verbunden ist.

      • Der Azure-Remoteserver wird konfiguriert, um die Microsoft Entra-Authentifizierung zu unterstützen.

      • Das Dienstkonto, unter dem die SQL Server-Instanz ausgeführt wird, muss auf dem Azure-Remoteserver als ein dbmanager- oder sysadmin-Konto konfiguriert worden sein.

  5. Um eine Datenbank für Stretch Database zu konfigurieren, führen Sie den Befehl ALTER DATABASE aus.

    1. Stellen Sie für das SERVER-Argument den Namen eines vorhandenen Azure-Servers bereit, einschließlich des Namensteils .database.windows.net , z.B. MyStretchDatabaseServer.database.windows.net.

    2. Stellen Sie vorhandene Administratoranmeldeinformationen mit dem Argument CREDENTIAL bereit, oder geben Sie FEDERATED_SERVICE_ACCOUNT = ON an. Das folgenden Beispiel enthält vorhandene Anmeldeinformationen:

    ALTER DATABASE [<database name>]
        SET REMOTE_DATA_ARCHIVE = ON
            (
                SERVER = '<server_name>' ,
                CREDENTIAL = [<db_scoped_credential_name>]
            );
    GO
    

Nächste Schritte

Siehe auch