PANTHEON™ navodila

 Kazalo
 Glavna stran - Dobrodošli v PANTHEON navodila
[Collapse]PANTHEON
 [Collapse]Vodiči za PANTHEON
  [Collapse]Vodič po PANTHEON-u
   [Expand]Pomoč
   [Expand]Nastavitve
   [Expand]Naročila
   [Expand]Proizvodnja
   [Expand]Blago
   [Expand]Servis
   [Expand]Denar
   [Expand]Kadri
   [Expand]Namizje
   [Expand]Analitika
   [Expand]Sporočila programa
   [Expand]Uradna pojasnila
   [Collapse]Sistemsko okolje
    [Expand]Pregled opravil
    [Collapse]Varnostna politika
      Kako nadgradnja vpliva na podatkovne baze
      SQL uporabniki v PANTHEON-u
      Avtomatska prijava domenskega uporabnika
     [Collapse]Varovanje podatkov na nivoju vrstic (RLS)
       Kako RLS deluje v praksi?
       Nadgradnja
       Podatkovna baza
       Spremembe kode
       Odpravljanje težav
       ARES - Način združljivosti RLS
       RLS - Vprašanja in odgovori
    [Expand]Namestitev (instalacija)
    [Expand]Avtomatsko izvajanje
    [Expand]DataLab Utilities
    [Expand]PANTHEON™
    [Expand]Administracija podatkovne baze
    [Expand]Strojna oprema
    [Expand]Referenčna integriteta
   [Expand]Dodatni programi
    Slovar izrazov
   [Expand]Zastareli produkti
  [Expand]Vodič po PANTHEON Farming
  [Expand]Vodič po PANTHEON Retail
  [Expand]Vodič po PANTHEON Vet
 [Collapse]Uporabniški priročniki za PANTHEON
  [Expand]Uporabniški priročnik za PANTHEON
  [Expand]Uporabniški priročnik za PANTHEON Retail
  [Expand]Uporabniški priročnik za PANTHEON Vet
[Collapse]PANTHEON Web
 [Collapse]Vodiči za PANTHEON Web
  [Expand]Vodič po PANTHEON Web Light
  [Expand]Vodič za PANTHEON Web Terminal
  [Expand]Vodič za PANTHEON Web Legal
  [Expand]Arhiv starih izdelkov
 [Collapse]Uporabniški priročniki za PANTHEON Web
  [Expand]Kako začeti
  [Expand]Uporabniški priročnik za PANTHEON Web Light
   Uporabniški priročnik za PANTHEON Web Terminal
  [Expand]Arhiv starih izdelkov
  [Expand]Uporabniški priročnik za PANTHEON Web Legal
[Collapse]PANTHEON Granule
 [Collapse]Vodiči za PANTHEON Granule
  [Expand]Granula Kadri
  [Expand]Granula Potni nalogi
  [Expand]Granula Dokumenti in Opravila
  [Expand]Granula Nadzorna plošča
  [Expand]Granula B2B Naročanje
  [Expand]Granula Servis na terenu
  [Expand]Inventar fiksnih sredstev
  [Expand]Granula Inventura skladišča
 [Collapse]Uporabniški priročniki za PANTHEON Granule
   Začetek
   Primer uporabe PANTHEON Granul v namišljenem podjetju
  [Expand]PANTHEON Granule in aktivacija
  [Expand]Granula Kadri
  [Expand]Granula Potni nalogi
  [Expand]Granula Dokumenti in opravila
  [Expand]Granula B2B naročanje
  [Expand]Granula Nadzorna plošča
  [Expand]Granula Servis na terenu
  [Expand]Granula Inventura osnovnih sredstev
  [Expand]Granula Inventura skladišča
   PANTHEON Granule - pogosta vprašanja in odgovori
   Arhiv
[Expand]Uporabniške strani

Load Time: 500,0011 ms
"
  1000002563 | 222177 | 374457 | Localized
Label

RLS - Vprašanja in odgovori

              

 

  1. RLS_ALL uporabnikI
  2. Dodajanje uporabnikov
  3. Brisanje uporabnikov
  4. Nasveti in triki

 

1. RLS_ALL uporabniki

RLS_ALL je poseben uporabnik na bazi podatkov brez možnosti prijave na server. 

Edini način, da ga uporabite, je z EXECUTE AS USER = 'RLS_ALL'

Ima dostop do vseh podatkov, ki so ločeni s funkcionalnostjo RLS.

Ta uporabnik se na primer uporablja za ustvarjanje agregiranih podatkov, ki so v lasti več uporabnikov.

Na primer poročilo o skupni prodaji za vse zaposlene za eno leto, vendar lahko vsak zaposleni vidi samo svojo prodajo.

Da lahko uporabnik pantheona uporablja EXECUTE AS USER = 'RLS_ALL', mora imeti dovoljenja GRANT IMPERSONATE za uporabnika RLS_ALL.

 

2. Dodajanje uporabnikov

Dodajanje uporabnikov za dostop do drugih aplikacij v PANTHEON bazo podatkov.

S PANTHEON-om lahko dodamo uporabnika:

Preverite navodila: Dodajanje in brisanje uporabnika ter Avtorizacije.

Za bolj kompleksne nastavitve, kjer želimo dodati uporabnika na več podatkovnih bazah.

Dodajanje uporabnikov in dodeljevanje avtorizacij brez pravic. Nastavimo pravico uporabnika z PANTHEON-om:

 

declare
    @v_cUserId sysname = 'SALES001'
,    @p_lang_id varchar(2)
--
,    @p_subject varchar(30) = NULL
--
,    @p_user_id int = NULL  
,    @p_contact_id int = NULL  

