This article was previously published under Q257953
This article has been archived. It is offered "as is" and will no longer be updated.
When you use the Windows 2000 release of MDAC 2.5 (version 2.50.4403) and you marshal a variant array that contains two or more ActiveX Data Objects (ADO) recordsets, the following error may occur:
Run-time error '-2147024846 (80070032) Rowset cannot be loaded because the stream is invalid.
This error occurs in a completely random and unpredictable fashion. Its occurrence depends on the data in the stream that is being marshaled.
When a rowset is read into the client application, an internal buffer is used to contain data from the stream. Each rowset stream contains a token at the beginning that identifies the nature of the stream. When the rowset is of just the right size so that the token for the next rowset is broken up across the end of the buffer, the buffer must be refilled to collect the rest of the token. However, the pointer is not being correctly repositioned to the beginning of the rowset.
To resolve this problem, you can either:
Obtain the latest service pack for Windows 2000. For additional information, please see the following article in the Microsoft Knowledge Base:
260910 How to Obtain the Latest Windows 2000 Service Pack
Obtain the following hotfix:
A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next Microsoft Data Access Components service pack that contains this hotfix.
To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:
NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.
The English version of this fix should have the following file attributes or later:
Date Version Size File name ----------------------------------------------------- 4/4/00 2.50.5110.3 147,728 bytes msadco.dll 4/4/00 2.50.5110.3 57,616 bytes msadcs.dll
NOTE: The installer package for this hotfix (Q257953_W2K_SP1_x86_en.exe) is designed to run on Windows 2000 platforms, and will not run on NT 4.0 or Windows 95/98 platforms. For this reason, two additional files, RDSHotfix.exe and RDSHotfix.zip, are included to facilitate placement of the hotfix on Windows NT 4.0/WinDows 95/98 platforms. RDSHotfix.exe is a self-extracting executable that has had the default unzip directory set to the correct location for the files it contains. It can be run with the -auto switch when no user input is desired. All of these packages contain the same files, which have the attributes indicated in this section.
To work around this problem, use any of the following methods:
Return a single rowset from the method, rather than an array of rowsets.
Rearrange the order of the rowsets in the array so that the rowset causing the problem is the last rowset in the array. This would generally require that you know which rowset is generating the error, however, and it might still not completely avoid the problem.
Separate the recordsets with other variant objects, such as character strings.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 1.