Verschieben von Berichtsserverdatenbanken auf einen anderen Computer (systemeigener SSRS-Modus)

Gilt für: nativer SSRS-Modus (SQL Server Reporting Services)

Sie können die Berichtsserverdatenbanken, die Sie in einer Installation von SQL Server verwenden, auf eine Instanz verschieben, die sich auf einem anderen Computer befindet.

SQL Server bietet mehrere Ansätze für das Verschieben von Datenbanken:

  • Trennen und anfügen. Dieser Ansatz bietet die einfachste Möglichkeit, die Berichtsserverdatenbanken zu verschieben, Sie müssen den Berichtsserver jedoch offline schalten, während die Datenbanken getrennt sind.
  • Sichern und Wiederherstellen. Dieser Ansatz minimiert Dienstunterbrechungen, Sie müssen jedoch Transact-SQL (T-SQL)-Befehle ausführen, um die Vorgänge auszuführen.
  • Kopieren. Das Kopieren der Datenbank wird nicht empfohlen, wenn Sie den Assistenten zum Kopieren von Datenbanken verwenden. Dabei bleiben Berechtigungseinstellungen in der Datenbank nicht erhalten.

In diesem Artikel erfahren Sie, wie Sie den Ansatz zum Trennen und Anfügen sowie den Sicherungs- und Wiederherstellungsansatz verwenden.

Voraussetzungen

  • Ein konfigurierter Berichtsserver für den nativen Modus, der in einer Installation von SQL Server verwendet wird.
  • Eine Instanz von SQL Server auf einem anderen Computer.

Vorbereiten der Verschiebung der Datenbanken

Beachten Sie beim Verschieben von Berichtsserverdatenbanken die folgenden Punkte:

  • Sie müssen die Berichtsserver - und Reportservertempdb-Datenbanken zusammen verschieben oder kopieren. Für eine SSRS-Installation sind beide Datenbanken erforderlich.
  • Der Name der temporären Datenbank muss mit dem Namen der primären Berichtsserverdatenbank identisch sein, jedoch mit einem tempdb-Suffix .
  • Das Verschieben einer Datenbank bewirkt keine Änderung geplanter Vorgänge, die aktuell für Berichtsserverelemente definiert sind.
    • Zeitpläne werden beim ersten Neustart des Berichtsserverdiensts neu erstellt.
    • SQL Server-Agentaufträge, die zum Auslösen eines Zeitplans verwendet werden, werden in der neuen Datenbankinstanz neu erstellt. Sie müssen die Aufträge nicht auf den neuen Computer verschieben, aber Möglicherweise möchten Sie Aufträge löschen, die nicht mehr auf dem aktuellen Computer verwendet werden.
    • Abonnements, zwischengespeicherte Berichte und Momentaufnahmen bleiben in der verschobenen Datenbank erhalten. Wenn eine Momentaufnahme nach dem Verschieben der Datenbank keine aktualisierten Daten erfasst, löschen Sie die Momentaufnahmeoptionen. Wählen Sie dann "Übernehmen" aus, um Ihre Änderungen zu speichern, den Zeitplan neu zu erstellen und erneut "Übernehmen" aus, um Ihre Änderungen zu speichern.
    • Temporäre Berichts- und Benutzersitzungsdaten, die in der temporären Datenbank gespeichert sind, bleiben erhalten, wenn Sie diese Datenbank verschieben.

Wichtig

Die Schritte in diesem Artikel werden empfohlen, wenn die Verlagerung der Berichtsserverdatenbank die einzige Änderung ist, die Sie an der vorhandenen Installation vornehmen. Wenn Sie eine gesamte SSRS-Installation migrieren, müssen Sie die Verbindung neu konfigurieren und Verschlüsselungsschlüssel zurücksetzen. Diese Schritte sind beispielsweise erforderlich, wenn Sie die Datenbank verschieben und die Identität des Berichtsserver-Windows-Diensts ändern, der die Datenbank verwendet.

