Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Otwórz Configuration Manager serwera raportów.
Użyj strony Klucze szyfrowania, aby utworzyć kopię zapasową kluczy szyfrowania dla bazy danych serwera raportów, którą chcesz przenieść.
Użyj strony Stan serwera raportów, aby zatrzymać usługę serwera raportów.
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.
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
Znajdź pliki .mdf i .ldf dla bieżącego wystąpienia programu SQL Server. Znajdują się one w folderze Dane.
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.
W SQL Server Management Studio nawiąż połączenie z tym nowym wystąpieniem SQL Server, które hostuje bazy danych serwera raportów.
Kliknij prawym przyciskiem myszy węzeł Bazy danych , a następnie wybierz pozycję Dołącz.
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ę
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).
Uruchom serwer raportów Configuration Manager i otwórz połączenie z serwerem raportów.
Na stronie „Baza danych” wybierz nowe wystąpienie SQL Server, a następnie wybierz Połącz.
Wybierz bazę danych serwera raportów, którą właśnie przeniesiono, a następnie wybierz pozycję Zastosuj.
Na stronie Klucze szyfrowania wybierz pozycję Przywróć. Określ plik zawierający kopię zapasową kluczy i hasło, aby odblokować plik.
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:
RESTOREOperacje dla bazy danych i plików dziennika są uruchamiane oddzielnie.Argument
MOVEumoż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ładC:\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.
Możesz uruchomić podobną instrukcję, aby znaleźć nazwę logiczną tymczasowej bazy danych:
RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';Argument
FILEumoż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ładC:\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.
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
NORECOVERYwykonuje początkowe przywracanie. Ten argument przechowuje bazę danych wRESTORINGstanie, co daje czas na przejrzenie kopii zapasowych dziennika w celu określenia, który z nich ma być przywracany.Ostatni krok powtarza operację
RESTOREz argumentemRECOVERY.
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
Uruchom serwer raportów Configuration Manager i otwórz połączenie z serwerem raportów.
Na stronie Baza danych wybierz pozycję Zmień bazę danych.
Na stronie Zmień bazę danych wybierz pozycję Wybierz istniejącą bazę danych serwera raportów, a następnie wybierz pozycję Dalej.
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.
Po przetestowaniu połączenia wybierz pozycję Dalej.
W polu Baza danych serwera raportów wybierz bazę danych serwera raportów, której chcesz użyć, a następnie wybierz przycisk Dalej.
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.
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).