Lifetime of Storage Objects

The consumer releases a storage object created by the provider by calling Release on that object. If a provider supports DBPROP_MULTIPLESTORAGEOBJECTS = VT_FALSE, then the consumer must always call Release on the storage object to guarantee that a new storage object on any row can be opened. In addition, the storage object may enter a zombie state if one of the following events occurs:

When a storage object enters a zombie state, it is not automatically released. Instead, if the consumer calls any method on the storage object except Release, that method returns E_UNEXPECTED. It is the consumer's responsibility to release the storage object, even if it is in a zombie state.