Объекты OLE DB, используемые распределенными запросами
В следующей таблице показаны объекты и интерфейсы OLE DB, используемые распределенными запросами на языке Transact-SQL. Чтобы поставщик OLE DB можно было применять в распределенных запросах на языке Transact-SQL, он должен поддерживать хотя бы минимальный набор объектов и интерфейсов. Эти объекты и интерфейсы отмечены в столбце Требуется таблицы словом Да. Объекты и интерфейсы, которым соответствует значение Нет в столбце Требуется, требуются только для поддержки расширенных возможностей распределенных запросов. Если интерфейс не поддерживается поставщиком, то соответствующие возможности языка Transact-SQL также не поддерживаются. Например, если интерфейсы IRowsetLocate и IRowsetChange не поддерживаются, то инструкции UPDATE или DELETE не будут работать в удаленных таблицах.
Объект |
Интерфейс |
Требуется |
Описание |
---|---|---|---|
Источник данных |
IDBInitialize |
Да |
Инициализирует и настраивает данные и контекст безопасности. |
IDBCreateSession |
Да |
Создает объект DB Session. |
|
IDBProperties |
Да |
Получает сведения о совместимости поставщика и наборов свойств инициализации. |
|
IDBInfo |
Нет |
Получает сведения о синтаксисе SQL, который поддерживается поставщиком. |
|
DB Session |
IDBSchemaRowset |
Нет |
Получает метаданные таблицы и столбца. Необходимы наборы строк TABLES и COLUMNS. Кроме того, применяются другие наборы строк, если они доступны: TABLES_INFO, CATALOGS, INDEXES, STATISTICS, TABLE_STATISTICS, VIEWS, PRIMARY_KEYS, TABLE_PRIVILEGES и COLUMN_PRIVILEGES. |
IOpenRowset |
Да |
Открывает набор строк в таблице, индексе или гистограмме. |
|
IGetDataSource |
Да |
Возвращает в источник данных объект из объекта DB Session. |
|
IDBCreateCommand |
Нет |
Создает объект Command (запрос). |
|
ITransactionLocal |
Нет |
Запускает транзакцию на поставщике. |
|
ITransactionJoin |
Нет |
Применяется для поддержки распределенных транзакций. Если этот интерфейс не поддерживается, то обновления удаленного поставщика в пользовательской транзакции не разрешены. |
|
Набор строк (в таблице) |
IRowset |
Да |
Просматривает строки. |
IAccessor |
Да |
Выполняет привязку к столбцам в наборе строк. |
|
IColumnsInfo |
Да |
Получает сведения о столбцах в наборе строк. |
|
IRowsetInfo |
Да |
Получает сведения о свойствах набора строк. |
|
IRowsetLocate |
Нет |
Необходим для операций UPDATE или DELETE, а также для уточняющего запроса на основе индекса. |
|
IRowsetChange |
Нет |
Необходим для выполнения операций INSERT, UPDATE или DELETE в таблице. Наборы строк в базовых таблицах должны поддерживать этот интерфейс для поддержки инструкций INSERT, UPDATE или DELETE. |
|
IConvertType |
Да |
Проверяет, поддерживает ли набор строк преобразование определенных типов данных в столбцах. |
|
Набор строк (в индексе) |
IRowset |
Да |
Просматривает строки. |
IAccessor |
Да |
Выполняет привязку к столбцам в наборе строк. |
|
IColumnsInfo |
Да |
Получает сведения о столбцах в наборе строк. |
|
IRowsetInfo |
Да |
Получает сведения о свойствах набора строк. |
|
IRowsetIndex |
Да |
Обязателен для наборов строк в индексе, применяется в функциях индексирования (настройка диапазона, поиск). |
|
IConvertType |
Да |
Проверяет, поддерживает ли набор строк преобразование определенных типов данных в столбцах. |
|
Команда (необязательный) |
ICommand |
Да |
Применяется для выполнения запросов. |
ICommandText |
Да |
Применяется для определения текста запросов. |
|
ICommandProperties |
Да |
Указывает обязательные свойства наборов строк, возвращаемых командой. |
|
ICommandWithParameters |
Нет |
Применяется для выполнения параметризованных запросов. |
|
ICommandPrepare |
Нет |
Применяется для подготовки команды к получению метаданных. |
|
Ошибка (необязательный) |
IErrorRecords |
Да |
Получает указатель на интерфейс IErrorInfo для записи об ошибке. |
IErrorInfo |
Да |
Получает текстовое описание записи об ошибке. |
|
Любой объект (необязательный) |
ISupportErrorInfo |
Нет |
Определяет, поддерживает ли указанный интерфейс объекты ошибок. |