Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Reporting Services använder en fördefinierad databasroll kallad RSExecRole för att ge rapportserverbehörigheter till rapportserverns databas. RSExecRole-rollen skapas automatiskt med rapportserverns databas. Som regel bör du aldrig ändra den eller tilldela andra användare rollen. Men när du flyttar en rapportserverdatabas till en ny eller annan Databasmotor för SQL Server måste du återskapa rollen i Master- och MSDB-systemdatabaserna.
Använd följande instruktioner för att utföra följande steg:
Skapa och tillhandahålla RSExecRole i Master-systemets databas.
Skapa och tillhandahålla RSExecRole i MSDB:s systemdatabas.
Note
Instruktionerna i detta ämne är avsedda för användare som inte vill köra ett skript eller skriva WMI-kod för att provisionera rapportserverns databas. Om du hanterar en stor distribution och kommer att flytta databaser rutinmässigt, bör du skriva ett skript för att automatisera dessa steg. Mer information finns i Åtkomst till Reporting Services WMI-provider.
Innan du börjar
Säkerhetskopiera krypteringsnycklarna så att du kan återställa dem efter att databasen flyttats. Detta steg påverkar inte direkt din möjlighet att skapa och provisionera RSExecRole, men du måste ha en säkerhetskopia av nycklarna för att kunna verifiera ditt arbete. Mer information finns i Säkerhetskopiera och återställa Reporting Services-krypteringsnycklar.
Verifiera att du är inloggad som ett användarkonto med sysadmin-behörighet på SQL Server-instansen.
Verifiera att SQL Server Agent-tjänsten är installerad och körs på den instans av Database Engine-instansen som du planerar att använda.
Bifoga databaserna ReportServerTempDB och ReportServer. Du behöver inte bifoga databaserna för att skapa själva rollen, men de måste bifogas innan du kan testa ditt arbete.
Instruktionerna för att manuellt skapa RSExecRole är avsedda att användas i samband med migrering av en rapportserverinstallation. Viktiga uppgifter som säkerhetskopiering och flyttning av rapportserverns databas behandlas inte i denna artikel, men dokumenteras i Database Engine-dokumentationen.
Skapa RSExecRole i master
Reporting Services använder utökade lagrade procedurer för SQL Server Agent-tjänsten för att stödja schemalagda operationer. Följande steg förklarar hur man ger Exekveringsbehörigheter för procedurerna till rollen RSExecRole .
Skapa RSExecRole i huvudsystemets databas genom att använda Management Studio
Starta SQL Server Management Studio och koppla upp dig mot Database Engine-instansen som hostar rapportserverns databas.
Öppna databaser.
Öppna systemdatabaser.
Open Master.
Öppen säkerhet.
Öppna Roles.
Högerklicka på Databasroller och välj Ny databasroll. Databasrollen – Ny sida dyker upp.
I Rollnamn, skriv in RSExecRole.
I Ägare, skriv in dbo.
Välj sidan Securables.
Välj Sök. Dialogrutan Lägg till objekt visas. Alternativet Specifika objekt är valt som standard.
Välj OK. Dialogrutan Välj objekt visas.
Välj objekttyper.
Välj utökade lagrade procedurer.
Välj OK.
Välj Bläddra.
Scrolla ner i listan och välj följande procedurer:
xp_sqlagent_enum_jobs
xp_sqlagent_is_starting
xp_sqlagent_notify
Välj OK och välj OK igen.
I raden Kör, i kolumnen Bevilja, markerar du kryssrutan.
Upprepa för varje av de återstående lagrade procedurerna. RSExecRole måste beviljas exekveringsbehörigheter för alla tre lagrade procedurer.
Välj OK för att slutföra.
Skapa RSExecRole i MSDB
Reporting Services använder lagrade procedurer för SQL Server Agent-tjänsten och hämtar jobbinformation från systemtabeller för att stödja schemalagda operationer. Följande steg förklarar hur man ger Execut-behörigheter för procedurerna och Select-behörigheterna på tabellerna till RSExecRole.
Skapa RSExecRole i MSDB-systemdatabasen
Upprepa liknande steg för att ge behörigheter till lagrade procedurer och tabeller i MSDB. För att förenkla stegen tillhandahåller du de lagrade procedurerna och tabellerna separat.
Öppna MSDB.
Öppen säkerhet.
Öppna Roles.
Högerklicka på Databasroller och välj Ny databasroll. Generalsidan dyker upp.
I Rollnamn, skriv in RSExecRole.
I Ägare, skriv in dbo.
Välj sidan Securables .
Välj Sök. Dialogrutan Lägg till objekt visas. Alternativet Specificera objekt är valt som standard.
Välj OK.
Välj objekttyper.
Välj lagrade procedurer.
Välj OK.
Välj Bläddra.
Scrolla ner i listan med objekt och välj följande lagrade procedurer:
sp_add_category
sp_add_job
sp_add_jobschedule
sp_add_jobserver
sp_add_jobstep
sp_delete_job
sp_help_category
sp_help_job
sp_help_jobschedule
sp_verify_job_identifiers
Välj OK, och välj sedan OK igen.
Välj den första lagrade proceduren: sp_add_category.
På raden Kör, i kolumnen Bevilja, markerar du kryssrutan.
Upprepa för varje av de återstående lagrade procedurerna. RSExecRole måste beviljas exekveringsbehörighet för alla 10 lagrade procedurer.
Fortfarande på sidan Securables , välj Sök igen. Dialogrutan Lägg till objekt visas. Alternativet Specificera objekt är valt som standard.
Välj OK.
Välj objekttyper.
Välj Tabeller.
Välj OK.
Välj Bläddra.
Scrolla ner i listan med objekt och välj följande tabeller:
Syskategorier
sysjobs
Välj OK och välj OK igen.
Välj den första tabellen: syscategories.
I Select-raden , i kolumnen Bidrag , markera kryssrutan.
Upprepa för sysjobs-tabellen. RSExecRole måste beviljas Select-behörigheter för båda tabellerna.
Välj OK för att slutföra.
Flytta rapportserverns databas
Efter att du skapat rollerna kan du flytta rapportserverdatabasen till en ny SQL Server-instans. För mer information, se Flytta rapportserverns databaser till en annan dator.
Om du uppgraderar Database Engine till SQL Server 2016 eller senare kan du uppgradera den antingen före eller efter att du flyttat databasen.
Rapportserverns databas uppgraderas automatiskt när rapportservern ansluter till den. Det finns inga specifika steg som krävs för att uppgradera databasen.
Återställ krypteringsnycklar och verifiera ditt arbete
Om du bifogade rapportserverns databaser bör du nu kunna genomföra följande steg för att verifiera ditt arbete.
Verifiera rapportserverns funktion efter en databasflytt
Starta Reporting Services Configuration Tool och koppla upp dig mot rapportservern.
Välj Databas.
Välj Ändra databas.
Välj Välj en befintlig rapportserverdatabas.
Ange servernamnet på Database Engine. Om du kopplade rapportserverdatabaserna till en namngiven instans måste du ange instansnamnet i detta format: <servername>\<instancename.>
Välj Testa anslutningen. Du bör se en dialogruta som säger "Testanslutning lyckad."
Välj Ok för att stänga dialogrutan och välj sedan Nästa.
I databasen, välj rapportserverns databas.
Välj Nästa och slutför trollkarlen.
Välj krypteringsnycklar.
Välj Återställ.
Välj den starka filen (.snk) som innehåller säkerhetskopian av den symmetriska nyckeln som används för att dekryptera lagrade inloggningsuppgifter och anslutningsinformation i rapportserverns databas.
Ange lösenordet och välj OK.
Välj webbportalens URL.
Välj länken för att öppna webbportalen. Du bör se rapportserverns objekt från rapportserverns databas.
Skapa RSExecRole-rollen och behörigheterna genom att använda T-SQL
Rollen kan också skapas, och tillämpliga behörigheter beviljas, på systemdatabaserna genom att använda följande T-SQL-skript:
USE master;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.xp_sqlagent_enum_jobs TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_is_starting TO [RSExecRole];
GRANT EXECUTE ON dbo.xp_sqlagent_notify TO [RSExecRole];
GO
USE msdb;
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE [type] = 'R' AND [name] = 'RSExecRole') BEGIN
CREATE ROLE [RSExecRole];
END
GRANT EXECUTE ON dbo.sp_add_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobserver TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_add_jobstep TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_delete_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_category TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_job TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_help_jobschedule TO [RSExecRole];
GRANT EXECUTE ON dbo.sp_verify_job_identifiers TO [RSExecRole];
GRANT SELECT ON dbo.syscategories TO [RSExecRole];
GRANT SELECT ON dbo.sysjobs TO [RSExecRole];
GO
Relaterat innehåll
- Flytta rapportserverdatabaser till en annan dator (inbyggt SSRS-läge)
- Skapa en databas för rapportserver i internt läge (Report Server Configuration Manager)
- Vad är Report Server-konfigurationshanteraren (native-läge)?
- Säkerhetskopiera och återställa KRYPTERINGSnycklar för SQL Server Reporting Services (SSRS)
- Prova att fråga på Reporting Services-forumet