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


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, затем выполняется запрос к таблице AdventureWorks2012.HumanResources.Employee. (Воспользуйтесь SQLNCLI, и SQL Server выполнит перенаправление к последней версии поставщика OLE DB для собственного клиента SQL Server.)

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

См. также

Справочник

OPENROWSET (Transact-SQL)

sp_addlinkedserver (Transact-SQL)