Trennen und Anfügen der Berichtsserver-Datenbanken

Wenn Sie den Berichtsserver offline schalten können, können Sie den Ansatz zum Trennen und Anfügen verwenden. Insbesondere trennen Sie die Datenbanken von Ihrer aktuellen SQL Server-Instanz. Anschließend verschieben Sie sie, und fügen Sie sie an die Instanz an, die Sie verwenden möchten. Bei dieser Vorgehensweise bleiben die Berechtigungen in den Datenbanken erhalten.

Nachdem Sie die Datenbanken verschoben haben, müssen Sie die Verbindung des Berichtsservers mit der Berichtsserver-Datenbank erneut konfigurieren. Wenn Sie eine Skalierungsbereitstellung ausführen, müssen Sie die Berichtsserverdatenbankverbindung für jeden Berichtsserver in der Bereitstellung neu konfigurieren.

Wenn Sie den Ansatz zum Trennen und Anfügen verwenden möchten, führen Sie die Schritte in den folgenden Abschnitten aus.

Trennen der Datenbanken

  1. Öffnen Sie den Konfigurations-Manager des Berichtsservers.

  2. Verwenden Sie die Seite "Verschlüsselungsschlüssel", um die Verschlüsselungsschlüssel für die Berichtsserverdatenbank zu sichern, die Sie verschieben möchten.

  3. Verwenden Sie die Berichtsserverstatusseite, um den Berichtsserverdienst zu beenden.

  4. Öffnen Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit der SQL Server-Instanz her, die die Berichtsserverdatenbanken hosten soll.

  5. Klicken Sie mit der rechten Maustaste auf die Berichtsserverdatenbank, wählen Sie "Aufgaben" aus, und wählen Sie dann "Trennen" aus. Wiederholen Sie diesen Schritt für die temporäre Berichtsserver-Datenbank.

Anfügen der Datenbanken

  1. Suchen Sie die .mdf- und LDF-Dateien für Ihre aktuelle SQL Server-Instanz. Sie befinden sich im Ordner "Daten".

    Screenshot von Explorer. Im Ordner

  2. Kopieren oder verschieben Sie die .mdf- und LDF-Dateien in den Datenordner der SQL Server-Instanz, die Sie verwenden möchten. Da Sie zwei Datenbanken verschieben, müssen Sie sicherstellen, dass Sie alle vier Dateien verschieben bzw. kopieren.

  3. Öffnen Sie in SQL Server Management Studio eine Verbindung mit der neuen SQL Server-Instanz, die die Berichtsserverdatenbanken hosten soll.

  4. Klicken Sie mit der rechten Maustaste auf den Knoten "Datenbanken", und wählen Sie dann "Anfügen" aus.

  5. Wählen Sie Hinzufügen aus, um die anzufügenden MDF- und LDF-Dateien der Berichtsserver-Datenbank auszuwählen. Wiederholen Sie diesen Schritt für die temporäre Berichtsserver-Datenbank.

Abschließen der Konfiguration

  1. Stellen Sie sicher, dass die angefügten Datenbanken über die Rolle "RSExecRole " verfügen. Sie müssen RSExecRole für ausgewählte, einfügen, aktualisieren, löschen und Referenzberechtigungen für die Berichtsserverdatenbanktabellen konfigurieren und Berechtigungen für die gespeicherten Prozeduren ausführen. Weitere Informationen finden Sie unter Erstellen der Rolle RSExecRole.

  2. Starten Sie den Konfigurations-Manager des Berichtsservers, und öffnen Sie eine Verbindung mit dem Berichtsserver.

  3. Wählen Sie auf der Datenbankseite die neue SQL Server-Instanz aus, und wählen Sie dann Verbinden aus.

  4. Wählen Sie die soeben verschobene Berichtsserverdatenbank und dann "Übernehmen" aus.

  5. Klicken Sie auf der Seite „Verschlüsselungsschlüssel“ auf Wiederherstellen. Gibt die Datei an, die eine Sicherungskopie der Schlüssel und des Kennworts zum Entsperren der Datei enthält.

  6. Starten Sie den Berichtsserverdienst neu.

