Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: systeemeigen SSRS-modus (SQL Server Reporting Services)
U kunt de rapportserverdatabases die u gebruikt in een installatie van SQL Server verplaatsen naar een exemplaar dat zich op een andere computer bevindt.
SQL Server biedt verschillende benaderingen voor het verplaatsen van databases:
- Loskoppelen en koppelen. Deze methode biedt de eenvoudigste manier om de rapportserverdatabases te verplaatsen, maar u moet de rapportserver buiten gebruik stellen terwijl de databases zijn losgekoppeld.
- Back-up en herstel. Deze aanpak minimaliseert serviceonderbrekingen, maar u moet Transact-SQL (T-SQL)-opdrachten uitvoeren om de bewerkingen uit te voeren.
- Kopiëren. Het kopiëren van de database wordt niet aanbevolen als u de wizard Database kopiëren gebruikt. De machtigingsinstellingen in de database blijven niet behouden.
In dit artikel wordt uitgelegd hoe u de methode voor loskoppelen en koppelen en de back-up- en herstelmethode gebruikt.
Prerequisites
- Een geconfigureerde rapportserver in de systeemeigen modus die wordt gebruikt in een installatie van SQL Server.
- Een exemplaar van SQL Server op een andere computer.
Voorbereiden om de databases te verplaatsen
Houd rekening met de volgende punten wanneer u rapportserverdatabases verplaatst:
- U moet de rapportserver en reportservertempdb-databases samen verplaatsen of kopiëren. Voor een SSRS-installatie zijn beide databases vereist.
- De naam van de tijdelijke database moet gelijk zijn aan de naam van de primaire rapportserverdatabase, maar met een tempdb-achtervoegsel .
- Als u een database verplaatst, worden geplande bewerkingen die momenteel zijn gedefinieerd voor rapportserveritems niet gewijzigd.
- Schema's worden opnieuw gemaakt wanneer u de rapportserverservice voor het eerst opnieuw start.
- SQL Server agenttaken die worden gebruikt om een schema te activeren, worden opnieuw gemaakt op het nieuwe database-exemplaar. U hoeft de taken niet naar de nieuwe computer te verplaatsen, maar u wilt mogelijk taken verwijderen die niet meer op de huidige computer worden gebruikt.
- Abonnementen, rapporten in de cache en momentopnamen blijven behouden in de verplaatste database. Als een momentopname geen bijgewerkte gegevens oppikt nadat u de database hebt verplaatst, wist u de momentopnameopties. Selecteer Vervolgens Toepassen om uw wijzigingen op te slaan, de planning opnieuw te maken en opnieuw toepassen te selecteren om uw wijzigingen op te slaan.
- Tijdelijke rapport- en gebruikerssessiegegevens die zijn opgeslagen in de tijdelijke database, blijven behouden wanneer u die database verplaatst.
Important
De stappen in dit artikel worden aanbevolen wanneer de verplaatsing van de rapportserverdatabase de enige wijziging is die u aanbrengt in de bestaande installatie. Wanneer u een volledige SSRS-installatie migreert, moet u de verbinding opnieuw configureren en versleutelingssleutels opnieuw instellen. Deze stappen zijn bijvoorbeeld vereist wanneer u de database verplaatst en de identiteit van de rapportserver wijzigt Windows service die gebruikmaakt van de database.
De rapportserverdatabases loskoppelen en koppelen
Als u de rapportserver offline kunt halen, kunt u de loskoppelings- en bijlagebenadering gebruiken. U koppelt de databases specifiek los van uw huidige SQL Server exemplaar. Vervolgens verplaatst u ze en koppelt u ze aan het exemplaar dat u wilt gebruiken. Met deze benadering blijven machtigingen in de databases behouden.
Nadat u de databases hebt verplaatst, moet u de verbinding van de rapportserver met de rapportserverdatabase opnieuw configureren. Als u een uitschaalimplementatie uitvoert, moet u de databaseverbinding van de rapportserver opnieuw configureren voor elke rapportserver in de implementatie.
Volg de stappen in de volgende gedeelten om de methode voor loskoppelen en koppelen te gebruiken.
Databases loskoppelen
Open Report Server Configuration Manager.
Gebruik de pagina Versleutelingssleutels om een back-up te maken van de versleutelingssleutels voor de rapportserverdatabase die u wilt verplaatsen.
Gebruik de pagina Status van de rapportserver om de rapportserverservice te stoppen.
Open SQL Server Management Studio en maak verbinding met het SQL Server-exemplaar dat als host fungeert voor de rapportserverdatabases.
Klik met de rechtermuisknop op de rapportserverdatabase, selecteer Taken en selecteer Vervolgens Loskoppelen. Herhaal deze stap voor de tijdelijke database van de rapportserver.
De databases koppelen
Zoek de .mdf- en LDF-bestanden voor uw huidige SQL Server-exemplaar. Ze bevinden zich in de map Gegevens.
Kopieer of verplaats de .mdf- en LDF-bestanden naar de map Gegevens van het SQL Server exemplaar dat u wilt gebruiken. Omdat u twee databases verplaatst, moet u ervoor zorgen dat u alle vier de bestanden verplaatst of kopieert.
Open in SQL Server Management Studio een verbinding met het nieuwe SQL Server-exemplaar waarop de rapportserverdatabases worden gehost.
Klik met de rechtermuisknop op het knooppunt Databases en selecteer Koppelen.
Selecteer Toevoegen om de rapportserverdatabase te selecteren .mdf- en LDF-bestanden die u wilt bijvoegen. Herhaal deze stap voor de tijdelijke database van de rapportserver.
De configuratie voltooien
Controleer of de databases die u hebt gekoppeld de rol RSExecRole hebben. U moet RSExecRole configureren voor selectie-, insert-, update-, verwijder- en verwijzingsmachtigingen voor de databasetabellen van de rapportserver en machtigingen uitvoeren voor de opgeslagen procedures. Zie De RSExecRole maken voor meer informatie.
Start Report Server Configuration Manager en open een verbinding met de rapportserver.
Selecteer op de pagina Database het nieuwe SQL Server-exemplaar en selecteer vervolgens Verbinding maken.
Selecteer de rapportserverdatabase die u zojuist hebt verplaatst en selecteer Vervolgens Toepassen.
Selecteer Herstellen op de pagina Versleutelingssleutels. Geef het bestand op dat de back-up van de sleutels en het wachtwoord bevat om het bestand te ontgrendelen.
Start de rapportserverservice opnieuw op.
Een back-up maken van de rapportserverdatabases en deze herstellen
Als u de rapportserver niet offline kunt halen, kunt u de back-up- en herstelbenadering gebruiken om de rapportserverdatabases te verplaatsen. Met deze aanpak moet u T-SQL-instructies gebruiken.
De stappen in de volgende secties laten zien hoe u een back-up maakt van de databases en hoe u de rapportserver configureert voor het gebruik van de databases op het nieuwe serverexemplaren.
Gebruik BACKUP en COPY_ONLY om een back-up te maken van de rapportserverdatabases
Als u een back-up van de databases wilt maken, opent u SQL Server Management Studio en voert u vervolgens de volgende instructies uit in een queryvenster. Deze instructies gebruiken het COPY_ONLY argument en maken een back-up van zowel databases als logboekbestanden.
Voordat u deze statements uitvoert, vervangt u de <plaatsaanduiding path-to-backup-folder> door het pad naar de map Backup van uw huidige exemplaar, zoals 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
Gebruik RESTORE en MOVE om de reportserverdatabases te verplaatsen
Als u de databases wilt herstellen, opent u SQL Server Management Studio en voert u de volgende instructies uit in een queryvenster.
In deze verklaringen:
De
RESTOREbewerkingen voor de database en logboekbestanden worden afzonderlijk uitgevoerd.Het
MOVEargument biedt een manier om een pad op te geven. Dit argument gebruikt de logische naam van het gegevensbestand. Voer de volgende instructie uit om de logische naam te vinden. Vervang eerst de placeholder <path-to-report-server-database-backup-file> door het pad naar het databaseback-upbestand van uw rapportserver, bijvoorbeeldC:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';U vindt de logische naam in de kolom LogicalName van de uitvoer.
U kunt een vergelijkbare instructie uitvoeren om de logische naam van uw tijdelijke database te vinden:
RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';Het
FILEargument biedt een manier om de bestandspositie van het logboekbestand op te geven dat moet worden hersteld. Voer de volgende instructie uit om de bestandspositie te vinden. Vervang eerst de <plaatsaanduiding path-to-report-server-database-backup-file> door het pad naar het databaseback-upbestand van de rapportserver, zoalsC:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';U vindt de bestandspositie in de kolom Positie van de uitvoer.
U kunt een vergelijkbare instructie uitvoeren om de bestandspositie van uw tijdelijke database te vinden:
RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';Het
NORECOVERYargument voert de eerste herstelbewerking uit. Met dit argument blijft de database in eenRESTORINGstatus, waardoor u tijd hebt om logboekback-ups te controleren om te bepalen welke back-up moet worden hersteld.De laatste stap herhaalt de
RESTOREbewerking met hetRECOVERYargument.
Voordat u deze instructies uitvoert, vervangt u de volgende tijdelijke aanduidingen door de juiste waarden:
| Tijdelijke aanduiding | Description | Voorbeeld |
|---|---|---|
| <path-to-backup-folder> | Het pad naar de map Back-up van uw huidige exemplaar | C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP |
| <path-to-new-data-folder> | Het pad naar de map Data van uw nieuwe instantie | C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA |
| <logische naam van de rapportserverdatabase> | De logische naam van uw rapportserverdatabase | ReportServer |
| <report-server-database-log-logical-name> | De logische naam van het databaselogboek van de rapportserver | ReportServer_log |
| <report-server-database-log-file-position> | De bestandspositie van het logboekbestand van de rapportserverdatabase | 2 |
| <tijdelijke database-logische-naam> | De logische naam van uw tijdelijke database | ReportServerTempDB |
| <tijdelijke database-logboek-logische-naam> | De logische naam van het tijdelijke databaselogboek | ReportServerTempDB_log |
| <positie-van-tijdelijk-databaselogbestand> | De bestandspositie van het logboekbestand van de tijdelijke database | 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
De databaseverbinding met de rapportserver configureren
Start Report Server Configuration Manager en open een verbinding met de rapportserver.
Selecteer Database wijzigen op de pagina Database.
Selecteer op de pagina Database wijzigen de optie Een bestaande rapportserverdatabase kiezen en selecteer vervolgens Volgende.
Voer bij Servernaam het SQL Server exemplaar in dat nu als host fungeert voor de rapportserverdatabase en selecteer vervolgens Verbinding testen.
Nadat u de verbinding hebt getest, selecteert u Volgende.
Selecteer voor Report Server Database de rapportserverdatabase die u wilt gebruiken en selecteer vervolgens Volgende.
Geef onder Referenties de referenties op die de rapportserver gebruikt om verbinding te maken met de rapportserverdatabase en selecteer vervolgens Volgende.
Selecteer Volgende en daarna Voltooien.
Note
In een SSRS-installatie moet het SQL Server Database Engine exemplaar de rol RSExecRole bevatten. Het maken van rollen, aanmeldingsregistratie en roltoewijzingen vindt plaats wanneer u Report Server Configuration Manager gebruikt om de databaseverbinding van de rapportserver in te stellen. Als u alternatieve benaderingen gebruikt, zoals het hulpprogramma rsconfig.exe opdrachtprompt, heeft de rapportserver geen werkende status. In dat geval moet u mogelijk Windows WMI-code (Management Instrumentation) schrijven om de rapportserver beschikbaar te maken. Zie Toegang tot de WMI-provider van Reporting Services voor meer informatie.