They rely upon service components to implement the additional functionality required for the base consumer functionality. OLE DB interfaces over some type of data. OLE DB providers include everything from a full SQL DBMS to a text file or data stream. Obviously these data providers have different functionality, and it's important not to limit that functionality. But at the same time it's not reasonable to expect all providers that expose simple tabular data to implement a full-blown query engine as well.
Providers support the native functionality of the data that they expose.
Additional interfaces should be implemented as appropriate. All providers must be either apartment, rental, or free threaded, and must support aggregation of the DataSource, Session, and Rowset objects. If applicable, providers must support the aggregation of the Command and View objects. Providers that support binding to objects as IStream or ILockBytes must also support binding to those columns as ISequentialStream . It is important for provider writers to implement the full set of interfaces that apply to their particular type of data.