OPENDATASOURCE (Transact-SQL)OPENDATASOURCE (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure (только управляемый экземпляр) нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Передает сведения о нерегламентированном соединении в виде одной из четырех частей имени объекта, без имени связанного сервера.Provides ad hoc connection information as part of a four-part object name without using a linked server name.

Значок ссылки Синтаксические обозначения в Transact-SQLlink icon Transact-SQL Syntax Conventions

СинтаксисSyntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

АргументыArguments

'provider_name''provider_name'
Имя, зарегистрированное как PROGID имя поставщика OLE DB, используемое для доступа к источнику данных.Is the name registered as the PROGID of the OLE DB provider used to access the data source. Аргумент provider_name имеет тип данных char и не имеет значения по умолчанию.provider_name is a char data type, with no default value.

Важно!

Предыдущие поставщики Microsoft OLE DB для SQL Server (SQLOLEDB) и собственный клиент OLE DB для SQL Server (SQLNCLI) объявляются нерекомендуемыми для новых разработок.The previous Microsoft OLE DB Provider for SQL Server (SQLOLEDB) and SQL Server Native Client OLE DB provider (SQLNCLI) remain deprecated and it is not recommended to use either for new development work. Вместо этого используйте новый драйвер Microsoft OLE DB для SQL Server (MSOLEDBSQL), который будет обновлен с самыми последними серверными компонентами.Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.

'init_string''init_string'
Строка подключения, передаваемая в интерфейс IDataInitialize поставщика назначения.Is the connection string passed to the IDataInitialize interface of the destination provider. Синтаксис строки поставщика основан на парах "ключевое слово — значение", разделенных точкой с запятой, например: " ключевое_слово1=значение ; ключевое_слово2=значение " .The provider string syntax is based on keyword-value pairs separated by semicolons, such as: 'keyword1=value ; keyword2=value'.

Описание конкретных пар «ключевое_слово-значение», поддерживаемых поставщиком, см. в пакете MicrosoftMicrosoft Data Access SDK.For specific keyword-value pairs supported on the provider, see the MicrosoftMicrosoft Data Access SDK. Данная документация определяет основной синтаксис.This documentation defines the basic syntax. В приведенной ниже таблице представлены наиболее часто используемые ключевые слова в аргументе init_string.The following table lists the most frequently used keywords in the init_string argument.

Ключевое словоKeyword Свойство OLE DBOLE DB property Допустимые значения и описаниеValid values and description
Источник данныхData Source DBPROP_INIT_DATASOURCEDBPROP_INIT_DATASOURCE Имя источника данных для подключения.Name of the data source to connect to. Различные поставщики интерпретируют его по-разному.Different providers interpret this in different ways. Для поставщика OLE DB для собственного клиента SQL ServerSQL Server это означает имя сервера.For SQL ServerSQL Server Native Client OLE DB provider, this indicates the name of the server. Для поставщика Jet OLE DB таким образом определяется полный путь к MDB-файлу или XLS-файлу.For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.
МестоположениеLocation DBPROP_INIT_LOCATIONDBPROP_INIT_LOCATION Расположение базы данных для подключения.Location of the database to connect to.
Расширенные свойстваExtended Properties DBPROP_INIT_PROVIDERSTRINGDBPROP_INIT_PROVIDERSTRING Строка подключения этого поставщика.The provider-specific connect-string.
Время ожидания подключенияConnect timeout DBPROP_INIT_TIMEOUTDBPROP_INIT_TIMEOUT Время, по истечении которого попытка соединения признается неудачной.Time out value after which the connection try fails.
Идентификатор пользователяUser ID DBPROP_AUTH_USERIDDBPROP_AUTH_USERID Идентификатор пользователя для соединения.User ID to be used for the connection.
ПарольPassword DBPROP_AUTH_PASSWORDDBPROP_AUTH_PASSWORD Пароль для соединения.Password to be used for the connection.
КаталогCatalog DBPROP_INIT_CATALOGDBPROP_INIT_CATALOG Имя первоначального каталога или каталога по умолчанию при подключении к источнику данных.The name of the initial or default catalog when connecting to the data source.
Встроенные функции безопасностиIntegrated Security DBPROP_AUTH_INTEGRATEDDBPROP_AUTH_INTEGRATED SSPI для указания проверки подлинности WindowsSSPI, to specify Windows Authentication

RemarksRemarks

OPENROWSET всегда наследует параметры сортировки экземпляра независимо от параметров сортировки, заданных для столбцов.OPENROWSET always inherits the instance collation, irrespective of collation set for columns.

Функцию OPENDATASOURCE можно использовать для доступа к удаленным данным из источников OLE DB только в том случае, если параметр реестра DisallowAdhocAccess явно содержит значение 0 для указанного поставщика, а также если включен расширенный параметр конфигурации Ad Hoc Distributed Queries.OPENDATASOURCE can be used to access remote data from OLE DB data sources only when the DisallowAdhocAccess registry option is explicitly set to 0 for the specified provider, and the Ad Hoc Distributed Queries advanced configuration option is enabled. Если эти параметры не установлены, поведение по умолчанию запрещает нерегламентированный доступ.When these options are not set, the default behavior does not allow for ad hoc access.

Функция OPENDATASOURCE может применяться в тех же местах в коде Transact-SQLTransact-SQL, где и имя связанного сервера.The OPENDATASOURCE function can be used in the same Transact-SQLTransact-SQL syntax locations as a linked-server name. Следовательно, функцию OPENDATASOURCE можно использовать в качестве первой из четырех частей имени, которое ссылается на таблицу или представление в инструкциях SELECT, INSERT, UPDATE, DELETE или в удаленной хранимой процедуре в инструкции EXECUTE.Therefore, OPENDATASOURCE can be used as the first part of a four-part name that refers to a table or view name in a SELECT, INSERT, UPDATE, or DELETE statement, or to a remote stored procedure in an EXECUTE statement. При запуске удаленных хранимых процедур функция OPENDATASOURCE должна ссылаться на другой экземпляр SQL ServerSQL Server.When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL ServerSQL Server. Функция OPENDATASOURCE не может принимать переменные в качестве аргументов.OPENDATASOURCE does not accept variables for its arguments.

Функции OPENROWSET и OPENDATASOURCE должны использоваться только для ссылки на источники данных OLE DB, обращения к которым происходят нечасто.Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. Задайте связанный сервер для любых источников данных, доступ к которым производится достаточно часто.Define a linked server for any data sources accessed more than several times. Функции OPENDATASOURCE и OPENROWSET не обеспечивают полную поддержку для определения связанных серверов. Например, отсутствует функция управления безопасностью и возможность запросить данные каталога.Neither OPENDATASOURCE nor OPENROWSET provides all the functionality of linked-server definitions, such as security management and the ability to query catalog information. Вся информация о соединении, включая пароли, должна предоставляться каждый раз при вызове OPENDATASOURCE.All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.

Важно!

Проверка подлинности Windows намного надежнее, чем проверка подлинности SQL ServerSQL Server.Windows Authentication is much more secure than SQL ServerSQL Server Authentication. Везде, где возможно, следует применять проверку подлинности Windows.You should use Windows Authentication whenever possible. Не рекомендуется использовать функцию OPENDATASOURCE с паролями, явно присутствующими в строке соединения.OPENDATASOURCE should not be used with explicit passwords in the connection string.

Требования к соединениям для каждого поставщика похожи на требования к этим параметрам при создании связанных серверов.The connection requirements for each provider are similar to the requirements for those parameters when creating linked servers. Подробные сведения для многих распространенных поставщиков приведены в статье sp_addlinkedserver (Transact-SQL).The details for many common providers are listed in the article sp_addlinkedserver (Transact-SQL).

Любой вызов функции OPENDATASOURCE, OPENQUERY или OPENROWSET в предложении FROM вычисляется отдельно и независимо от любого вызова этих функций, используемого как назначение при обновлении, даже если в двух таких вызовах будут заданы идентичные аргументы.Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. В частности, условия фильтра или соединения, применяемые к результатам одного из таких вызовов, никак не влияют на результаты другого.In particular, filter or join conditions applied on the result of one of those calls has no effect on the results of the other.

РазрешенияPermissions

Любой пользователь может выполнить OPENDATASOURCE.Any user can execute OPENDATASOURCE. Разрешения, применяемые для подключения к удаленному серверу, определяются из строки подключения.The permissions that are used to connect to the remote server are determined from the connection string.

ПримерыExamples

A.A. Использование функции OPENDATASOURCE с инструкцией SELECT и драйвером OLE DB для SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Driver

В следующем примере используется драйвер Microsoft OLE DB для SQL Server для доступа к таблице HumanResources.Department в базе данных AdventureWorks2012AdventureWorks2012 на удаленном сервере Seattle1.The following example uses the Microsoft OLE DB Driver for SQL Server to access the HumanResources.Department table in the AdventureWorks2012AdventureWorks2012 database on the remote server Seattle1. Инструкция SELECT используется для определения возвращаемого набора строк.A SELECT statement is used to define the row set returned. Строка поставщика содержит ключевые слова Server и Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. Эти ключевые слова распознаются драйвером OLE DB для SQL ServerSQL Server.These keywords are recognized by the SQL ServerSQL Server OLE DB Driver.

SELECT GroupName, Name, DepartmentID  
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2016;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department  
ORDER BY GroupName, Name;  

Б.B. Использование функции OPENDATASOURCE с инструкцией SELECT и поставщиком OLE DB для SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Provider

В следующем примере создается нерегламентированное соединение с экземпляром Payroll СУБД SQL ServerSQL Server на сервере London, а затем формируется запрос к таблице AdventureWorks2012.HumanResources.Employee.The following example creates an ad hoc connection to the Payroll instance of SQL ServerSQL Server on server London, and queries the AdventureWorks2012.HumanResources.Employee table.

Примечание

При использовании SQLNCLI SQL ServerSQL Server будет использовать последнюю версию поставщика OLE DB для собственного клиента SQL Server.Using SQLNCLI will redirect SQL ServerSQL Server to the latest version of SQL Server Native Client OLE DB Provider. Предполагается, что поставщик OLE DB будет зарегистрирован в реестре с указанным идентификатором PROGID.The OLE DB provider is expected to be registered with the specified PROGID in the registry.

Важно!

Собственный клиент OLE DB для SQL Server (SQLNCLI) объявляется нерекомендуемым для новых разработок.SQL Server Native Client OLE DB provider (SQLNCLI) remains deprecated and it is not recommended to use it for new development work. Вместо этого используйте новый драйвер Microsoft OLE DB для SQL Server (MSOLEDBSQL), который будет обновлен с самыми последними серверными компонентами.Instead, use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) which will be updated with the most recent server features.

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

В.C. Использование поставщика Microsoft OLE DB для JetUsing the Microsoft OLE DB Provider for Jet

В следующем примере создается нерегламентированное соединение с электронной таблицей Excel в формате 1997 — 2003.The following example creates an ad hoc connection to an Excel spreadsheet in the 1997 - 2003 format.

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

См. также:See Also

OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
sp_addlinkedserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)