Sichern und Wiederherstellen der Berichtsserver-Datenbank

Wenn Sie den Berichtsserver nicht offline schalten können, können Sie den Sicherungs- und Wiederherstellungsansatz verwenden, um die Berichtsserverdatenbanken zu verschieben. Bei diesem Ansatz müssen Sie T-SQL-Anweisungen verwenden.

Die Schritte in den folgenden Abschnitten zeigen, wie Sie die Datenbanken sichern und wiederherstellen sowie den Berichtsserver so konfigurieren, dass die Datenbanken in der neuen Serverinstanz verwendet werden.

Verwenden von BACKUP und COPY_ONLY zum Sichern der Berichtsserver-Datenbanken

Um die Datenbanken zu sichern, öffnen Sie SQL Server Management Studio, und führen Sie dann die folgenden Anweisungen in einem Abfragefenster aus. Diese Anweisungen verwenden das COPY_ONLY Argument, und sie sichern sowohl Datenbanken als auch Protokolldateien.

Ersetzen Sie vor dem Ausführen dieser Anweisungen den <Pfad-zu-Sicherungsordner-Platzhalter> durch den Pfad zum Sicherungsordner Ihrer aktuellen Instanz, z C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP. B. .

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO

-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\ReportServerLog.bak'

-- Back up the full ReportServer database.
BACKUP DATABASE ReportServer
   TO ReportServerData
   WITH COPY_ONLY

-- Back up the ReportServer log.
BACKUP LOG ReportServer
   TO ReportServerLog
   WITH COPY_ONLY

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO

-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\ReportServerTempDBLog.bak'

-- Back up the full ReportServerTempDB database.
BACKUP DATABASE ReportServerTempDB
   TO ReportServerTempDBData
   WITH COPY_ONLY

-- Back up the ReportServerTempDB log.
BACKUP LOG ReportServerTempDB
   TO ReportServerTempDBLog
   WITH COPY_ONLY

Verwenden von RESTORE und MOVE zum Verschieben der Berichtsserver-Datenbanken

Um die Datenbanken wiederherzustellen, öffnen Sie SQL Server Management Studio, und führen Sie dann die folgenden Anweisungen in einem Abfragefenster aus.

In diesen Anweisungen:

  • Die RESTORE Vorgänge für die Datenbank- und Protokolldateien werden separat ausgeführt.

  • Das MOVE Argument bietet eine Möglichkeit zum Angeben eines Pfads. Dieses Argument verwendet den logischen Namen der Datendatei. Führen Sie die folgende Anweisung aus, um den logischen Namen zu finden. Ersetzen Sie zuerst den <Platzhalter "Path-to-report-server-database-backup-file> " durch den Pfad zur Sicherungsdatei der Berichtsserverdatenbank, z C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak. B. .

    RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Sie finden den logischen Namen in der Spalte "LogicalName " der Ausgabe.

    Screenshot einer RESTORE FILELISTONLY-Anweisung in einem SQL Server Management Studio-Abfragefenster. In der Ausgabe ist die Spalte

    Sie können eine ähnliche Anweisung ausführen, um den logischen Namen Ihrer temporären Datenbank zu finden:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Das FILE Argument bietet eine Möglichkeit, die Dateiposition der wiederherzustellenden Protokolldatei anzugeben. Führen Sie die folgende Anweisung aus, um die Dateiposition zu finden. Ersetzen Sie zuerst den <Platzhalter "Path-to-report-server-database-backup-file> " durch den Pfad zur Sicherungsdatei der Berichtsserverdatenbank, z C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak. B. .

    RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Sie finden die Dateiposition in der Spalte "Position " der Ausgabe.

    Screenshot einer RESTORE HEADERONLY-Anweisung in einem SQL Server Management Studio-Abfragefenster. In der Ausgabe wird die Spalte

    Sie können eine ähnliche Anweisung ausführen, um die Dateiposition Ihrer temporären Datenbank zu finden:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Das NORECOVERY Argument führt die ursprüngliche Wiederherstellung aus. Dieses Argument behält die Datenbank in einem RESTORING Zustand bei, wodurch Sie Zeit haben, Protokollsicherungen zu überprüfen, um zu bestimmen, welche Datenbank wiederhergestellt werden soll.

  • Im letzten Schritt wird der RESTORE-Vorgang mit dem Argument RECOVERY wiederholt.

