Przenoszenie baz danych serwera raportów na inny komputer (tryb macierzysty usług SSRS)

Dotyczy: SQL Server Reporting Services (SSRS) w trybie natywnym

Można przenieść bazy danych serwera raportów używane w instalacji SQL Server do instancji na innym komputerze.

SQL Server oferuje kilka metod przenoszenia baz danych:

  • Odłącz i podłącz. To podejście umożliwia najprostszy sposób przenoszenia baz danych serwera raportów, ale należy przełączyć serwer raportów w tryb offline, gdy bazy danych są odłączone.
  • Tworzenie kopii zapasowej i przywracanie. To podejście minimalizuje zakłócenia w działaniu usługi, ale musisz uruchomić polecenia języka Transact-SQL (T-SQL), aby wykonać te operacje.
  • Kopiuj. Kopiowanie bazy danych nie jest zalecane, jeśli używasz Kreatora kopiowania bazy danych. Nie zachowuje ustawień uprawnień w bazie danych.

W tym artykule pokazano, jak używać podejścia do odłączania i dołączania oraz podejścia do tworzenia kopii zapasowych i przywracania.

Wymagania wstępne

  • Skonfigurowany serwer raportów trybu natywnego używany w instalacji SQL Server.
  • Instancja programu SQL Server na innym komputerze.

Przygotowywanie do przenoszenia baz danych

Podczas przenoszenia baz danych serwera raportów należy pamiętać o następujących kwestiach:

  • Należy przenieść lub skopiować razem bazy danych reportserver i reportservertempdb . Instalacja usług SSRS wymaga obu baz danych.
  • Nazwa tymczasowej bazy danych musi mieć taką samą nazwę jak główna baza danych serwera raportów, ale z sufiksem tempdb.
  • Przeniesienie bazy danych nie zmienia zaplanowanych operacji, które są obecnie zdefiniowane dla elementów serwera raportów.
    • Harmonogramy są tworzone ponownie przy pierwszym ponownym uruchomieniu usługi serwera raportów.
    • SQL Server zadania agenta używane do wyzwalania harmonogramu są tworzone ponownie w nowym wystąpieniu bazy danych. Nie trzeba przenosić zadań na nowy komputer, ale możesz usunąć zadania, które nie są już używane na bieżącym komputerze.
    • Subskrypcje, buforowane raporty i migawki są zachowywane w przeniesionej bazie danych. Jeśli migawka nie pobiera odświeżonych danych po przeniesieniu bazy danych, wyczyść opcje migawki. Następnie wybierz pozycję Zastosuj , aby zapisać zmiany, ponownie utworzyć harmonogram, a następnie ponownie wybierz pozycję Zastosuj , aby zapisać zmiany.
    • Tymczasowe dane raportów i sesji użytkownika przechowywane w tymczasowej bazie danych są utrwalane podczas przenoszenia tej bazy danych.

Ważna

Kroki opisane w tym artykule są zalecane, gdy przeniesienie bazy danych serwera raportów jest jedyną zmianą wprowadzaną w istniejącej instalacji. Podczas migracji całej instalacji usług SSRS należy ponownie skonfigurować połączenie i zresetować klucze szyfrowania. Na przykład te kroki są wymagane podczas przenoszenia bazy danych i zmiany tożsamości serwera raportów Windows usługi korzystającej z bazy danych.

Odłączanie i dołączanie baz danych serwera raportów

Jeśli możesz przełączyć serwer raportów w tryb offline, możesz użyć podejścia odłączania i dołączania. Konkretnie odłączasz bazy danych od bieżącej instancji SQL Server. Następnie przenosisz je i dołączasz do instancji, której chcesz użyć. Takie podejście zachowuje uprawnienia w bazach danych.

Po przeniesieniu baz danych należy ponownie skonfigurować połączenie serwera raportów z bazą danych serwera raportów. Jeśli korzystasz z wdrożenia w architekturze skalowania horyzontalnego, musisz ponownie skonfigurować połączenie z bazą danych serwera raportów dla każdego serwera raportów w tym wdrożeniu.

Aby użyć podejścia odłączania i dołączania, wykonaj kroki opisane w poniższych sekcjach.

