Szukałem na przechowywanie jakiejś postaci identyfikatora transakcji od wyzwalacza kontroli. Rozwiązaniem okazało się użycie sys.dm_tran_current_transaction, jak w tym poście SQL Server Triggers - grouping by transactions.Bieżący identyfikator transakcji w wyzwalaczu kontroli
Jednakże, nie mogą korzystać z tego, ponieważ konto użytkownika uruchomiony SQL nie będzie mieć „widoku serwera Państwo” pozwolenie i prowadzi do błędu:
Msg 297, Level 16, State 1, Line 3 The user does not have permission to perform this action.
Czy ktoś wie alternatywa do tego poglądu, że dostarczy podobny identyfikator transakcji lub sposób użycia "Z WYKONAĆ JAK" na wyzwalaczu, aby umożliwić wybór z tego widoku.
Z moich prób "WITH EXECUTE AS" wynika, że uprawnienia na poziomie serwera nie są przenoszone, co jest oczekiwane, ponieważ podszywa się pod użytkownika bazy danych.
Dzięki za dodatkowy link do tematu msdn na ten temat, bardzo pouczające. –
Witamy w klubie lol. Z tobą, jesteśmy teraz 4 osobami na planecie, które faktycznie czytają ten artykuł. –
Jeśli masz wiele wyzwalaczy, możesz wysłać zapytanie do widoku wewnątrz funkcji zdefiniowanej przez użytkownika i podpisać tę funkcję za pomocą certyfikatu (zgodnie z sugestią w odpowiedzi nr 6 na stronie http://dbaspot.com/sqlserver-programming/197082-the- any-function-statement-return-transaction-identific-id-between-begin-trans-commit-trans.html). Następnie możesz użyć tej funkcji we wszystkich wyzwalaczach. Dlatego jest to pojedynczy obiekt, który musisz ponownie podpisać, gdy zdecydujesz się na zmianę. –