SQL Server Table Change Tracking Software

In 2009, EmpireCLS needed the ability to audit all table changes to see which fields were changed by which user or system at any point in time.

We analyzed the out-of-box SQL Server change tracking framework but it fell short in several areas, the most important of which was not being easy to maintain when adding new columns to a table that was being tracked.

We designed and implemented a custom generic solution for EmpireCLS that easily handled what was needed in this environment. We used a services of triggers in SQL, a back-end C# service, and a separate reporting database with a common set of SSRS reports to view the changes.

The SQL triggers and temporary tables could be generated via a single stored procedure that would interrogate the system tables for column names and types. This stored procedure would also do full diffs of the source tables so that column additions were automatically handled. Bringing a new table or an additional column could be done in seconds with no risk or change to the backend service or reporting infrastructure.

The backend service was generic and would infer the list of tables via a separate schema in SQL Server. The service would then handle batches of before and after data records, do diffs, and create the appropriate header / detail history tables in the reporting database. Only changed columns would end up being saved, which each column change equating to a detail row with before and after values, all details of the change where bound to a single header containing the change time and user.

Technologies… SQL Server, SSRS, C#, ado.net

Email and SMS Software

In 2009, EmpireCLS needed to migrate their customer email notification service off of Linux. We built an extensible framework that allowed EmpireCLS to easily add custom email and SMS notifications easily and with little risk.

A Plug-in architecture that could easily add SMS and Email specific formatting logic without changing common infrastructure code for sending and queue processing.

Technologies… C#, SQL Server, Exchange

Cache Software

In 2008, EmpireCLS needed to have a real-time display of current reservation data for it’s new dispatch system. Because of the number of client applications and the frequency of reservation data changes the dispatch application could NOT poll the SQL Server database directly.

This service monitored the relevant reservation data and cached up to the minute changes for access by all dispatch applications. The decreased the load on SQL Server and allowed the dispatch application to operate as fast as possible by just getting diffs of the datasets that they were working with.

Technologies… C#, SQL Server