Mam do czynienia z następującym problemem: jest użytkownik, który musi wykonać procedura składowana (spTest). W ciele spTest wywoływane jest sp_trace_generateevent. sp_trace_generateevent wymaga uprawnień do śledzenia zmian i nie chcę, aby użytkownik je miał. Chciałbym, aby użytkownik mógł wykonać test spT. Jak mogę to zrobić?Wykonywanie procedury składowanej jako innego użytkownika pozwolił
Odpowiedz
Spróbuj tego:
EXECUTE AS user = 'special_user'
EXECUTE YourProcerdure
REVERT
zobaczyć te:
Understanding Context Switching<<<has examples of things like you are trying to do
Understanding Execution Context
EXECUTE AS Clause (Transact-SQL)
EXECUTE AS (Transact-SQL)
Po uruchomieniu tej określonej procedury składowanej należy utworzyć inne połączenie, używając wymaganych poświadczeń użytkownika.
Z jakiegoś powodu nie podlega programowi pomocy. Pojawia się błąd, że nie mam uprawnień do uruchamiania sp_trace_generateevent. Ale kiedy łączę się z serwerem jako specjalnym_użytkownikiem, nie mam problemów z uruchomieniem sp_trace_generateevent. Jakieś pomysły? – StuffHappens
Jak inni sugerują, można osiągnąć, co chcesz za pomocą Execute Jak klauzuli. Przykłady przykładów implementacji można znaleźć w dokumentacji Books Online dla klauzuli Execute As.
W celu dalszego czytania i lepszego zrozumienia tego tematu, to, co chcesz osiągnąć, jest objęte ochroną Context Switching.
To co zrobiłem (i udało się):
let Source = Sql.Database("server", "database",
[Query= "EXECUTE AS USER='user' EXECUTE [schema].[spname] 'parm1', 'parm2'"])
w
Source
- 1. Wykonywanie procedury składowanej przy użyciu zadania Windows Scheduler
- 2. Jak zatrzymać wykonywanie procedury składowanej przy użyciu programu SQL Server?
- 3. Wyjście z procedury składowanej
- 4. Wywoływanie procedury składowanej z parametrami
- 5. Wywoływanie procedury składowanej w codeigniter
- 6. wywoływanie procedury składowanej z solr
- 7. Porównaj dwie wersje procedury składowanej
- 8. Filtrowanie zbioru wyników procedury składowanej
- 9. pobierz parametr z procedury składowanej?
- 10. DataTable z polem bajtowym [] jako parametrem procedury składowanej
- 11. Przekazywanie Data Data do procedury składowanej jako argumentu
- 12. Jak przekazać tabelę tymczasową jako parametr do oddzielnej procedury składowanej
- 13. Asynchronizacja procedury składowanej wywołanie w T-SQL
- 14. Uzyskaj nazwę schematu aktualnie wykonywanej procedury składowanej
- 15. Podsumowanie listy obiektów z procedury składowanej
- 16. Wywołanie procedury składowanej za pomocą asp.net
- 17. Tworzenie procedury składowanej w ramach innej procedury składowanej w SQL Server 2008
- 18. Jak wyłączyć wyniki procedury przechowywanej z procedury składowanej?
- 19. Wywołanie procedury składowanej Oracle z C#?
- 20. Wywołanie procedury składowanej o typach danych XML
- 21. Przekazywanie kolejności dynamicznej według procedury składowanej
- 22. Jak zwrócić tabelę tymczasową z procedury składowanej
- 23. Sposób wykonywania procedury składowanej od Laravel
- 24. Co oznacza nowa domyślna treść procedury składowanej?
- 25. Jak zwrócić tabelę z procedury składowanej?
- 26. Znajdź wszystkie wywołania procedury składowanej w MySQL?
- 27. Powracanie wielu wartości z procedury składowanej
- 28. Udzielenie uprawnienia wykonywania do procedury składowanej na SQL Azure
- 29. Czy mogę domyślnie parametr procedury składowanej sql do wyrażenia dynamicznego?
- 30. Wykonywanie procedury składowanej w PHP: ORA-01460: niezaimplementowana lub nieuzasadniona konwersja wymagana
Z jakiegoś powodu to nie pomaga. Pojawia się błąd, że nie mam uprawnień do uruchamiania sp_trace_generateevent. Ale kiedy łączę się z serwerem jako specjalnym_użytkownikiem, nie mam problemów z uruchomieniem sp_trace_generateevent. Jakieś pomysły? – StuffHappens
from: http://msdn.microsoft.com/en-us/library/ms181362.aspx Nazwa użytkownika lub nazwa logowania określona w EXECUTE AS musi istnieć jako element główny odpowiednio w sys.database_principals lub sys.server_principals, lub instrukcja EXECUTE AS nie działa. Ponadto uprawnienia nadrzędne IMPERSONATE muszą zostać udzielone głównemu użytkownikowi. Jeśli osoba wywołująca nie jest właścicielem bazy danych lub jest członkiem stałej roli serwera sysadmin, musi ona istnieć nawet wtedy, gdy użytkownik uzyskuje dostęp do bazy danych lub wystąpienia programu SQL Server poprzez członkostwo w grupie systemu Windows. –
Ta sugestia również nie pomaga. Okazało się, że powinienem ZAZWRÓCIĆ PONOWNIE. Mimo wszystko dziekuję. – StuffHappens