--- title: "Data Source Object Interfaces" ms.date: "10/24/2018" helpviewer_keywords: ["data source objects [C++], interfaces", "data source objects [C++]", "interfaces [C++], OLE DB", "interfaces [C++], list of", "OLE DB provider templates [C++], object interfaces", "OLE DB [C++], interfaces"] ms.assetid: 929e100c-c08c-4b64-8437-d8d1357226f6 --- # Data Source Object Interfaces The following table shows the mandatory and optional interfaces defined by OLE DB for a data source object. |Interface|Required?|Implemented by OLE DB templates?| |---------------|---------------|--------------------------------------| |`IDBCreateSession`|Mandatory|Yes| |`IDBInitialize`|Mandatory|Yes| |`IDBProperties`|Mandatory|Yes| |[IPersist](/windows/win32/api/objidl/nn-objidl-ipersist)|Mandatory|Yes| |[IConnectionPointContainer](/windows/win32/api/ocidl/nn-ocidl-iconnectionpointcontainer)|Optional|No| |`IDBDataSourceAdmin`|Optional|No| |`IDBInfo`|Optional|No| |[IPersistFile](/windows/win32/api/objidl/nn-objidl-ipersistfile)|Optional|No| |`ISupportErrorInfo`|Optional|No| The data source object implements the `IDBProperties`, `IDBInitialize`, and `IDBCreateSession` interfaces through inheritance. You can choose to support additional functionality by inheriting or not inheriting from one of these implementation classes. If you want to support the `IDBDataSourceAdmin` interface, you must inherit from the `IDBDataSourceAdminImpl` class. ## See also [OLE DB Provider Template Architecture](../../data/oledb/ole-db-provider-template-architecture.md)