Если кому-то интересно, я выяснил, в чем проблема / разница. Мне пришлось вернуться к коду из-за тонкой проблемы в случае ADO, которая оказалась связанной.
Если вам нужно несколько одновременных наборов записей, это легко сделать с ODBC, потому что если вы не используете MARS, это просто ошибки, как указано выше.
С ADO / OLEDB, однако, это более тонко. Когда я не использую MARS, кажется, что несколько RecordSets работают нормально. Но под прикрытием происходит то, что ADO автоматически открывает еще один новый сеанс для каждого, но вы не знаете об этом и не можете сказать. И это оказывается очень медленным, потому что каждый сеанс требует полного входа и выхода из системы аудита, и я все время создаю, закрываю и заново создаю.
Поэтому я добавил «MARS Connection = True» для ADO, и вот, теперь он ведет себя так же, как ODBC, повторно используя существующее соединение вместо создания новых.
Итак, мораль такова: вам необходимо иметь MARS для ODBC, в то время как ADO / OLEDB будет разрешать несколько одновременных RecordSets без MARS, выполняя свою собственную задачу, но это может (ну) не то, что вы хотите / лучше всего.