Wybrani użytkownicy przypisani są tylko do grupy DOMENA\Group_DevelopmentBasic. Grupa ta przeznaczona jest dla początkujących deweloperów, która ma dostęp tylko do kilku baz produkcyjnych z rolą db_datareader. W wyniku wstępnych testów okazało się że użytkownicy z DOMENA\Group_DevelopmentBasic,
nie mają:
- dostępu do jobów – należy umożliwić samo przeglądanie
- dostępu do metadanych SSISDB – należy umożliwić samo przeglądanie,
- dostępu do katalogu z projektami SSIS – – należy umożliwić samo przeglądanie
- możliwości uruchamiania „Execution Plan” – – należy umożliwić samo przeglądanie
Rozwiązania problemów:
- Dodanie do roli SQLAgentReaderRole w bazie msdb grupy DOMENA\Group_DevelopmentBasic
(dostęp do Jobów, możliwość podglądu bez zmian – rozwiązanie problemu nr I)
3 | ALTER ROLE [SQLAgentReaderRole] ADD MEMBER [DOMENA\Group_DevelopmentBasic] |
- Dodanie do roli db_datareader w bazie SSISDB grupy DOMENA\Group_DevelopmentBasic
(możliwość odczytu tabel z metadanymi – rozwiązanie problemu nr II):
3 | ALTER ROLE [db_datareader] ADD MEMBER [DOMENA\Group_DevelopmentBasic] |
- Dodanie do roli db_ssisoperator w bazie msdb grupy DOMENA\Group_DevelopmentBasic
(dostęp do katalogów SSIS, możliwość podglądu bez zmian – – rozwiązanie problemu nr III)
3 | ALTER ROLE [db_ssisoperator] ADD MEMBER [DOMENA\Group_DevelopmentBasic] |
- Dodanie uprawnień do planu wykonania dla baz, których konto ma dostęp
(rozwiązanie problemu nr IV):
3 | GRANT SHOWPLAN TO [DOMENA\Group_DevelopmentBasic] |
8 | GRANT SHOWPLAN TO [DOMENA\Group_DevelopmentBasic] |
- Po dodaniu roli db_ssisoperator w bazie msdb grupy DOMENA\Group_DevelopmentBasic okazało się, że użytkownicy mają dostęp do katalogu SSISDB, ale nie widzą w SSISDB katalogów i projektów. W tym celu należy wykonać punkty od 5 do9:
- Utworzenie roli ssis_reader w bazie SSISDB w celu umożliwienia dostępu do katalogów i projektów SSIS. Rola ta będzie wymagana również przy modyfikacji widoku catalog.executions w bazie SSISDB – dokładny opis problemu w pkt. 9
4 | CREATE ROLE [ssis_reader] AUTHORIZATION [dbo] |
- Dodanie do roli ssis_reader w bazie SSISDB grupy DOMENA\Group_DevelopmentBasic.
4 | ALTER ROLE [ssis_reader] ADD MEMBER [DOMENA\Group_DevelopmentBasic] |
- Dodanie uprawnień SELECT dla schemy catalog dla roli ssis_reader
4 | GRANT SELECT ON SCHEMA ::[catalog] TO [ssis_reader] |
- Nadanie uprawnień do odczytu w ramach katalogów dla roli ssis_reader
- p.m. na nazwie katalogu SSIS i z menu wybrać Properties
- Po otwarciu okna (poniżej) wybrać przycisk Browse. Po otwarciu okna zaznaczyć role ssis_reader
- W oknie Excplicit zaznaczyć GRANT dla Permisions: ”Reader” i „Reader Objects”

- Wykonując wszystkie powyższe czynności użytkownicy z grupy DOMENA\Group_DevelopmentBasic mają dostęp do projektów i pakietów w katalogach SSIS.
- W momencie gdy użytkownicy próbują dla dowolnego pakietu wybrać z menu pozycje Reports->All Executions lub jakikolwiek inny raport to zwracany jest pusty raport.
Przypominam, że użytkownicy mają wyłącznie prawa do odczytu danych (rola db_datareader ) na bazie SSISDB i nie są przypisani do roli ssis_admin, a ich rola serwerowa to public.
- Spowodowane jest to tym, że podczas wyświetlania raportów, SSMS korzysta z widoków SSISDB.catalog.executions i SSISDB.catalog.event_messages. Z widoków tych mogą korzystać tylko użytkownicy, którzy są przypisani do roli ssis_admin lub są przypisani do roli serwerowej sysadmin.
W Widokach tych mamy warunek:
SSISDB.catalog.executions
01 | ALTER VIEW [catalog].[executions] |
04 | SELECT execs.[execution_id], |
09 | ON ossysinfos.[operation_id]= execs.[execution_id] |
10 | WHERE opers.[operation_id] in ( SELECT id FROM [internal].[current_user_readable_operations]) |
11 | OR (IS_MEMBER( 'ssis_admin' ) = 1) |
12 | OR (IS_SRVROLEMEMBER( 'sysadmin' ) = 1) |
Należy widok ten zmodyfikować do postaci:
01 | ALTER VIEW [catalog].[executions] |
03 | SELECT execs.[execution_id], |
08 | ON ossysinfos.[operation_id]= execs.[execution_id] |
09 | WHERE opers.[operation_id] in ( SELECT id FROM [internal].[current_user_readable_operations]) |
10 | OR (IS_MEMBER( 'ssis_admin' ) = 1) |
12 | OR (IS_SRVROLEMEMBER( 'sysadmin' ) = 1) OR (IS_MEMBER( 'ssis_reader' ) = 1) |
13 | SSISDB.catalog.event_messages |
SSISDB.catalog.event_messages
01 | ALTER VIEW [catalog].[event_messages] |
03 | SELECT opmsg.[operation_message_id] as [event_message_id], |
08 | WHERE opmsg.[operation_id] in ( SELECT [id] FROM [internal].[current_user_readable_operations]) |
09 | OR (IS_MEMBER( 'ssis_admin' ) = 1) |
10 | OR (IS_SRVROLEMEMBER( 'sysadmin' ) = 1) |
Należy widok ten zmodyfikować do postaci:
01 | ALTER VIEW [catalog].[event_messages] |
03 | SELECT opmsg.[operation_message_id] as [event_message_id], |
07 | WHERE opmsg.[operation_id] in ( SELECT [id] FROM [internal].[current_user_readable_operations]) |
08 | OR (IS_MEMBER( 'ssis_admin' ) = 1)</pre> |
10 | <pre> OR (IS_SRVROLEMEMBER( 'sysadmin' ) = 1) OR (IS_MEMBER( 'ssis_reader' ) = 1) |
Tym samym umożliwiamy użytkownikom przypisanym do roli ssis_reader korzystanie z tych widoków.
Linki:
http://dba.stackexchange.com/questions/78341/permission-to-view-execution-report-in-ssis-catalog
http://sqlwriter.blogspot.com/2013/12/ssiscatalog-report-execution-permission.html