What are the possible causes of a "Snapshopt isolation transaction failed...DDL" message?
I have a production database of 250 million row that has been running very well for years.
We do use snapshot isolation, and I understand how that works and it's impact on tempdb.
Intermittently, but now with increasing regularity, we see a message: "Snapshot isolation transaction failed in database 'tempdb' because the object accessed by the statement has been modified by a DDL statement in another concurrent transaction since the start of this transaction. It is disallowed because the metadata is not versioned. A concurrent update to metadata can lead to inconsistency if mixed with snapshot isolation.'
I understand what the error message means, but nothing in the transaction is executing DDL statements.
I can reproduce this error by beginning a snapshot transaction, creating a temp table, and then trying to create an index: this fails as expected, with this same message. That makes perfect sense. But I cannot determine the cause of the intermittent error.
I see in the last paragraph of this post that an out-of-space condition will also result in this same error message...which kind of makes sense, although in that case the error is somewhat misleading.
We have 20 gig of tempdb space in 6 files, and almost all of it is available at any time I inspect it. It seems unlikely that even a large snapshot transaction would consume 20 gig of tempdb space.
What are other things I could look for that could be causing this "Snapshot isolation transaction failed" message?