Tworzenie elementu RSExecRole

Reporting Services wykorzystuje zdefiniowaną rolę bazy danych o nazwie RSExecRole, aby przyznawać uprawnienia serwera raportów bazie danych serwera raportów. Rola RSExecRole jest tworzona automatycznie wraz z bazą danych serwera raportów. Z zasady nigdy nie powinno się go modyfikować ani przypisywać innym użytkownikom do tej roli. Jednak gdy przenosisz bazę danych serwera raportów do nowego lub innego SQL Server Database Engine, musisz odtworzyć tę rolę w bazach danych systemu Master i MSDB.

Wykonaj następujące kroki zgodnie z poniższymi instrukcjami:

  • Utworzenie i udostępnienie roli RSExecRole w bazie danych systemu głównego.

  • Utworzenie i udostępnienie roli RSExecRole w bazie danych systemu MSDB.

Note

Instrukcje w tym temacie są przeznaczone dla użytkowników, którzy nie chcą uruchamiać skryptu ani pisać kodu WMI do udostępniania bazy danych serwera raportów. Jeśli zarządzasz dużym wdrożeniem i będziesz rutynowo przenosić bazy danych, powinieneś napisać skrypt, który zautomatyzuje te kroki. Aby uzyskać więcej informacji, zobacz Access the Reporting Services WMI Provider (Uzyskiwanie dostępu do dostawcy WMI usług Reporting Services).

Zanim zaczniesz

  • Zrób kopię zapasową kluczy szyfrujących, aby móc je przywrócić po przeniesieniu bazy danych. Ten krok nie wpływa bezpośrednio na Twoją możliwość tworzenia i wdrażania RSExecRole, ale musisz mieć kopię zapasową kluczy, aby zweryfikować swoją pracę. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowych i przywracanie kluczy szyfrowania usług Reporting Services.

  • Sprawdź, czy jesteś zalogowany jako konto użytkownika z uprawnieniami administratora systemu na instancji SQL Server.

  • Sprawdź, czy usługa SQL Server Agent jest zainstalowana i działa na instancji Database Engine, którą planujesz użyć.

  • Dołącz bazy danych ReportServerTempDB oraz ReportServer. Nie musisz dołączać baz danych, aby utworzyć faktyczną rolę, ale muszą być one dołączone, zanim będziesz mógł przetestować swoją pracę.

Instrukcje ręcznego tworzenia RSExecRole są przeznaczone do wykorzystania w kontekście migracji instalacji serwera raportów. Ważne zadania, takie jak tworzenie kopii zapasowych i przenoszenie bazy danych serwera raportów, nie są omówione w tym artykule, lecz są udokumentowane w dokumentacji Database Engine.

Utwórz RSExecRole w masterze

Reporting Services wykorzystuje rozszerzone procedury przechowywane dla usługi SQL Server Agent do obsługi zaplanowanych operacji. Poniższe kroki opisują, jak przyznać roli RSExecRole uprawnienia do wykonywania procedur.

Utwórz RSExecRole w bazie danych systemu głównego za pomocą Management Studio

  1. Uruchom SQL Server Management Studio i połącz się z instancją Database Engine, która hostuje bazę danych serwera raportów.

  2. Otwarte bazy danych.

  3. Otwarte bazy danych.

  4. Otwórz Master.

  5. Otwórz Zabezpieczenia.

  6. Otwórz Role.

  7. Kliknij prawym przyciskiem myszy element Role bazy danych i wybierz pozycję Nowa rola bazy danych. Rola bazy danych – pojawia się nowa strona.

  8. W nazwie roli wpisz RSExecRole.

  9. W Właściciel wpisz dbo.

  10. Wybierz stronę Securables.

  11. Wybierz Wyszukaj. Pojawia się okno dialogowe Dodaj obiekty . Opcja Specyficzne Obiekty jest domyślnie wybrana.

  12. Kliknij przycisk OK. Pojawia się okno dialogowe Wybierz Obiekty .

  13. Wybierz typy obiektów.

  14. Wybierz rozszerzone procedury przechowywane.

  15. Kliknij przycisk OK.

  16. Wybierz przycisk Przeglądaj.

  17. Przewiń w dół listy i wybierz następujące procedury:

    1. xp_sqlagent_enum_jobs

    2. xp_sqlagent_is_starting

    3. xp_sqlagent_notify

  18. Wybierz OK, a potem wybierz OK ponownie.

  19. W wierszu Wykonaj , w kolumnie Grant , zaznacz pole zaznaczenia.

  20. Powtórz dla każdej z pozostałych procedur przechowywanych. RSExecRole musi otrzymać uprawnienia do wykonywania wszystkich trzech procedur przechowywanych.

  21. Kliknij przycisk OK, aby zakończyć.

Zrzut ekranu przedstawiający stronę Właściwości roli bazy danych.

Utworzenie RSExecRole w MSDB

Reporting Services wykorzystuje procedury przechowywane do obsługi SQL Server Agent i pobiera informacje o zadaniach z tabel systemowych do wsparcia zaplanowanych operacji. Poniższe kroki wyjaśniają, jak przyznać roli RSExecRole uprawnienia Execute dla procedur oraz uprawnienia Select do tabel.

