Мне нужно использовать ADODB старой школы (не ADO.NET) для выполнения оператора, содержащего выражение общей таблицы.
Я использую (должен использовать) поставщика SQLOLEDB.
Оператор DML отлично работает при выполнении с клиента Windows 7 / Windows Server 2008, но не с сервера WinXP или Win2K3.
Я профилировал подпрограмму и обнаружил, что старые операционные системы отправляют несколько иной оператор SQL.
Win7 + 2008 = exec sp_executesql N'WITH source(Vsl, Cpt, SrcTyp, SrcNum, Opn, JobNum, Qty, Cst, Vry, Reg, Vnt, Sbk) AS ...'
WinXP + Win2K3 = exec sp_executesql N'exec WITH source(Vsl, Cpt, SrcTyp, SrcNum, Opn, JobNum, Qty, Cst, Vry, Reg, Vnt, Sbk) AS ...'
Обратите внимание, что дополнительный текст "exec" добавлен в текст команды.
Похоже, что версии SQLOLEDB.1 на старых ОС неправильно обрабатывают оператор WITH и считают, что ему требуется предшествующий exec.
Может кто-нибудь пролить свет на это. Есть ли обновление драйвера SQLOLEDB, которое я могу применить к старым ОС? или какой-то другой обходной путь.