Uprawnienia do funkcji

Uprawnienia do funkcji
KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
0

Witam,
mam następujący problem: z poziomu administratora w programie księgowym stworzyłem funkcję SQL typu:

Kopiuj
create function cdn.MojaFun (@nr_doc nvarchar(30))    
        returns Decimal(10,2)
        as
        
        begin
...
        end

Funkcja została zapisana na serwerze i logując się na konto administratora wszystko działa prawidłowo.

Problem pojawia się, gdy inny użytkownik chce korzystać z tej funkcji - wówczas funkcja nie działa :-(.

Mam więc pytanie w jaki sposób powinienem stworzyć tą funkcję, by każdy użytkownik mógł z niej korzystać? Tzn. jak zrobić, by ta funkcja była "publiczna"?
Oraz czy mogę to zaznaczyć od razu przy tworzeniu funkcji czy jest to niezależne zapytanie?

Z góry dziękuję za pomoc.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
0
Marcin.Miga napisał(a):

GRANT: https://msdn.microsoft.com/en-us/library/ms187965(v=sql.110).aspx
i analogicznie DENY

Czyli to będzie coś w stylu:

Kopiuj
GRANT CREATE FUNCTION cdn.MojaFun (@nr_doc nvarchar(30)) TO Database_user
        RETURNS DECIMAL(10,2)
        AS
 
        BEGIN
...
        END

??
Trochę nie rozumiem tej składni :-/

  • Rejestracja: dni
  • Ostatnio: dni
0

GRANT EXECUTE ON cdn.MojaFun TO Nazwa_uzytkownika

KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
0
kuf kuf napisał(a):

GRANT EXECUTE ON cdn.MojaFun TO Nazwa_uzytkownika

A nie da się bez określania nazwy użytkownika - tak, by funkcja była dostępna dla wszystkich użytkowników?
tzn. coś w stylu TO [ANY USER]??

  • Rejestracja: dni
  • Ostatnio: dni
1

zapewne użytkownicy należą do pewnej grupy, roli
wystarczy w miejscu na nazwę użytkownika wpisać nazwę wspólnej roli

ewentualnie możesz przypisać do public

KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
0

Dzięki.

kuf kuf napisał(a):

zapewne użytkownicy należą do pewnej grupy, roli
wystarczy w miejscu na nazwę użytkownika wpisać nazwę wspólnej roli

ewentualnie możesz przypisać do public

Czyli:

Kopiuj
GRANT EXECUTE ON cdn.MojaFun TO PUBLIC

??
A da się jakoś sprawdzić jacy są w bazie użytkownicy (zapytaniem) i do jakiej grupy/roli należą?
Wszystko robię z poziomu programu księgowego i nie mam bezpośredniego dostępu do bazy danych :/ Nie mam również dostępu do nazw tabel :/ (tzn. pośrednio mam, ale nie teraz w pracy i nie w tej wersji programu).

Z góry dziękuję za pomoc!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.