Davide Mauri Blog

Experiences with SQL Server

DTLoggedExec Here comes CSV Logging!

In these last days I've released the latest version of DTLoggedExec. Now it has reached version

I planned the release to be done in May, but I added a l lot of stuff and then I realized that logging so much information without being able to automatically import it into SQL Server for further analsys has no clue.

So I decided to hold on a little bit and also improve the DTLoggedExec db that I firstly released with version just as an example of what can be done with the Data Profiling featture, and that news has grown to be official repository of all the data the DTLoggedExec can log.

Of course with the added capability to log to CSV file, this feature was really needed.

This new feature brought also the need to be able to associate CSV Logging with DataFlow Profiling, so I had to change the code a little bit so that everything can get a consistent and unique Execution ID, which allows the data to be tied all togheter, not matter if it comes from DataFlow Profiling or CSV Logging.

Add this with some bug fixed and a very handy feature that allows you to get rid of the complex SET syntax to make yout package parametric and you can imagine that some work had to be done.

Plus, add that before releasing any new release I want to test it for a while on myself, just to be sure that very basic bug does get unnoticed, at voilà, some months of delay.

Anyway, now its there, and I'm sure you'll enjoy the new features:

  • Added logging of expression used by variables for which the "EvaluateAsExpression" property is true.
  • Fixed the bug the prevented to log properly Custom Events (CodePlex id# 20513)
  • Fixed a bug that prevented to log properly all the container properties in case of error
  • Added support for "Params" commandline options
  • Released CSV log provider
  • Handled exceptions when loaded configuration tries to configure non-existing objects
  • Changed the ILogProvider interface to allow Log Provider to get the ExecutionGUID value from the main program
  • Changed the Console and Null log providers to support the new ILogProvider interface
  • Changed the header of the *.dtsDataFlowProfile in order to store package, version and execution GUIDs
  • Changed .sql files to import Profiled DataFlow data in SQL Server
  • Updated DTLoggedExecDB database
  • Released scripts to load CSV data proceduced by CSV Log Provider into SQL Server

I'm now in the process of updating the documentation. I plan to be able to do it during this week and weekend, but using the new feature is quite easy and as usual I have included in released code some samples to show how to use them.

So, if you cannot wait, go and play, otherwise just hold on a while, while I update the documentation here:


One last notice about the new CSV Log Provider. This is completely functional and you can start to use it right now, but is just the first release. I plan to improve it more and more. I have to deep test it for performance impact, so play with it freely but be warned that performance may be lower then the Console Log Provider. Inside it pack data into XML format so that it can be stored in SQL Server easily, but this has some costs (You know, XML is flexble, standard, whatever you want, but surealy is not performant).

In future I plan to change a little bit the Log Provider interface again so that everything can be redirected to the Log Provider, also the initial messages, so that in the CSV log can be put everything can currently be found in the Console Log Provider, event the initialization messages, so inside SQL Server you can have the complete picture of what happened, right from the initialization of DTLoggedExec, just as it now happens with the Console Log Provider. Anyway, and I wanted to share it with you so that you can have an idea of future improvements, but for now just playing with the CSV log provider can solve a lot of nice problems. For example Auditing packages :).

More on that coming.... ;)