Odłączanie baz danych

  1. Otwórz Configuration Manager serwera raportów.

  2. Użyj strony Klucze szyfrowania, aby utworzyć kopię zapasową kluczy szyfrowania dla bazy danych serwera raportów, którą chcesz przenieść.

  3. Użyj strony Stan serwera raportów, aby zatrzymać usługę serwera raportów.

  4. Otwórz program SQL Server Management Studio i połącz się z wystąpieniem SQL Server, na którym znajdują się bazy danych serwera raportów.

  5. Kliknij prawym przyciskiem myszy bazę danych serwera raportów, wybierz pozycję Zadania, a następnie wybierz polecenie Odłącz. Powtórz ten krok dla tymczasowej bazy danych serwera raportów.

Dołączanie baz danych

  1. Znajdź pliki .mdf i .ldf dla bieżącego wystąpienia programu SQL Server. Znajdują się one w folderze Dane.

    Zrzut ekranu przedstawiający Eksploratora plików. W folderze Dane pliki .mdf i ldf są wyróżnione dla bazy danych serwera raportów i tymczasowej bazy danych.

  2. Skopiuj lub przenieś pliki .mdf i .ldf do folderu Data instancji SQL Server, której chcesz użyć. Ponieważ przenosisz dwie bazy danych, upewnij się, że przenosisz lub kopiujesz wszystkie cztery pliki.

  3. W SQL Server Management Studio nawiąż połączenie z tym nowym wystąpieniem SQL Server, które hostuje bazy danych serwera raportów.

  4. Kliknij prawym przyciskiem myszy węzeł Bazy danych , a następnie wybierz pozycję Dołącz.

  5. Wybierz pozycję Dodaj , aby wybrać bazę danych serwera raportów .mdf i pliki ldf, które chcesz dołączyć. Powtórz ten krok dla tymczasowej bazy danych serwera raportów.

Ukończ konfigurację

  1. Sprawdź, czy dołączone bazy danych mają rolę RSExecRole . Należy skonfigurować funkcję RSExecRole do wybierania, wstawiania, aktualizowania, usuwania i odwołań w tabelach bazy danych serwera raportów oraz wykonywania uprawnień do procedur składowanych. Aby uzyskać więcej informacji, zobacz Create the RSExecRole (Tworzenie elementu RSExecRole).

  2. Uruchom serwer raportów Configuration Manager i otwórz połączenie z serwerem raportów.

  3. Na stronie „Baza danych” wybierz nowe wystąpienie SQL Server, a następnie wybierz Połącz.

  4. Wybierz bazę danych serwera raportów, którą właśnie przeniesiono, a następnie wybierz pozycję Zastosuj.

  5. Na stronie Klucze szyfrowania wybierz pozycję Przywróć. Określ plik zawierający kopię zapasową kluczy i hasło, aby odblokować plik.

  6. Uruchom ponownie usługę serwera raportów.

Tworzenie kopii zapasowych i przywracanie baz danych serwera raportów

Jeśli nie możesz wyłączyć serwera raportów i przełączyć go w tryb offline, możesz użyć metody tworzenia kopii zapasowej i przywracania, aby przenieść bazy danych serwera raportów. W przypadku tego podejścia należy użyć instrukcji języka T-SQL.

Kroki opisane w poniższych sekcjach pokazują, jak utworzyć kopię zapasową i przywrócić bazy danych, a także jak skonfigurować serwer raportów do używania baz danych w nowym wystąpieniu serwera.

Użyj BACKUP i COPY_ONLY do utworzenia kopii zapasowej baz danych serwera raportów

Aby utworzyć kopię zapasową baz danych, otwórz SQL Server Management Studio, a następnie uruchom następujące instrukcje w oknie zapytania. Te instrukcje używają argumentu COPY_ONLY i tworzą kopię zapasową zarówno baz danych, jak i plików dziennika.

Przed uruchomieniem tych instrukcji zastąp <symbol zastępczy path-to-backup-folder> ścieżką do folderu Backup bieżącej instancji, na przykład C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP.

-- 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

Użyj RESTORE i MOVE, aby przenieść bazy danych serwera raportów

Aby przywrócić bazy danych, otwórz SQL Server Management Studio, a następnie uruchom następujące instrukcje w oknie zapytania.