Ersetzen Sie vor dem Ausführen dieser Anweisungen die folgenden Platzhalter durch die entsprechenden Werte:

Platzhalter Beschreibung Beispiel
<Pfad-zu-Sicherungsordner> Der Pfad zum Sicherungsordner Ihrer aktuellen Instanz C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<Path-to-new-data-folder> Der Pfad zum Datenordner Ihrer neuen Instanz C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<report-server-database-logical-name> Der logische Name der Berichtsserverdatenbank ReportServer
<report-server-database-log-logical-name> Der logische Name des Berichtsserverdatenbankprotokolls ReportServer_log
<report-server-database-log-file-position> Die Dateiposition der Protokolldatei der Berichtsserverdatenbank 2
<temporary-database-logical-name> Der logische Name Ihrer temporären Datenbank ReportServerTempDB
<temporary-database-log-logical-name> Der logische Name des temporären Datenbankprotokolls ReportServerTempDB_log
<temporary-database-log-file-position> Die Dateiposition der temporären Datenbankprotokolldatei 2
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
   WITH RECOVERY
GO

-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
   WITH RECOVERY
GO

Konfigurieren der Berichtsserverdatenbankverbindung

  1. Starten Sie den Konfigurations-Manager des Berichtsservers, und öffnen Sie eine Verbindung mit dem Berichtsserver.

  2. Wählen Sie auf der Seite „Datenbank“ die Option Datenbank ändernaus.

  3. Wählen Sie auf der Seite "Datenbank ändern" die Option "Vorhandene Berichtsserverdatenbank auswählen" und dann "Weiter" aus.

  4. Geben Sie für den Servernamen die SQL Server-Instanz ein, die nun die Berichtsserverdatenbank hostt, und wählen Sie dann "Verbindung testen" aus.

  5. Nachdem Sie die Verbindung getestet haben, wählen Sie "Weiter" aus.

  6. Wählen Sie für die Berichtsserverdatenbank die Berichtsserverdatenbank aus, die Sie verwenden möchten, und wählen Sie dann "Weiter" aus.

  7. Geben Sie unter "Anmeldeinformationen" die Anmeldeinformationen an, die der Berichtsserver zum Herstellen einer Verbindung mit der Berichtsserverdatenbank verwendet, und wählen Sie dann "Weiter" aus.

  8. Klicken Sie auf Next (Weiter) und dann auf Finish (Fertig stellen).

Hinweis

In einer SSRS-Installation muss die SQL Server-Datenbank-Engine Instanz die RSExecRole-Rolle enthalten. Rollenerstellung, Anmelderegistrierung und Rollenzuweisungen treten auf, wenn Sie den Berichtsserverkonfigurations-Manager zum Festlegen der Berichtsserverdatenbankverbindung verwenden. Wenn Sie alternative Ansätze verwenden, z. B. das Hilfsprogramm rsconfig.exe Eingabeaufforderung, befindet sich der Berichtsserver nicht im Arbeitszustand. In diesem Fall müssen Sie möglicherweise Windows-Verwaltungsinstrumentation (WMI)-Code schreiben, um den Berichtsserver verfügbar zu machen. Weitere Informationen finden Sie unter Access the Reporting Services WMI provider.