Do prawidłowego działania modelu Obiekty Wspólne, konto użytkownika, który uruchamia przeliczenie modelu musi posiadać odpowiednie uprawnienia do danych.
W ramach rozwiązania wszystkie nowe obiekty strukturalne tworzone są wewnątrz jednego dedykowanego schematu o nazwie BI. Schemat ten może zostać stworzony ręcznie, dzięki czemu użytkownik nie potrzebuje globalnych uprawnień do tworzenia nowych schematów w bazie danych.
Uprawnienia do zarządzania strukturą oraz modyfikacji danych zostają zawężone wyłącznie do tego schematu. Wyjątkiem są uprawnienia do odczytu danych oraz uruchamiania procedur, które ze względów procesowych muszą zostać nadane na poziomie całej bazy danych.
1. Uprawnienia na poziomie bazy danych
Model wymaga uprawnień do pobierania danych z zewnętrznych schematów bazy źródłowej:
-
SELECT – pełny odczyt ze wszystkich tabel i widoków źródłowych
-
EXECUTE – uruchamianie procedur i funkcji w schematach źródłowych
2. Uprawnienia w obrębie schematu BI
W obrębie automatycznie utworzonego schematu BI, model Obiekty Wspólne odpowiada za czyszczenie, agregację i strukturę danych. Wymaga to pełnych uprawnień:
GRANT CONTROL ON SCHEMA::BI TO [NazwaUzytkownika];
Uprawnienie CONTROL (nadawane przez powyższy skrypt) zapewnia użytkownikowi pełną autonomię wewnątrz tego schematu, co obejmuje:
- CREATE / ALTER / DROP tabel wymiarów i faktów, widoków logicznych oraz procedur i funkcji.
- SELECT / INSERT / UPDATE / DELETE – Pełny dostęp do zapisu i modyfikacji danych podczas procesów zasilania, czyszczenia i odświeżania modeli.
- EXECUTE procedur składowanych wdrożonych w schemacie BI w celu przeliczenia kolejnych modeli (Logistyka, Płatności, Księgowość, HR oraz submodele).
3. Tworzenie i konfiguracja schematu BI
Skrypt automatycznie tworzy w bazie danych schemat o nazwie BI (jeśli jeszcze nie istnieje) oraz nadaje wskazanemu użytkownikowi procesowemu pełne uprawnienia zarządzania nim. Dodatkowo konfiguruje bezpieczne środowisko uruchomieniowe poprzez ustawienie języka polskiego i nieblokującego poziomu izolacji transakcji, na koniec zwracając status powodzenia operacji.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET LANGUAGE Polish;
-- 1. Zdefiniuj nazwę użytkownika bazy danych, który ma zarządzać modelem
DECLARE @UserName sysname = N'NazwaUzytkownikaProcesowego';
DECLARE @sql_create NVARCHAR(MAX) = N'CREATE SCHEMA BI;';
DECLARE @sql_grant NVARCHAR(MAX);
-- 2. Automatyczne tworzenie schematu BI (jeśli nie istnieje)
IF NOT EXISTS (SELECT 1 FROM sys.schemas WHERE [name] = 'BI')
BEGIN
EXEC sp_executesql @sql_create;
PRINT 'Schemat BI został utworzony pomyślnie.';
END
ELSE
BEGIN
PRINT 'Schemat BI już istnieje w bazie danych.';
END;
-- 3. Nadanie pełnych uprawnień (CONTROL) do schematu dla wskazanego użytkownika
IF NULLIF(@UserName, '') IS NOT NULL
BEGIN
SET @sql_grant = N'GRANT CONTROL ON SCHEMA::BI TO ' + QUOTENAME(@UserName) + N';';
EXEC sp_executesql @sql_grant;
PRINT 'Nadano uprawnienie CONTROL ON SCHEMA::BI dla użytkownika ' + @UserName + '.';
END;
SELECT T_Status_ID = 1, T_Status = 'Success'; [NazwaUzytkownika];
Jeżeli skrypt tworzący schemat BI nie jest uruchamiany z konta z uprawnieniami sysadmin, użytkownik wykonujący skrypt musi bezwzględnie posiadać w docelowej bazie danych następujące uprawnienia:
CREATE SCHEMA – uprawnienie do tworzenia nowych schematów w bazie.
GRANT CONTROL (lub przynajmniej rola db_owner) – uprawnienie niezbędne do przekazania pełnej kontroli nad schematem BI na rzecz konta procesowego.