Witam Chciałbym mieć możliwość zapisywania "na boku" wszystkich SQLi typu Insert/Update wykonywanych na bazie danych przez konkretną aplikację. Czy jest jakaś możliwość "przechwycenia" tego połączenia na bazie i zapisu tych polecen w dedykowanej tabeli? Pozdrawiam Krzysztof
MSSQL triger na bazie?
Witam Chciałbym mieć możliwość zapisywania "na boku" wszystkich SQLi typu Insert/Update wykonywanych na bazie danych przez konkretną aplikację. Czy jest jakaś możliwość "przechwycenia" tego połączenia na bazie i zapisu tych polecen w dedykowanej tabeli? Pozdrawiam Krzysztof
Krzysztof pisze: Jasne. Sluzy do tego narzedzie SQL Profiler. Jest ono dostepne w obrebie narzedzi MS SQL Server.
1. Po uruchomieniu wybierasz File -> New Trace 2. W zakladce Events wybierasz TSQL -> SQL:StmtCompleted 3. W zakladce Filters ustalasz ApplicationName (nazwa aplikacji ktora sledzisz) 4. W zakladce Filters trzeba jeszcze przefiltrowac same Insert / Update, a to mozesz zrobic wybierajac TextData 5. W zakladce General ustalasz "Save to table" i zapisujesz wszystko do tabeli.
Mam nadzieje, ze o to chodzilo
pozdrawiam
Marek Elsner
Jasne. Sluzy do tego narzedzie SQL Profiler. Jest ono dostepne w obrebie narzedzi MS SQL Server.
1. Po uruchomieniu wybierasz File - New Trace 2. W zakladce Events wybierasz TSQL - SQL:StmtCompleted 3. W zakladce Filters ustalasz ApplicationName (nazwa aplikacji ktora sledzisz) 4. W zakladce Filters trzeba jeszcze przefiltrowac same Insert / Update, a to mozesz zrobic wybierajac TextData 5. W zakladce General ustalasz "Save to table" i zapisujesz wszystko do tabeli. Mam nadzieje, ze o to chodzilo pozdrawiam Marek Elsner
Hm, nie Z Profilera nie raz korzystam, choc bardziej w celu optymalizacji tego co się dzieje. Chodziło mi o mechanizm do zaimplementowania na bazie. Dlatego w tytule dałem "triger na bazie". Wiem że taki mechanizm można osadzić w Oracle, zresztą raz z niego korzystałem do tego właśnie celu. Ale dziś pracuję z MS SQL i nie wiem co mam zrobić. Nie chcę wpisywać tego mechanizmu bezpośrednio w warstwę dostępu (choć możliwe, że w ostateczności się przeroszę z C# i napisze clasę SqlCommand). Chciałbym mieć możliwość wykorzystania jakiegoś zdarzenia na bazie, w którym dla każdej sesji część SQL'i będę sobie zapamiętywał.
Ja również Krzysztof
Jasne. Sluzy do tego narzedzie SQL Profiler. Jest ono dostepne w obrebie narzedzi MS SQL Server.
1. Po uruchomieniu wybierasz File - New Trace 2. W zakladce Events wybierasz TSQL - SQL:StmtCompleted 3. W zakladce Filters ustalasz ApplicationName (nazwa aplikacji ktora sledzisz) 4. W zakladce Filters trzeba jeszcze przefiltrowac same Insert / Update, a to mozesz zrobic wybierajac TextData 5. W zakladce General ustalasz "Save to table" i zapisujesz wszystko do tabeli. Mam nadzieje, ze o to chodzilo Hm, nie Z Profilera nie raz korzystam, choc bardziej w celu optymalizacji tego co się dzieje. Chodziło mi o mechanizm do zaimplementowania na bazie. Dlatego w tytule dałem "triger na bazie". Wiem że taki mechanizm można osadzić w Oracle, zresztą raz z niego korzystałem do tego właśnie celu. Ale dziś pracuję z MS SQL i nie wiem co mam zrobić. Nie chcę wpisywać tego mechanizmu bezpośrednio w warstwę dostępu (choć możliwe, że w ostateczności się przeroszę z C# i napisze clasę SqlCommand). Chciałbym mieć możliwość wykorzystania jakiegoś zdarzenia na bazie, w którym dla każdej sesji część SQL'i będę sobie zapamiętywał.
Krzysztof pisze: microsoft.com/poland/technet/article/art_01.mspx sqlteam.com/article/using-ddl-triggers-in-sql-server--to-capture-schema-changes
poczytaj o tym co mogą robić takie triggery