Jeśli Proc A wykonuje Proc B, czy istnieje sposób dla Proc B do sprawdzenia, czy został wywołany przez A zamiast mieć parametr, w którym A przekazuje B swój identyfikator?Czy procedura składowana SQL Server może określić nazwę jej macierzystego procesu?
Na życzenie: powodem, dla którego jestem zainteresowany tym tematem, jest wielorakie 1) Ogólna wiedza, jestem pewien, że jeśli można to zrobić, wymagałoby to sprytnego użycia niektórych tabel/zmiennych systemowych, które mogą mi pomóc inne rzeczy na drodze.
2) Jak wspomnieli inni, rejestracja/audyt. Chciałbym wykonać procedurę, która loguje wpis początku, końca i komunikatu, który nie wymaga parametrów i akceptuje jeden opcjonalny parametr komunikatu określonego przez użytkownika. Pozwoliłoby to po prostu upuścić exec w górnej i dolnej części procesu, aby działało, a procedura audytowa sama zajmie się resztą.
Wiem, że te informacje są dostępne w plikach dziennika, ale ich analiza i przekazanie użytkownikom nie jest proste, a to dałoby łatwy dostęp do tych podstawowych informacji.
3) Używany w połączeniu z takiej procedury semafora uogólnionego mogłaby zapewnić, że związane z nimi procesy nie są wykonywane równocześnie, niezależnie od sesji/transakcji itp
Zrobiłem to wcześniej, aby pomóc w rejestrowaniu zdarzeń. W ważnych/problematycznych procedurach ciągle dołączam użyteczne informacje do varibale varchar (8000), ponieważ procedura wykonuje różne czynności. Gdy wystąpi błąd, wycofuję i wstawiam ten ciąg do tabeli dziennika, która zawiera wiele użytecznych informacji. Czasami wiedza, kto wezwał procedurę, pomaga i może być zapisana z innymi informacjami ... –
Tak myślałem.Taki sam jak StackTrace dla procedury składowanej. Dzięki KM. – shahkalpesh
Nie zagnieżdżam wywołań procedur tak głęboko. Użyłem tej techniki do śledzenia procedury, która została wywołana z wielu lokalizacji. Jedną rzeczą jest wiedzieć, że masz złe parametry, a inne wiedzieć, skąd pochodzą –