W tych stwierdzeniach:

  • RESTORE Operacje dla bazy danych i plików dziennika są uruchamiane oddzielnie.

  • Argument MOVE umożliwia określenie ścieżki. Ten argument używa logicznej nazwy pliku danych. Aby znaleźć nazwę logiczną, uruchom następującą instrukcję. Najpierw zastąp symbol zastępczy <path-to-report-server-database-backup-file> ścieżką do pliku kopii zapasowej bazy danych serwera raportów, na przykład C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

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

    Nazwę logiczną można znaleźć w kolumnie LogicalName danych wyjściowych.

    Zrzut ekranu przedstawiający instrukcję RESTORE FILELISTONLY w oknie zapytania SQL Server Management Studio. W danych wyjściowych wyróżniono kolumnę LogicalName.

    Możesz uruchomić podobną instrukcję, aby znaleźć nazwę logiczną tymczasowej bazy danych:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Argument FILE umożliwia określenie pozycji pliku dziennika do przywrócenia. Aby znaleźć pozycję pliku, uruchom następującą instrukcję. Najpierw zastąp symbol zastępczy <path-to-report-server-database-backup-file> ścieżką do pliku kopii zapasowej bazy danych serwera raportów, na przykład C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

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

    Położenie pliku można znaleźć w kolumnie Pozycja danych wyjściowych.

    Zrzut ekranu przedstawiający instrukcję RESTORE HEADERONLY w oknie zapytania SQL Server Management Studio. W danych wyjściowych kolumna Pozycja jest wyróżniona.

    Możesz uruchomić podobną instrukcję, aby znaleźć położenie pliku tymczasowej bazy danych:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Argument NORECOVERY wykonuje początkowe przywracanie. Ten argument przechowuje bazę danych w RESTORING stanie, co daje czas na przejrzenie kopii zapasowych dziennika w celu określenia, który z nich ma być przywracany.

  • Ostatni krok powtarza operację RESTORE z argumentem RECOVERY .

Przed uruchomieniem tych instrukcji zastąp następujące symbole zastępcze odpowiednimi wartościami:

Placeholder Description Przykład
<ścieżka do folderu kopii zapasowej> Ścieżka do folderu kopii zapasowej bieżącego wystąpienia C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<ścieżka-do-nowego-folderu-danych> Ścieżka do folderu Data nowej instancji C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<raport-serwer-baza-danych-nazwa-logiczna> Logiczna nazwa bazy danych serwera raportów ReportServer
<report-server-database-log-logical-name> Logiczna nazwa dziennika bazy danych serwera raportów ReportServer_log
<pozycja pliku dziennika bazy danych serwera raportów> Lokalizacja pliku dziennika bazy danych serwera raportów 2
<tymczasowa nazwa logiczna bazy danych> Nazwa logiczna tymczasowej bazy danych ReportServerTempDB
<tymczasowa-logiczna-nazwa-dziennika-bazy-danych> Nazwa logiczna tymczasowego dziennika bazy danych ReportServerTempDB_log
<tymczasowa pozycja pliku dziennika bazy danych> Położenie tymczasowego pliku dziennika bazy danych 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

Konfigurowanie połączenia bazy danych serwera raportów

  1. Uruchom serwer raportów Configuration Manager i otwórz połączenie z serwerem raportów.

  2. Na stronie Baza danych wybierz pozycję Zmień bazę danych.

  3. Na stronie Zmień bazę danych wybierz pozycję Wybierz istniejącą bazę danych serwera raportów, a następnie wybierz pozycję Dalej.

  4. W polu Nazwa serwera wprowadź wystąpienie SQL Server, które teraz hostuje bazę danych serwera raportów, a następnie wybierz pozycję Testuj połączenie.

  5. Po przetestowaniu połączenia wybierz pozycję Dalej.

  6. W polu Baza danych serwera raportów wybierz bazę danych serwera raportów, której chcesz użyć, a następnie wybierz przycisk Dalej.

  7. W obszarze Poświadczenia określ poświadczenia używane przez serwer raportów do nawiązania połączenia z bazą danych serwera raportów, a następnie wybierz przycisk Dalej.

  8. Wybierz Dalej, a następnie wybierz Koniec.

Note

W instalacji SSRS instancja silnika bazy danych programu SQL Server musi zawierać rolę RSExecRole. Tworzenie ról, rejestracja logowania i przypisania ról są wykonywane, gdy używasz serwera raportów Configuration Manager do ustawiania połączenia bazy danych serwera raportów. Jeśli używasz alternatywnych metod, takich jak narzędzie wiersza polecenia rsconfig.exe, serwer raportów nie działa. W takim przypadku może być konieczne napisanie kodu instrumentacji zarządzania Windows (WMI), aby udostępnić serwer raportów. Aby uzyskać więcej informacji, zobacz Access the Reporting Services WMI provider (Uzyskiwanie dostępu do dostawcy usługi WMI Reporting Services).