[MS SQL] dodawanie użytkownika do bazy
Krzysztof Wiśniewski - 28-02-2006 13:13
[MS SQL] dodawanie użytkownika do bazy
W mojej aplikacji wygodnie jest mi trzymać nazwy użytkowników w jednej z tabel. Chciałbym, aby dodanie rekordu do tej tabeli spowodowało wstawienie loginu na serwer i utworzenie użytkownika w tej bazie. Napisałem więc trigger:
CREATE TRIGGER JakasNazwa ON dbo.TabelaJuzerow FOR INSERT AS BEGIN DECLARE @JakiLogin varchar(30); SELECT @JakiLogin = Login FROM inserted; exec sp_grantdbaccess @JakiLogin; /* ... */ END
Ale zostałem potraktowany komunikatem, że procedura sp_grantdbaccess nie może być uruchomiona w ramach transakcji. Jak więc można zrealizować mój pomysł?
-- Pozdrawiam, Krzysiek
Grzegorz Danowski - 13-03-2006 11:19
=?iso-8859-2?Q?Re:_=5BMS_SQL=5D_dodawanie_u=BFytkownika_do_ba zy?=
Użytkownik "Krzysztof Wiśniewski" <ktuvok@poczta.onet.pl> napisał w wiadomości news:dtvtmc$gd0$1@news.onet.pl... (...) > Napisałem więc trigger: > > CREATE TRIGGER JakasNazwa ON dbo.TabelaJuzerow (...)
> Ale zostałem potraktowany komunikatem, że procedura sp_grantdbaccess nie > może być uruchomiona w ramach transakcji. Jak więc można zrealizować mój > pomysł?
Zamiast dodawać userów w triggerze dodawaj ich w procedurze dodającej rekordy do tabeli TabelaJuzerów.
Pozdrawiam Grzegorz
Krzysztof Wiśniewski - 13-03-2006 11:19
Użytkownik "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> napisał w wiadomości news:du24u9$3ek$1@inews.gazeta.pl... | Użytkownik "Krzysztof Wiśniewski" <ktuvok@poczta.onet.pl> napisał w | wiadomości news:dtvtmc$gd0$1@news.onet.pl... | (...) | > Napisałem więc trigger: | > | > CREATE TRIGGER JakasNazwa ON dbo.TabelaJuzerow | (...) | | > Ale zostałem potraktowany komunikatem, że procedura sp_grantdbaccess nie | > może być uruchomiona w ramach transakcji. Jak więc można zrealizować mój | > pomysł? | | Zamiast dodawać userów w triggerze dodawaj ich w procedurze dodającej | rekordy do tabeli TabelaJuzerów. |
Niestety, to nie takie proste - dodawanie jest po stronie aplikacji i nie korzysta z procedury przechowywanej. Obsługę juzerów rozwiązałem w międzyczasie w taki sam sposób, ale męczy mnie, dlaczego nie da się tego zautomatyzować...
A może da się jakoś wyłączyć "transakcyjność" operacji w ramach trigger'a? ;)
Pozdrawiam, Krzysiek
Marcin A. Guzowski - 13-03-2006 11:21
Krzysztof Wiśniewski napisał(a):
> A może da się jakoś wyłączyć "transakcyjność" operacji w ramach trigger'a? > ;)
Ano pewnie da się. Jeśli rzeczywiście potrzebujesz tego rozwiązania, to dodaj IF @@TRANCOUNT > 0 COMMIT TRAN linijkę przed wywołaniem procedury, która nie może być wywoływana w transakcji. Nie testowałem, ale to powinno zatwierdzić transakcję przed wywołaniem procedury, więc samo wywołanie żadną transakcja objęte już nie będzie.
-- Pozdrawiam, Marcin Guzowski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[oracle] - Oracle SQL Developer - co to jest SID?
=?ISO-8859-2?Q?[Oracle]_Wywo=B3anie_skryptu_sh_z_PL/SQL-a=3F=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.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 |
|