Flytta rapportserverdatabaser till en annan dator (inbyggt SSRS-läge)

Gäller för: SQL Server Reporting Services (SSRS) inbyggt läge

Du kan flytta rapportserverdatabaserna som du använder i en installation av SQL Server till en instans som finns på en annan dator.

SQL Server innehåller flera metoder för att flytta databaser:

  • Koppla från och koppla in. Det här tillvägagångssättet är det enklaste sättet att flytta rapportserverdatabaserna, men du behöver ta rapportservern offline medan databaserna är frånkopplade.
  • Säkerhetskopiering och återställning. Den här metoden minimerar tjänststörningar, men du måste köra Transact-SQL -kommandon (T-SQL) för att utföra åtgärderna.
  • Kopiera. Det rekommenderas inte att du kopierar databasen om du använder guiden Kopiera databas. Den bevarar inte behörighetsinställningar i databasen.

Den här artikeln visar hur du använder metoden att koppla från och sedan koppla till samt metoden för säkerhetskopiering och återställning.

Förutsättningar

  • En konfigurerad rapportserver i inbyggt läge som används i en installation av SQL Server.
  • En instans av SQL Server på en annan dator.

Förbered för att flytta databaserna

Tänk på följande när du flyttar rapportserverdatabaser:

  • Du måste flytta eller kopiera databaserna reportserver och reportservertempdb tillsammans. En SSRS-installation kräver båda databaserna.
  • Namnet på den tillfälliga databasen måste vara samma som namnet på den primära rapportserverdatabasen men med ett tempdb-suffix .
  • Om du flyttar en databas ändras inte schemalagda åtgärder som för närvarande har definierats för rapportserverobjekt.
    • Scheman återskapas första gången du startar om rapportservertjänsten.
    • SQL Server agentjobb som används för att utlösa ett schema återskapas på den nya databasinstansen. Du behöver inte flytta jobben till den nya datorn, men du kanske vill ta bort jobb som inte längre används på den aktuella datorn.
    • Prenumerationer, cachelagrade rapporter och ögonblicksbilder bevaras i den flyttade databasen. Om en ögonblicksbild inte hämtar uppdaterade data när du har flyttat databasen rensar du alternativen för ögonblicksbilder. Välj sedan Använd för att spara ändringarna, återskapa schemat och välj Tillämpa igen för att spara ändringarna.
    • Temporära rapport- och användarsessionsdata som lagras i den tillfälliga databasen bevaras när du flyttar databasen.

Viktigt!

Stegen i den här artikeln rekommenderas när en flytt av rapportserverdatabasen är den enda ändring som du gör i den befintliga installationen. När du migrerar en hel SSRS-installation måste du konfigurera om anslutningen och återställa krypteringsnycklarna. Dessa steg krävs till exempel när du flyttar databasen och ändrar identiteten för rapportservern Windows tjänst som använder databasen.

Koppla från och anslut rapportserverns databaser

Om du kan ta rapportservern offline kan du använda metoden för att koppla från och koppla tillbaka. Mer specifikt kopplar du bort databaserna från den aktuella SQL Server-instansen. Sedan flyttar du dem och kopplar dem till den instans som du vill använda. Den här metoden bevarar behörigheter i databaserna.

När du har flyttat databaserna måste du konfigurera om rapportserveranslutningen till rapportserverdatabasen. Om du kör en utskalningsdistribution måste du konfigurera om rapportserverns databasanslutning för varje rapportserver i distributionen.

Om du vill använda metoden koppla från och ansluta utför du stegen i följande avsnitt.

Koppla från databaserna

  1. Öppna Konfigurationshanteraren för rapportservern.

  2. Använd sidan Krypteringsnycklar för att säkerhetskopiera krypteringsnycklarna för rapportserverdatabasen som du vill flytta.

  3. Använd sidan Rapportserverstatus för att stoppa rapportservertjänsten.

  4. Öppna SQL Server Management Studio och anslut till den SQL Server instans som är värd för rapportserverdatabaserna.

  5. Högerklicka på rapportserverdatabasen, välj Aktiviteter, och välj sedan Koppla från. Upprepa det här steget för den temporära rapportserverdatabasen.

Bifoga databaserna

  1. Leta upp .mdf- och .ldf-filerna för din aktuella SQL Server-instans. De finns i mappen Data.

    Skärmbild av Utforskaren. I mappen Data markeras .mdf- och .ldf-filerna för rapportserverdatabasen och den tillfälliga databasen.

  2. Kopiera eller flytta filerna .mdf och .ldf till mappen Data för den SQL Server instans som du vill använda. Eftersom du flyttar två databaser måste du flytta eller kopiera alla fyra filerna.

  3. I SQL Server Management Studio öppnar du en anslutning till den nya SQL Server-instansen som är värd för rapportserverdatabaserna.

  4. Högerklicka på noden Databaser och välj sedan Bifoga.

  5. Välj Lägg till för att välja rapportserverdatabasen .mdf- och .ldf-filer som du vill bifoga. Upprepa det här steget för den temporära rapportserverdatabasen.

Slutför konfigurationen

  1. Kontrollera att databaserna som du har kopplat har rollen RSExecRole . Du måste konfigurera RSExecRole för att välja, infoga, uppdatera, ta bort och referensbehörigheter för rapportserverdatabastabellerna och köra behörigheter för lagrade procedurer. Mer information finns i Skapa RSExecRole.

  2. Starta rapportservern Configuration Manager och öppna en anslutning till rapportservern.

  3. På sidan Databas väljer du den nya SQL Server-instansen och väljer sedan Anslut.

  4. Välj den rapportserverdatabas som du precis har flyttat och välj sedan Använd.

  5. På sidan Krypteringsnycklar väljer du Återställ. Ange den fil som innehåller säkerhetskopian av nycklarna och lösenordet för att låsa upp filen.

  6. Starta om rapportservertjänsten.

