ďťż
 
[MSSQL 2005] Execute as i trigger ddl ďťż
 
[MSSQL 2005] Execute as i trigger ddl
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MSSQL 2005] Execute as i trigger ddl



Krzysztof Raczkowski - 01-09-2007 00:16
[MSSQL 2005] Execute as i trigger ddl
  Witam,

Walczę od jakiegoś czasu napisaniem triggera z wykorzystaniem EXECUTE AS
w ten sposób aby trigger odpalany przez użytkownika X1 na bazie X
modyfikował dane w bazie Y (ten sam serwer) jako użytkownik Y1.

Co już przećwiczyłem ...

1) Założyłem login nazwijmy go L który jest zamapowany na użytkownika X1
w bazie X i na użytkownika Y1 w bazie Y

2) Użytkownik Y1 w bazie Y należy do db_owner, db_datareader,
db_datawriter (chyba db_owner powinno wystarczyć ...)

3) Baza Y ma ustawione TRUSTWORTHY = ON (potrzebne ?)

Jeżeli trigger jest utworzony z EXECUTE AS X1 dostaję za każdym razem:

Msg 916, Level 14, State 1, Procedure trig001, Line 0
The server principal "LoginName" is not able to access the database
"DatabaseName" under the current security context.

Nie przy tworzeniu triigera lecz po jego uruchomieniu w wyniku
modyfikacji danych.

Problem opisany jest tu: http://support.microsoft.com/kb/913422

Jeżeli trigger jest bez EXECUTE AS - wszystko działa ...

Cytując support:

"
This issue occurs when all the following conditions are true:
• The owner of the database is a Windows authenticated user.
• You create the DDL trigger by using a login that has the control
server permissions, and no user is mapped to this login in the database.
• You use the EXECUTE AS SELF clause or you specify the module to
execute as the login in the DDL trigger.
"

Ad.1: onwer w obydwu bazach jest sa - więc odpada
Ad.2: trigger jest tworzony przez użytkownika X, który w kontekście
serwera należy tylko do public - więc odpada ...., to samo zresztą jest
jak tworze go jako sa
Ad.3 nic takiego nie robię ....

Więc ?? Czy ktoś już się z tym spotkał ...? pewnie coś przeoczyłem ..
tylko co ?? :)

Zastanawia mnie jeszcze to w artykule (podane jako jedno z rozwiązań)

"Grant explicit permissions for the login on the particular database.
For more information about how to grant database permissions, see the
"GRANT Database Permissions (Transact-SQL)" topic in SQL Server 2005
Books Online."

Czy mapując login na użytkownika który ma role j.w. .... nie nadaję
uprawnień 'explicit' ???

--
Pozdrawiam
K. Raczkowski





brejk - 01-09-2007 00:16

  Dwie rzeczy, jakie bym zrobil:

1. Wlasciciel bazy X (tej, w ktorej bedzie trigger) na sa.
2. TRUSTWORTHY bazy X (a nie Y, jak napisałes) na ON.

Pozdrawiam
brejk




Krzysztof Raczkowski - 01-09-2007 00:17

  brejk pisze:
> 2. TRUSTWORTHY bazy X (a nie Y, jak napisałes) na ON.
>

To pomogło - wielkie dzięki :) źle zrozumiałem ten parametr

--
Pozdrawiam
K. Raczkowski
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= [MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?= MSSQL Express czy Oracle Express [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?= [MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?= Pobierananie danych z innej bazy danych w MSSQL MSSQL , funkcja pobierajaca sama date (bez czasu) w funkcji [mssql] insert do tabeli na podstawie danych z innej tabeli
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunadance.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com