Поделиться через


OPENDATASOURCE (Transact-SQL)

Предоставляет сведения о нерегламентированном подключении в виде элемента имени объекта, состоящего из четырех частей, без использования имени связанного сервера.

Значок ссылки на разделСоглашение о синтаксисе в Transact-SQL

Синтаксис

OPENDATASOURCE ( provider_name, init_string )

Аргументы

  • provider_name
    Имя, зарегистрированное как PROGID поставщика OLE DB, используемого для доступа к источнику данных. Аргумент provider_name имеет тип char и не имеет значения по умолчанию.

  • init_string
    Строка соединения, передаваемая в интерфейс IDataInitialize целевого поставщика. Синтаксис строки поставщика основан на парах «ключевое_слово-значение», разделенных точкой с запятой, например: 'ключевое_слово1=значение;ключевое_слово2=значение'.

    Описание конкретных пар «ключевое_слово-значение», поддерживаемых поставщиком, см. в пакете Microsoft Data Access SDK. Данная документация определяет основной синтаксис. Следующая таблица содержит наиболее часто используемые ключевые слова в аргументе init_string.

    Ключевое слово

    Свойство OLE DB

    Допустимые значения и описание

    Источник данных

    DBPROP_INIT_DATASOURCE

    Имя источника данных для подключения. Различные поставщики интерпретируют его по-разному. Для поставщика OLE DB для собственного клиента SQL Server это означает имя сервера. Для поставщика Jet OLE DB таким образом определяется полный путь к MDB-файлу или XLS-файлу.

    Расположение

    DBPROP_INIT_LOCATION

    Расположение базы данных для подключения.

    Расширенные свойства

    DBPROP_INIT_PROVIDERSTRING

    Строка подключения этого поставщика.

    Тайм-аут соединения

    DBPROP_INIT_TIMEOUT

    Время, по истечении которого попытка соединения признается неудачной.

    Идентификатор пользователя

    DBPROP_AUTH_USERID

    Идентификатор пользователя для соединения.

    Пароль

    DBPROP_AUTH_PASSWORD

    Пароль для соединения.

    Каталог

    DBPROP_INIT_CATALOG

    Имя первоначального каталога или каталога по умолчанию при подключении к источнику данных.

    Встроенные функции безопасности

    DBPROP_AUTH_INTEGRATED

    SSPI для указания проверки подлинности Windows

Замечания

Функцию OPENDATASOURCE можно использовать для доступа к удаленным данным из источников OLE DB только в том случае, если параметр реестра DisallowAdhocAccess явно содержит 0 для указанного поставщика, а также если используется расширенный параметр Ad Hoc Distributed Queries. Если эти параметры не установлены, поведение по умолчанию запрещает нерегламентированный доступ.

Функция OPENDATASOURCE может применяться в тех же местах в коде Transact-SQL, где и имя связанного сервера. Следовательно, функцию OPENDATASOURCE можно использовать в качестве первой из четырех частей имени, которое ссылается на таблицу или представление в операторах SELECT, INSERT, UPDATE, DELETE или в удаленной хранимой процедуре в операторе EXECUTE. При запуске удаленных хранимых процедур функция OPENDATASOURCE должна ссылаться на другой экземпляр SQL Server. Функция OPENDATASOURCE не может принимать переменные в качестве аргументов.

Функции OPENROWSET и OPENDATASOURCE должны использоваться только для ссылки на источники данных OLE DB, обращения к которым происходят нечасто. Задайте связанный сервер для любых источников данных, доступ к которым производится достаточно часто. Ни функция OPENDATASOURCE, ни функция OPENROWSET не обеспечивают полную поддержку для задания связанных серверов. Например, отсутствует управление безопасностью и возможность запросить данные каталога. Вся информация о соединении, включая пароли, должна предоставляться каждый раз при вызове OPENDATASOURCE.

Важное примечаниеВажно!

Проверка подлинности Windows намного надежнее, чем проверка подлинности SQL Server. Везде, где возможно, следует применять проверку подлинности Windows. Не рекомендуется использовать функцию OPENDATASOURCE с паролями, явно присутствующими в строке соединения.

Требования к соединениям для каждого поставщика похожи на требования к этим параметрам при создании связанных серверов. Подробности по многим обычным поставщикам приведены в разделе sp_addlinkedserver (Transact-SQL).

Разрешения

Любой пользователь может выполнить OPENDATASOURCE. Разрешения, применяемые для подключения к удаленному серверу, определяются из строки соединения.

Примеры

В следующем примере создается нерегламентированное соединение с экземпляром Payroll СУБД SQL Server на сервере London, а затем формируется запрос к таблице AdventureWorks.HumanResources.Employee. (При использовании SQLNCLI SQL Server выполнит перенаправление к последней версии поставщика OLE DB для собственного клиента SQL Server.)

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks.HumanResources.Employee

В следующем примере создается нерегламентированное соединение с электронной таблицей Excel в формате 1997 — 2003.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;