Säkerhetskopiera och återställa rapportserverdatabaserna

Om du inte kan koppla från rapportservern kan du använda säkerhetskopierings- och återställningsmetoden för att flytta rapportserverdatabaserna. Med den här metoden måste du använda T-SQL-instruktioner.

Stegen i följande avsnitt visar hur du säkerhetskopierar och återställer databaserna och hur du konfigurerar rapportservern att använda databaserna på den nya serverinstansen.

Använd BACKUP och COPY_ONLY för att säkerhetskopiera rapportserverdatabaserna

Om du vill säkerhetskopiera databaserna öppnar du SQL Server Management Studio och kör sedan följande instruktioner i ett frågefönster. De här satserna använder argumentet COPY_ONLY och säkerhetskopierar både databaser och loggfiler.

Innan du kör dessa satser ersätter du platshållaren <path-to-backup-folder> med sökvägen till mappen Backup för din nuvarande instans, till exempel 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

Använda RESTORE och FLYTTA för att flytta rapportserverdatabaserna

Om du vill återställa databaserna öppnar du SQL Server Management Studio och kör sedan följande instruktioner i ett frågefönster.

I dessa påståenden:

  • Åtgärderna RESTORE för databasen och loggfilerna körs separat.

  • Argumentet MOVE ger dig ett sätt att ange en sökväg. Det här argumentet använder datafilens logiska namn. Kör följande instruktion för att hitta det logiska namnet. Ersätt först platshållaren <path-to-report-server-database-backup-file> med sökvägen till säkerhetskopian av rapportserverdatabasen, till exempel C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

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

    Du hittar det logiska namnet i kolumnen LogicalName i utdata.

    Skärmbild av en RESTORE FILELISTONLY instruktion i ett SQL Server Management Studio frågefönster. I utdata är kolumnen LogicalName markerad.

    Du kan köra en liknande instruktion för att hitta det logiska namnet på den tillfälliga databasen:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Argumentet FILE är ett sätt för dig att ange filpositionen för loggfilen som ska återställas. Kör följande instruktion för att hitta filpositionen. Ersätt först platshållaren <path-to-report-server-database-backup-file> med sökvägen till säkerhetskopian av din rapportserverdatabas, till exempel C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

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

    Du hittar filpositionen i kolumnen Position för utdata.

    Skärmbild av en RESTORE HEADERONLY instruktion i ett SQL Server Management Studio frågefönster. I utdata är kolumnen Position markerad.

    Du kan köra en liknande instruktion för att hitta filpositionen för den tillfälliga databasen:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • Argumentet NORECOVERY utför den första återställningen. Det här argumentet håller databasen i ett RESTORING tillstånd, vilket ger dig tid att granska loggsäkerhetskopior för att avgöra vilken som ska återställas.

  • Det sista steget upprepar RESTORE åtgärden med RECOVERY argumentet .

Innan du kör dessa instruktioner ersätter du följande platshållare med lämpliga värden:

Platshållare Description Example
<sökväg-till-säkerhetskopieringsmapp> Sökvägen till mappen Säkerhetskopiering för den aktuella instansen C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<path-to-new-data-folder> Sökvägen till datamappen för den nya instansen C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<logiskt namn för rapportserverdatabasen> Det logiska namnet på rapportserverdatabasen ReportServer
<rapportserver-databas-logg-logiskt-namn> Det logiska namnet på rapportserverdatabasloggen ReportServer_log
<rapportserverns-databasens-loggfilposition> Filpositionen för rapportserverns databasloggfil 2
<temporary-database-logical-name> Det logiska namnet på den tillfälliga databasen ReportServerTempDB
<tillfällig-databas-logg-logiskt-namn> Det logiska namnet på den tillfälliga databasloggen ReportServerTempDB_log
<temporär-databas-loggfil-position> Filpositionen för den tillfälliga databasloggfilen 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

Konfigurera rapportserverns databasanslutning

  1. Starta rapportservern Configuration Manager och öppna en anslutning till rapportservern.

  2. På sidan Databas väljer du Ändra databas.

  3. På sidan Ändra databas väljer du Välj en befintlig rapportserverdatabas och väljer sedan Nästa.

  4. Som Servernamn anger du den SQL Server instans som nu är värd för rapportserverdatabasen och väljer sedan Testa anslutning.

  5. När du har testat anslutningen väljer du Nästa.

  6. För Rapportserverdatabas väljer du den rapportserverdatabas som du vill använda och väljer sedan Nästa.

  7. Under Autentiseringsuppgifter anger du de autentiseringsuppgifter som rapportservern använder för att ansluta till rapportserverdatabasen och väljer sedan Nästa.

  8. Välj Nästa, och välj sedan Slutför.

Anmärkning

I en SSRS-installation måste Databasmotor för SQL Server-instansen innehålla rollen RSExecRole. Rollskapande, inloggningsregistrering och rolltilldelningar sker när du använder rapportservern Configuration Manager för att ange rapportserverns databasanslutning. Om du använder alternativa metoder, till exempel verktyget rsconfig.exe kommandotolken, är rapportservern inte i ett fungerande tillstånd. I så fall kan du behöva skriva Windows WMI-kod (Management Instrumentation) för att göra rapportservern tillgänglig. Mer information finns i Åtkomst till WMI-providern för Reporting Services.