Mam problemy z wykonaniem funkcji.
Oto co zrobiłem:
- Utwórz funkcję za pomocą SQL Server Management Studio. Zostało pomyślnie utworzone.
- Następnie spróbowałem uruchomić nowo utworzoną funkcję i oto, co otrzymuję:
Odmówiono uprawnienia EXECUTE do obiektu „xxxxxxx”, bazy danych „zzzzzzz”, schematu „dbo”.
sql-server
upendra parmar
źródło
źródło
GO
iCreate
doGOCreate
. Inne błędy składniowe również wydają się powodować ten błąd.Odpowiedzi:
Wygląda na to, że musisz przyznać uprawnienia do wykonania użytkownikowi (lub grupie, której jest on częścią) dla danej procedury składowanej.
Na przykład, mógłby udzielić dostępu w ten sposób:
źródło
GRANT EXEC TO PUBLIC
aby przyznać dostęp do wszystkich obiektów w bazie danychNajlepszym rozwiązaniem, jakie znalazłem, jest utworzenie nowej roli bazy danych, tj
a następnie udzielić tej roli uprawnienia exec.
Teraz, gdy przejdziesz do właściwości użytkownika i przejdziesz do mapowania użytkowników i wybierzesz bazę danych, do której dodałeś nową rolę, teraz nowa rola będzie widoczna w członkostwie roli bazy danych dla: sekcji
Aby uzyskać więcej informacji, przeczytaj cały artykuł
źródło
EXEC sp_addrolemember @rolename = N'db_executor', @membername = N'processAPI'
W Sql Server Management Studio:
po prostu idź do
security->schema->dbo
.Kliknij dwukrotnie dbo, a następnie kliknij
permission tab->(blue font)view database permission
i przewiń w poszukiwaniu wymaganych pól, takich jak"execute".
Pomóż samemu wybrać użyciegrant
lubdeny
sterowanie. Mam nadzieję, że to pomoże :)źródło
musisz uruchomić coś takiego
źródło
[domain\user]
, a nie'domain\user'
Działa to, jeśli próbujesz udzielić uprawnień użytkownikom lub rolom.
Za pomocą Microsoft SQL Server Management Studio:
źródło
Udzielenie takiego pozwolenia może być niebezpieczne, szczególnie jeśli twoja aplikacja internetowa używa tej samej nazwy użytkownika.
Teraz użytkownik sieci (i cała sieć) ma również uprawnienia do tworzenia i upuszczania obiektów w bazie danych. Pomyśl o iniekcji SQL!
Zalecam przyznanie uprawnień do wykonywania tylko określonemu użytkownikowi na danym obiekcie w następujący sposób:
Teraz użytkownik myusernameNoquotes może wykonać procedurę przechowywanąProcedureNameNoquotes bez innych niepotrzebnych uprawnień do cennych danych.
źródło
Nie masz prawa go wykonać, chociaż masz wystarczające uprawnienia do jego utworzenia.
Aby uzyskać więcej informacji, zobacz GRANT Uprawnienia do obiektów (Transact-SQL)
źródło
Jeśli masz problemy, takie jak pytanie zadane powyżej, dotyczące wyjątku zgłoszonego podczas wykonywania rozwiązania, problemem jest pozwolenie, które nie zostało poprawnie przyznane użytkownikom tej grupy na dostęp do bazy danych / procedury składowanej. Wszystko, co musisz zrobić, to zrobić coś takiego, co mam poniżej, zastępując mój nazwą bazy danych, procedur przechowywanych (funkcji) i typem uprawnień lub roli lub komu udzielasz dostępu.
/ ****** Obiekt: StoredProcedure [dbo]. [GetAllEmployees] Data skryptu: 01/27/2016 16:27:27 ****** /
źródło
Możesz dać wszystkim uprawnienia do wykonywania:
„Publiczna” to domyślna rola bazy danych, której wszyscy użytkownicy są członkami.
źródło
Napotkałem ten sam problem i rozwiązałem problem, dając użytkownikowi bazy danych uprawnienia db_owner.
źródło
Jeśli uczynisz tego użytkownika specjalnym dla konkretnej bazy danych, być może nie ustawisz go jako db_owner w „mapowaniu użytkowników” właściwości
źródło
lepiej zmodyfikuj role serwera, które zostały zaprojektowane z myślą o uprawnieniach bezpieczeństwa. dodaj rolę serwera sysadmin do swojego użytkownika. dla większego bezpieczeństwa możesz mieć swoje niestandardowe role serwera. ale to podejście da ci teraz to, czego chcesz.
Powodzenia
źródło
oto jak udzielić pozwolenia jednemu użytkownikowi niepublicznemu,
Bezpośrednie zapytanie:
Use MyDatabase Grant execute on [dbo].[My-procedures-name] to [IIS APPPOOL\my-iis-pool] Go
źródło