At an employer I worked for in the past, I was the lead developer (ok, the only developer) of an in-house developed CRM and trouble ticketing system (in addition to software version control, packaging, and distribution) developed in VB6, with a backend Access 2003 database (boo, hiss, moan).
This system was used by about 100 people in the company on a daily basis, concurrently. Needless to say, the Access DB backend couldn't keep up all the time, and errors would crop up on certain records. This happened randomly; often enough to be a pain for me to fix, but not often enough for anybody to tell me "look, take the time and figure out why".
The solution on the "fix" was simple enough - what would happen was that the record on a table would corrupt in one of the fields; the data in the field would read something like "##ERROR##" - you couldn't do anything with that field (IIRC), updates wouldn't work - nothing. What I found though, was that you could copy the entire record to a new record, and then that field would become editable. You could do this from within Access fairly easily, but quite often this problem would crop up when I wasn't at work (early in the morning usually) - so I would have a lot of "please help us" emails from various staff when it would break. That got old quick.
So I did what any programmer would do - I replaced myself with a small shell script.
Actually, what I did was write a piece of code into the application that would do the fix for me, on whichever table was having the issue. It would find the record, copy it, delete the old one, update any pointers/keys elsewhere in the system as needed, and reset the affected field to its default value, with a note somewhere on the record that indicated the record was "auto-fixed", and that some data was lost. Generally, this lost data was not a big deal, and could be easily handled by the rest of the staff (most of the time, the issue was on certain status fields, never on a memo or other free-form text field).
After I had that in place, and had run it a few times on actual errored records, and I knew it was working ok, I then added it to a randomised routine that would, when someone would log in, randomly select to "repair" the tables; if a repair was going on, I had another mechanism so that other "random lucky winners", when they logged in, it would see the flag and know that the system was in a repair mode. This auto-repair scheme didn't take long to finish, even with the tons of data we were using (the DB was a few gig - which is huge and not reccommended for an Access DB, btw). So, only one user's system would initiate the repair, and the others would only allow a login when the repair completed (a few minutes at most).
The user's loved it - it worked great, but the defining moment came about a week after it had been in place. A repair was needed, and it took care of it. But the way I found out about it was priceless - it was from a user who (for some reason) was out of the loop of the new process, and didn't know I had changed it to auto-update. She wrote me an email saying "please fix this issue, I need it to work"; about 15 minutes later, she wrote another email saying "thank you!".
At the time both of those emails were sent, I was at home, still in bed, sleeping.
;D
I ultimately knew we had to get off that DB system, Access just wasn't going to cut it. I ended coding a new system to use an ODBC connection to a PostgreSQL DB (I chose this route because I wanted to convert the entire system to something akin to a LAMP setup - but MySQL wasn't as advanced as it is now, so PostgreSQL was chosen), and was testing it and such when the company let me go (after working there for 8 years); I later found out it was because they were selling the company, and I looked bad on their balance sheet (because my task was to work on this non-funded internal application).
They told me when they let me go that they were going to look into an alternate system to replace the homegrown one. I told them good luck.
About four years later I had the opportunity to visit my old stomping grounds (I was picking up a Parallax USB OScope I had won in a Nuts and Volts magazine contest - it had been accidentally sent to the wrong address); they were still using the same system, still running Access 2003 (they never migrated to the PostgreSQL version) - and nobody had been hired to update it since the day I left (except for my boss, who told me he made certain minor changes, but nothing extensive). They never managed to find a system that would do everything my system did (because it was so tightly integrated with their business processes, and had a ton of stuff customized just for that business, and it also handled a portion of their billing and reporting).
I was told, though, that the company that bought them thought the application was well designed and worked good; I don't know if they ever did anything with it further or not - I tend to think not (at least, I hope they didn't - I wouldn't want to inflict that kind of pain on any future programmer)...
