Есть клиентская программа, работающая с MS SQL7 через ADO. Для выполнения ряда функций программа вызывает мой COM-объект, который работает с той же базой через OLE DB (компонент реализован средствами VC++/ATL). При этом данный объект цепляется к той же сессии, через которую работает клиент. В частности этот компонент осуществляет вставку (INSERT) записи, содержащей блоб-поле.
Проблема следущая.
Если клиент коннектится к базе через обыкновенный OLE DB Provider for SQL Server (SQLOLEDB.1), то запись успешно вставляется и блоб поле записывается. Если же клиент коннектится через MSDataShape, используя в качестве Data Provider все тот же SQLOLEDB — получаю ошибку при попытке выполнить INSERT — No such interface supported, причем сразу от обоих провайдеров.
Для интереса проделал такой же экспеимент с базой Oracle — все работает, независимо от того как коннектится клиент: непосредственно через оракловый Data Provider (OraOLEDB.Oracle.1) или через MSDataShape/OraOLEDB.
Экспериментальным путем выяснил, что ошибка происходит только при попытке записать блоб поле -без него все работает для всех провайдеров.
Может кто-нибудь сталкивался с подобной проблемой?