OPENDATASOURCE (Transact-SQL)

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

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

Синтаксис

OPENDATASOURCE ( provider_name, init_string )

Аргументы

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

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

    Описание конкретных пар «ключевое_слово-значение», поддерживаемых поставщиком, см. в пакете 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, OPENQUERY или OPENROWSET в предложении FROM оценивается отдельно и независимо от любого вызова этих функций, используемых в качестве цели обновления, даже если для этих двух запросов предоставляются идентичные аргументы. В частности, фильтр или условия соединения, применяемые к результату одного из этих вызовов, не влияют на результаты остальных вызовов.

Разрешения

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

Примеры

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

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks2008R2.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$] ;