Article View: pl.comp.lang.delphi.bazy-danych
Article #82997Re: MSSQL Trigger z parametrem
From: jast
Date: Tue, 25 Aug 2020 06:18
Date: Tue, 25 Aug 2020 06:18
23 lines
2946 bytes
2946 bytes
W dniu 2020-08-24 o 10:52, Pancio pisze: > Witam wszystkich, > Mam nadzieję, że grupa jeszcze nie umarła, choć od dłuższego czasu niewiele się tutaj dzieje. No ale do rzeczy. > Mam sobie bazę w MS SQL Server 2014 (wersja Express). Do bazy użytkownicy łączą się z aplikacji w Delphi XE7 z poziomu FireDAC jako jeden użytkownik "sa" (tak, wiem, że nie tak powinno to wyglądać, ale jednak jest jak jest). > Oczywiście jest tabela z danymi zalogowanych użytkowników i nadanych im numerów ID. > No i o ile cała aplikacja bazodanowa działa nawet dość sprawnie i generalnie spełnia swoje zadania, to nadszedł czas rozbudowy aplikacji o dziennik zdarzeń. Chodzi po prostu o to, żeby w osobnej tabeli np. "Dziennik" zapisywane były zmiany typu kto, co i w jakiej tabeli zmienił. > Sprawę w tym momencie załatwiłby wyzwalacz, ale nie mam pomysłu w jaki sposób do triggera przekazać jeden parametr będący numerem ID użytkownika, który danej zmiany dokonał. > Czy w ogóle można to jakoś wykonać? Alternatywą jest obsługa takiego dziennika nie z poziomu bazy danych, a z samej aplikacji. Tyle, że roboty z tym trochę więcej. > Bardzo proszę o pomoc osoby, które już zetknęły się z podobnym problemem. > > Dzięki, > Pancio Rzuć okiem na to https://www.red-gate.com/simple-talk/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/ Drobny problem może być zapisanie ID użytkownika. Najprościej zrobić to przez tabelę logowań, w której będziesz zapisywał logowania użytkowników do aplikacji, zapisując w niej identyfikator sesji procesu (SPID pobrany przez select @@SPID). W triggerze pobierzesz ten SPID i z tabeli logowań odczytasz dane użytkownika. Oczywiście po wylogowaniu użytkownika z aplikacji stosowny rekord z tabeli logowań należy usunąć :-)
Technical Details
Message-ID:
<5f44ad20$0$520$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news.uzoreto.com!aioe.org!peer03.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news.uzoreto.com!aioe.org!peer03.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Subject: Re: MSSQL Trigger z parametrem Newsgroups: pl.comp.lang.delphi.bazy-danych References: <4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com> From: jast <jast0@vp.pl> Date: Tue, 25 Aug 2020 08:18:21 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <4f16cba6-1123-4d58-9112-5fd103fb749en@googlegroups.com> Lines: 24 Message-ID: <5f44ad20$0$520$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 5.173.66.157 X-Trace: 1598336289 unt-rea-b-01.news.neostrada.pl 520 5.173.66.157:51408 X-Complaints-To: abuse@news.neostrada.pl X-Received-Bytes: 2788 X-Received-Body-CRC: 1410107315 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit