![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Currently the client app connects directly to the database, like this: [client] <--> [database] For various reasons we need to develop a piece of software that can capture/log all incoming commands (queries, updates, etc.) to the database, and analyze them in various ways. This software must sit in between the client and database, like this: [client] <--> [analyzer] <--> [database] Two questions: 1) How can we make such a capturing? We need to capture *everything* send to the database. Every single command! That includes: a) select/insert/update/delete statements b) table, view and index creations and modifications c) stored procedures, pl/sql commands, etc |
|
d) everything else 2) Given an arbitrary database command, i.e. one of a), b), c) or d) above, how can we most easily parse it and extract which tables and/or table columns it refers to? Can SQL Server help with this? Any help would be much appreciated! |
#3
| |||
| |||
|
|
With a SQL Server backend, the story is a little more satisfying. There are tools on the market (Idera, Trillium, Guardium, etc.) that provide the type of compliance monitoring you require. |
#4
| |||
| |||
|
|
Thanks for your elaborate answer! You're right about the pl/sql thing, but luckily Access is not relevant here. We will need to perform a large amount of post processing of the data, and possibly even modify what gets captured, so we would like to perform the capturing ourselves, instead of using a third-party product. There are also a number of other reasons why we would like to do it ourselves but that's out of the scope of this thread. :-) So, does anyone know how to perform such a capturing? How do the three products mentioned in the above citation do it? |
#5
| |||
| |||
|
|
We will need to perform a large amount of post processing of the data, and possibly even modify what gets captured, so we would like to perform the capturing ourselves, instead of using a third-party product. There are also a number of other reasons why we would like to do it ourselves but that's out of the scope of this thread. :-) So, does anyone know how to perform such a capturing? |
#6
| |||
| |||
|
|
With a SQL Server backend, the story is a little more satisfying. There are tools on the market (Idera, Trillium, Guardium, etc.) that provide the type of compliance monitoring you require. Thanks for your elaborate answer! You're right about the pl/sql thing, but luckily Access is not relevant here. |
|
We will need to perform a large amount of post processing of the data, and possibly even modify what gets captured, so we would like to perform the capturing ourselves, instead of using a third-party product. There are also a number of other reasons why we would like to do it ourselves but that's out of the scope of this thread. :-) |
|
So, does anyone know how to perform such a capturing? How do the three products mentioned in the above citation do it? |
#7
| |||
| |||
|
|
So, does anyone know how to perform such a capturing? How do the three products mentioned in the above citation do it? They use server-side traces - google and BOL will provide lots of information about creating and running server-side traces. |
|
Re. Banana's suggestion to use SQL Profiler, he is correct that using Profiler like this will adversely affect performance. If you want to roll your own, use server-side traces instead - properly configured and filtered, they will likely have very little affect on performance. |
#8
| |||
| |||
|
#9
| |||
| |||
|
|
It seems that a TDS proxy is the way to handle this challenge. |
![]() |
| Thread Tools | |
| Display Modes | |
| |