Utwórz RSExecRole w bazie danych systemu MSDB

  1. Powtórz podobne kroki przy przyznawaniu uprawnień procedurom przechowywanym i tabelom w MSDB. Aby uprościć kroki, procedury i tabele są udostępniane osobno.

  2. Otwórz bazę danych MSD.

  3. Otwórz Zabezpieczenia.

  4. Otwórz Role.

  5. Kliknij prawym przyciskiem myszy element Role bazy danych i wybierz pozycję Nowa rola bazy danych. Pojawia się strona Ogólna.

  6. W nazwie roli wpisz RSExecRole.

  7. W polu Właściciel wpisz dbo.

  8. Wybierz stronę Securables .

  9. Wybierz Wyszukaj. Pojawia się okno dialogowe Dodaj obiekty . Opcja Określ obiekty jest domyślnie wybrana.

  10. Kliknij przycisk OK.

  11. Wybierz typy obiektów.

  12. Wybierz procedury przechowywane.

  13. Kliknij przycisk OK.

  14. Wybierz przycisk Przeglądaj.

  15. Przewiń listę elementów i wybierz następujące procedury przechowywane:

    1. sp_add_category

    2. sp_add_job

    3. sp_add_jobschedule

    4. sp_add_jobserver

    5. sp_add_jobstep

    6. sp_delete_job

    7. sp_help_category

    8. sp_help_job

    9. sp_help_jobschedule

    10. sp_verify_job_identifiers

  16. Wybierz OK, a potem ponownie OK .

  17. Wybierz pierwszą procedurę przechowywaną: sp_add_category.

  18. W wierszu Wykonaj , w kolumnie Grant , zaznacz pole wyborcze.

  19. Powtórz dla każdej z pozostałych procedur przechowywanych. RSExecRole musi otrzymać uprawnienia do wykonywania dla wszystkich 10 procedur przechowywanych.

  20. Będąc nadal na stronie Securables, wybierz ponownie Search. Pojawia się okno dialogowe Dodaj obiekty . Opcja Określ obiekty jest domyślnie wybrana.

  21. Kliknij przycisk OK.

  22. Wybierz typy obiektów.

  23. Wybierz tabele.

  24. Kliknij przycisk OK.

  25. Wybierz przycisk Przeglądaj.

  26. Przewiń listę pozycji i wybierz następujące tabele:

    1. syscategories

    2. sysjobs

  27. Wybierz OK, a potem wybierz OK ponownie.

  28. Wybierz pierwszą tabelę: syscategories.

  29. W wierszu Select, w kolumnie Grant, zaznacz pole wyboru.

  30. Powtórz dla tabeli sysjobs. RSExecRole musi otrzymać uprawnienia Select dla obu tabel.

  31. Kliknij przycisk OK, aby zakończyć.

Przesuń bazę danych serwera raportów

Po utworzeniu ról możesz przenieść bazę danych serwera raportów do nowej instancji SQL Server. Więcej informacji można znaleźć w artykule Przenieś bazy danych serwera raportów na inny komputer.

Jeśli aktualizujesz Database Engine do SQL Server 2016 lub nowszy, możesz go zaktualizować przed lub po przeniesieniu bazy danych.

Baza danych serwera raportów jest automatycznie aktualizowana, gdy serwer raportów się z nią łączy. Nie ma żadnych konkretnych kroków wymaganych do aktualizacji bazy danych.

Przywróć klucze szyfrujące i zweryfikowaj swoją pracę

Jeśli dołączyłeś bazy danych serwera raportów, powinieneś teraz móc wykonać następujące kroki, aby zweryfikować swoją pracę.

Weryfikacja operacyjności serwera raportów po przeniesieniu bazy danych

  1. Uruchom narzędzie Reporting Services Configuration i połącz się z serwerem raportów.

  2. Wybierz bazę danych.

  3. Wybierz pozycję Zmień bazę danych.

  4. Wybierz istniejącą bazę danych serwera raportów.

  5. Wpisz nazwę serwera Database Engine. Jeśli dołączyłeś bazy danych serwera raportów do nazwanej instancji, musisz wpisać nazwę instancji w tym formacie: <nazwa> serwera\<nazwa> instancji.

  6. Wybierz pozycję Testuj połączenie. Powinieneś zobaczyć okno dialogowe z napisem "Testowe połączenie zakończone sukcesem."

  7. Wybierz OK , aby zamknąć okno dialogowe, a następnie wybierz Następne.

  8. W bazie danych wybierz bazę danych serwera raportów.

  9. Wybierz Następny i ukończ czarodzieja.

  10. Wybierz klucze szyfrowania.

  11. Wybierz przycisk Przywróć.

  12. Wybierz silny plik (.snk), który zawiera kopię zapasową klucza symetrycznego używanego do odszyfrowania przechowywanych danych uwierzytelniających i połączeń w bazie danych serwera raportów.

  13. Wpisz hasło i wybierz OK.

  14. Wybierz adres URL portalu internetowego.

  15. Wybierz link, aby otworzyć portal internetowy. Powinieneś zobaczyć elementy serwera raportów z bazy danych serwera raportów.

Utworzenie roli i uprawnień RSExecRole za pomocą T-SQL

Rola ta może być również tworzona i przyznawana odpowiednie uprawnienia w bazach danych systemu, korzystając z następującego skryptu T-SQL:

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