We live in an advanced age of computing which gives us the convenience of cut, copy, and paste. I'm not being sarcastic; long gone are the days of copying and pasting working only within the scope of one application at a time, but now the sky is the limit! With great power, though, comes great responsibility.

T. B. was working on a system that was being gradually ported to .NET. A lot of progress had been made, but there were still some legacy components. By reading some of the old VB code, you could actually see the learning curve. Early modules had code comparable to crude cave paintings of stick figures throwing spears at boars, while more recently developed modules were more like slightly less crude cave paintings of stick figures throwing spears at boars.

Awkward similes aside, the system used a tangled web of SQL Server databases, Access applications, legacy VB code and newer .NET code. The core application used SQL Server while, puzzlingly, the reporting module interfaces with an Access application that directly accesses the SQL Server. Many departments used this Access application to run their reports.

Just a few weeks ago, users started complaining that records were disappearing from the Customer table. The system was crashing as a result, and mass confusion ensued. Developers were scrambling to determine the cause of the issue, and ultimately fell back on restoring from a backup and patching the system so that it'd at least stop crashing.

This didn't remedy the problem, though, and records began disappearing again. T. B., ever the responsible employee, sent out an email asking if anyone had been working on the records. He received a phone call later that day.

"Someone was just looking at those the other day," said the caller. "Strange that they seem to have disappeared now..."

T. B. asked, "Did they notice anything untoward," happy that he got to use the word "untoward."

"Not really, and I did tell him to 'Copy' rather than 'Cut.'"

T. B. got a sinking feeling in his stomach and a lump in his throat. "...Pardon?"

"We like to run queries directly because we can easily copy and paste the results into emails. I was never really sure if it'd cause a problem if we used 'Cut.'"

Yes, using "Cut" was causing records to be completely removed from the SQL database. Sure enough, the problem was easy enough to fix by setting a whole mess of "deny" permissions on the database.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!