This article was previously published under Q266182
This article has been archived. It is offered "as is" and will no longer be updated.
After all references have been released, the Repository engine may not be released from memory. Note that this only occurs when DTC transactions are used. After this occurs several times, your computer either runs out of memory or runs out of database connections. The error message you receive depends on how many objects you "touch" and how much memory is allocated for the repository cache.
The problem can occur if DTC still has a reference to the Repository engine. When this occurs, if the Repository engine is instantiated and released within the same process multiple times, multiple copies of the Repository engine remain in memory. Note that this problem is very common when you are using the Repository engine as part of an MTS solution. Because the instance is not released, the connection to the database is not released and the connection cannot be used again. DTC still has a reference to the Repository because:
The Repository engine receives the connection point for IID_ITransactionOutcomeEvents, and calls Advise().
If the Repository engine calls Unadvise(), it does not receive all of the committed or aborted events, and the execution is incorrect.
If the Repository engine does not call Unadvise(), the Repository is not released.
NOTE: In step 2, the counter is decremented too rapidly, and this results in a loss of events. In step 3, the counter never returns to zero and the Repository is not released.
To resolve this problem, obtain and install Windows 2000 Service Pack 1 (SP1) from the following Microsoft Web site: