There are several things that, it seems to me, need to be addressed simultaneously. First and foremost, I highly recommend that you take a look at this transaction to see what you can do to reduce the load it puts on your system. Can it be broken down into several small transactions? Would it help to add better indexes? Would it capture a subset of data and put it in a temporary table to reduce the number of SELECTS running against the main table? The list of questions here may go on for some time.
Then look at the "application" that starts the transaction. Are these dates? If so, how is this done? If it just passes into GetDate() , then this allows SQL Server to do the work. However, if the application passes the date value, I would make sure that this date value is ALWAYS valid. If so, look at the table to make sure the date formatting is configured correctly. For example, if your application was transmitted in the format of the European date 14-05-2011 , your application may suffocate if it expects a Month-Day-Year, since 14 is not converted per month.
Third, review your tables to see if you have triggers configured on them. If you do, look carefully at each trigger. It is very possible that a trigger is causing a conflict within your transaction. Perhaps you are writing data, and your trigger returns and updates the data (or evaluates the date and states that it is invalid - see the example above).
Fourth, check the data before leaving the transaction. Read it when it appears, and read it after performing INSERT . Perhaps after the transaction is completed, a client operation occurs that destroys the date value.
Finally, you need to look at your test environment. If this works in the test, but it does not work, there is something else between the two systems. This is the reason, directly or indirectly. Maybe this is due to the hardware (bad RAM?) Or maybe it is something else in the settings (Locking, the fact that clients are trying to perform actions against data, etc.).
Other than that, here is a link to the forum with some other potential answers for you:
http://groups.google.com/group/comp.databases.ms-sqlserver/browse_thread/thread/1063b65df1f97492/8649bee2002646a2
IAmTimCorey
source share