SSRS 2008 R2 (at least RTM, CU3, CU5 and CU7) report design in BIDS produces data cache files that cause a wide variety of problems. 2008 R2 fails to discard these cache files more frequently than 2005 did.
The particular example I'm attempting to document here demonstrates that data pulled from these caches is pulled by field index, not by name. Replacing the SQL text in a dataset with a different SQL that pulls stuff from different tables, but where the first field has an identical signature will cause BIDS to pull data from the stale cache file and attempt to interpret it according to the new metadata. The error code in the issue title results when the cache file contains non-numeric text in an ordinal position where the new SQL would deliver an int, or when the cache contains less columns than the new SQL would deliver and those rightmost columns are attempted to be used.
BIDS even does one better: I *deleted* the whole dataset and created a new one with a different name and different SQL and BIDS still pulled data from the stale cache!
There's a curiosity: The "shifted" data, if one looks at my example closely, is still one off. This might correspond to the bug where, if a sp-bound dataset is refreshed when the SP has added new fields in the middle of the list, BIDS will place most new fields displaced in the dataset, and the distance from the proper positions as delivered from the SQL is a regular sequence, e.g. inserting 5 new fields at position 10 might put the new fields at -2 off, -1 off, correct, +1 off, +2 off...
The design decision to use cache files at all should be reevaluated. Also, 2008 R2's BIDS must learn to discard cache files whenever the "Refresh fields" button is used, whenever the SQL textbox is changed (even when typing space-backspace at the end), or any other change to the dataset properties is attempted.