BEGIN
 
  select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;  

    SET @p_user_id = (SELECT anUserId FROM [dbo].[tHE_SetSubjContact] WHERE acUserId = @v_cUserId);

    set @p_contact_id = NULL;

    IF (@p_user_id IS NULL)
    BEGIN
        Exec ppa_user_create @v_cUserId, @v_cUserId, 1;
    
    select @p_subject = P.acOurCompany, @p_lang_id = PS.acLocalization from tPA_SysParam P, tPA_SysParamSys PS;
    
    SELECT @p_user_id = anUserId FROM [dbo].[tHE_SetSubjContact] WHERE acUserId = @v_cUserId;


      EXEC [dbo].[ppa_user_save]
          @p_user_id = @p_user_id OUTPUT -- @p_user_id int OUTPUT
      ,    @p_contact_id = @p_contact_id OUTPUT -- @p_contact_id int OUTPUT
      ,    @p_user_name = @v_cUserId -- sysname
      ,    @p_lang_id = @p_lang_id --  varchar(2)
      ,    @p_active = 'T' --  char(1)
      ,    @p_license_server = Null --  sysname = NULL
      ,    @p_license_database = Null --  sysname = NULL
      ,    @p_profile = Null --  varchar(10) = NULL
      ,    @p_additpersonmark = Null --  varchar(100) = NULL
      ,    @p_code = Null --  varchar(20)= NULL
      ,    @p_pin = Null --  varchar(11) = NULL
      ,    @p_foreigner = 'F'
      --
      ,    @p_subject = @p_subject --  varchar(30) = NULL
      ,    @p_name = @v_cUserId --  varchar(30) = NULL
      ,    @p_surName = @v_cUserId --  varchar(30) = NULL
      ;

    exec [dbo].[ppa_security_insert] @p_user_id, False, False;--no authorizations
    exec ppa_security_save @p_user_id, False, False;
    print @p_user_id
    exec [dbo].[ppa_authorization_security_save]
     NULL -- @p_authorization varchar(50)
    , @p_user_id -- @p_principal_id int
    , 0 -- @p_principal_type bit
    , NULL -- @p_parent_id varchar(50)
    , 0 -- @p_acquired bit
    , 0 -- @p_inherited bit
    , 0 -- @p_permission_select bit
    , 0 -- @p_permission_update bit
    , 0 -- @p_permission_delete bit
    , 32767 -- @p_permission_update_period int
    , 1 -- @p_propagate_entities bit = 0
    , Null -- @p_licence char(2) = 'MF'

    exec pPA_SysSQLLoginPswdChange @v_cUserId, Null, @v_cUserId;
  end;

  select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;  
  select * from tPA_SetDoctypeUserSecurity where anUserId = @p_user_id;
end;

 

 

3. Brisanje uporabnikov

 

declare
    @v_cUserId sysname = #USER#,
  @command nvarchar(max);
begin
    select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;

    delete from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;

    IF (DATABASE_PRINCIPAL_ID(@v_cUserId) IS NOT NULL)
    BEGIN
        SET @command = N'DROP USER ' + QUOTENAME(@v_cUserId) + N';'
        EXEC(@command);
    END;


    IF (SUSER_ID(@v_cUserId) IS NOT NULL)
    BEGIN
        SET @command = N'DROP LOGIN ' + QUOTENAME(@v_cUserId) + N';'
        EXEC(@command);
    END;

  select * from  [dbo].[tHE_SetSubjContact]    WHERE acUserId = @v_cUserId;
end;  

 

4. Namigi in triki

 

Z vzpostavljeno zaščito na ravni vrstic (RLS) to doda preprosto ločevanje uporabniških podatkov, vendar doda malo kompleksnosti pri izvajanju poizvedb za tabele, v katerih je RLS omogočen.

Cilj je čim bolj zmanjšati kompleksnosti izvajanja poizvedb.  

Uporaba v shranjenih procedurah (stored procedures)  

Izogibajte se številnim spajanjem (join) s tabelami RLS. Če morate združiti veliko tabel skupaj, je bolje, da jih združite nekaj (2-4 tabele), rezultat tega postavite v začasno tabelo (ki jo je mogoče celo pravilno indeksirati) in to začasno tabelo pridružite drugim tabelam .

To bo olajšalo delo optimizatorja poizvedb, saj je poizvedba razdeljena na več delov.  

Uporaba pri sprožilcih (triggers)  

V sprožilcih se ni treba pridružiti osnovni tabeli, da bi dobili podatke.  

Za update in insert stavek  vstavljena pseudo tabela že vsebuje nove podatke ki obstajajo v osnovni tabeli.    

Vse kar je potrebno storiti je da jih združite. 

Če imate scenarij, v katerem morate preveriti obstoj nekaterih podatkov v sprožilcu in posodobiti podatke na podlagi tega preverjanja, je bolje, da rezultate preverjanja vstavite v začasno tabelo. Preverite, ali ti podatki izpolnjujejo želeni pogoj, in jih uporabite za posodobitev osnovne tabele.

- Podpora vgrajene funkcije SQL Server za vzporednost (parallelism)

Če boste kdaj morali preveriti uporabniško ime ali prijavo SQL, pod katero se izvaja trenutni kontekst, uporabite naslednje funkcije v izbranih stavkih.

So edini, ki podpirajo vzporednost v načrtih izvajanja SQL serverja:   USER_NAME, CURRENT_USER, SUSER_NAME, SUSER_SNAME, SUSER_ID, SUSER_SID.   Katera koli druga vgrajena funkcija preprečuje upoštevanje vzporednih izvedbenih načrtov poizvedb.

 

 

 

Ali so bila ta navodila uporabna?
Vaše povratne informacije bodo prispevale k boljši pomoči.
Komentarji
Komentarji so izpostavljeni tudi na forumu.