[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.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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.pldoc.pisz.plpdf.pisz.pllunadance.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 |
|