Śledzenie, kto dokonał zmiany zidentyfikowanej przez CDC.
Wzdłuż wiersza hakowania datetime próbowałem tego samego podejścia, dodając suser_sname jako nowe pole z wartością domyślną w tabeli ścieżek zmiany cdc. Wydaje się jednak, że zwraca to właściciela procesu cdc, a nie użytkownika, który zainicjował zmianę w tabeli podstawowej. Próbowałem także original_login, ale to zwraca login do konta usługi sql. Ponownie, prawdopodobnie związany z procesem cdc, a nie z użytkownikiem, który zainicjował zmianę.
Znalazłem podobne pytanie dotyczące przepełnienia stosu, ale bez odpowiedzi innej niż śledzenie zmian z interfejsu użytkownika lub za pomocą wyzwalacza, który wydaje się pokonywać cel używania cdc. Nie chciałbym repost, ale ponieważ oryginał był na przepełnieniu stosu, pomyślałem, że spróbuję tutaj, szczególnie jeśli R2 lub 2012 wprowadziły lepszy sposób.
Krótko mówiąc: skąd mam wiedzieć, kto dokonał zmiany w przechwytywaniu danych zmian?
źródło
Możesz dodać kolumnę i mieć wyzwalacz w tabeli, aby zapełnić użytkownika podczas wstawiania / aktualizacji / usuwania, a cdc zapisuje to. Możesz pobrać nazwę użytkownika z interfejsu użytkownika, przekazując nazwę użytkownika za pomocą informacji kontekstowych lub z rzeczywistej sesji
źródło
Czy możesz dodać pole UpdatedBy do głównej tabeli, ustawić go jako domyślne na SUSER_NAME () lub ORIGINAL_LOGIN () i czy te dane zostaną wypełnione przez CDC? Wierzę, że dostarczy ci tych samych informacji, których szukasz.
źródło