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

SE APLICA A: síSQL Server síAzure SQL Database (solo Instancia administrada) noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Proporciona información de conexión ad hoc como parte de un nombre de objeto de cuatro partes sin utilizar un nombre de servidor vinculado.Provides ad hoc connection information as part of a four-part object name without using a linked server name.

Icono de vínculo Convenciones de sintaxis de Transact-SQLlink icon Transact-SQL Syntax Conventions

SintaxisSyntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

ArgumentosArguments

'provider_name''provider_name'
Es el nombre registrado como PROGID del proveedor OLE DB utilizado para obtener acceso al origen de datos.Is the name registered as the PROGID of the OLE DB provider used to access the data source. provider_name es un tipo de datos char que carece de valor predeterminado.provider_name is a char data type, with no default value.

Importante

El anterior proveedor de Microsoft OLE DB para SQL Server (SQLOLEDB) y de OLE DB para SQL Server Native Client (SQLNCLI) permanece en desuso y no se recomienda utilizarlo para nuevos trabajos de desarrollo.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. En su lugar, use el nuevo Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL), que se actualizará con las características de servidor más recientes.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'
Es la cadena de conexión que se pasa a la interfaz IDataInitialize del proveedor de destino.Is the connection string passed to the IDataInitialize interface of the destination provider. La sintaxis de cadena del proveedor se basa en pares de palabra clave y valor separados por puntos y coma, como: " palabra clave 1=valor ; palabra clave 2=valor " .The provider string syntax is based on keyword-value pairs separated by semicolons, such as: 'keyword1=value ; keyword2=value'.

Para conocer los pares de palabra clave y valor admitidos, vea MicrosoftMicrosoft Data Access SDK.For specific keyword-value pairs supported on the provider, see the MicrosoftMicrosoft Data Access SDK. En esta documentación se define la sintaxis básica.This documentation defines the basic syntax. En la siguiente tabla se muestran las palabras clave más utilizadas en el argumento init_string.The following table lists the most frequently used keywords in the init_string argument.

Palabra claveKeyword Propiedad OLE DBOLE DB property Valores válidos y descripciónValid values and description
Origen de datosData Source DBPROP_INIT_DATASOURCEDBPROP_INIT_DATASOURCE Nombre del origen de datos al que se va a conectar.Name of the data source to connect to. Distintos proveedores lo interpretan de formas distintas.Different providers interpret this in different ways. Para un proveedor OLE DB de SQL Native Client SQL ServerSQL Server , indica el nombre del servidor.For SQL ServerSQL Server Native Client OLE DB provider, this indicates the name of the server. Para un proveedor OLE DB para Jet, indica la ruta de acceso completa al archivo .mdb o al archivo .xls.For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.
UbicaciónLocation DBPROP_INIT_LOCATIONDBPROP_INIT_LOCATION Ubicación de la base de datos a la que se va a conectar.Location of the database to connect to.
Propiedades extendidasExtended Properties DBPROP_INIT_PROVIDERSTRINGDBPROP_INIT_PROVIDERSTRING Cadena de conexión específica del proveedor.The provider-specific connect-string.
Tiempo de espera de conexiónConnect timeout DBPROP_INIT_TIMEOUTDBPROP_INIT_TIMEOUT Valor de tiempo de espera después del cual se produce un error en el intento de conexión.Time out value after which the connection try fails.
Id. de usuarioUser ID DBPROP_AUTH_USERIDDBPROP_AUTH_USERID Id. de usuario que se va a utilizar para la conexión.User ID to be used for the connection.
ContraseñaPassword DBPROP_AUTH_PASSWORDDBPROP_AUTH_PASSWORD Contraseña que se va a utilizar para la conexión.Password to be used for the connection.
CatálogoCatalog DBPROP_INIT_CATALOGDBPROP_INIT_CATALOG Nombre del catálogo inicial o predeterminado al conectarse al origen de datos.The name of the initial or default catalog when connecting to the data source.
Seguridad integradaIntegrated Security DBPROP_AUTH_INTEGRATEDDBPROP_AUTH_INTEGRATED SSPI, para especificar la autenticación de WindowsSSPI, to specify Windows Authentication

NotasRemarks

OPENROWSET siempre hereda la intercalación de la instancia, independientemente de la intercalación establecida para las columnas.OPENROWSET always inherits the instance collation, irrespective of collation set for columns.

OPENDATASOURCE se puede usar para tener acceso a datos remotos desde orígenes de datos de OLE DB solo cuando la opción de registro DisallowAdhocAccess está establecida explícitamente en 0 para el proveedor especificado y la opción de configuración avanzada Ad Hoc Distributed Queries está habilitada.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. Cuando no se establecen estas opciones, el comportamiento predeterminado no permite el acceso ad hoc.When these options are not set, the default behavior does not allow for ad hoc access.

Es posible utilizar la función OPENDATASOURCE en las mismas ubicaciones de la sintaxis Transact-SQLTransact-SQL como un nombre del servidor vinculado.The OPENDATASOURCE function can be used in the same Transact-SQLTransact-SQL syntax locations as a linked-server name. Por tanto, se puede utilizar OPENDATASOURCE como la primera parte de un nombre de cuatro partes que hace referencia a un nombre de tabla o vista en una instrucción SELECT, INSERT, UPDATE o DELETE, o a un procedimiento almacenado remoto en una instrucción 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. Cuando se ejecutan procedimientos almacenados remotos, OPENDATASOURCE debe hacer referencia a otra instancia de SQL ServerSQL Server.When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL ServerSQL Server. OPENDATASOURCE no acepta variables como argumentos.OPENDATASOURCE does not accept variables for its arguments.

Al igual que la función OPENROWSET, OPENDATASOURCE solo debe hacer referencia a orígenes de datos OLE DB a los que se tiene acceso con poca frecuencia.Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. Defina un servidor vinculado para los orígenes de datos a los que tiene acceso varias veces.Define a linked server for any data sources accessed more than several times. Ni OPENDATASOURCE ni OPENROWSET proporcionan toda la funcionalidad de definiciones de servidores vinculados, como la administración de seguridad y la capacidad de consultar información de catálogos.Neither OPENDATASOURCE nor OPENROWSET provides all the functionality of linked-server definitions, such as security management and the ability to query catalog information. Toda la información de conexión, incluidas las contraseñas, se debe proporcionar siempre que se llama OPENDATASOURCE.All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.

Importante

La autenticación de Windows es mucho más segura que la de SQL ServerSQL Server.Windows Authentication is much more secure than SQL ServerSQL Server Authentication. Siempre que sea posible, debe utilizar la Autenticación de Windows.You should use Windows Authentication whenever possible. OPENDATASOURCE no se debe utilizar con contraseñas explícitas en la cadena de conexión.OPENDATASOURCE should not be used with explicit passwords in the connection string.

Los requisitos de conexión de cada proveedor son similares a los requisitos de esos parámetros cuando se crean servidores vinculados.The connection requirements for each provider are similar to the requirements for those parameters when creating linked servers. En el artículo sp_addlinkedserver (Transact-SQL) se incluye información detallada sobre muchos proveedores comunes.The details for many common providers are listed in the article sp_addlinkedserver (Transact-SQL).

Las llamadas a OPENDATASOURCE, OPENQUERY o OPENROWSET en la cláusula FROM se evalúan por separado y de forma independiente de otras llamadas a estas funciones usadas como destino de la actualización, incluso si se han suministrado argumentos idénticos a las dos llamadas.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. En particular, las condiciones de filtro o combinación aplicadas en el resultado de una de esas llamadas no tienen ningún efecto en los resultados de la otra llamada.In particular, filter or join conditions applied on the result of one of those calls has no effect on the results of the other.

PermisosPermissions

Todos los usuarios pueden ejecutar OPENDATASOURCE.Any user can execute OPENDATASOURCE. Los permisos que se utilizan para conectarse al servidor remoto se determinan a partir de la cadena de conexión.The permissions that are used to connect to the remote server are determined from the connection string.

EjemplosExamples

A.A. Uso de OPENDATASOURCE con SELECT y OLE DB Driver de SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Driver

En el siguiente ejemplo se usa Microsoft OLE DB Driver for SQL Server con el fin de tener acceso a la tabla HumanResources.Department de la base de datos AdventureWorks2012AdventureWorks2012 en el servidor remoto 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. Se utiliza una instrucción SELECT para definir el conjunto de filas devuelto.A SELECT statement is used to define the row set returned. La cadena de proveedor contiene las palabras clave Server y Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. OLE DB Driver de SQL ServerSQL Server reconoce estas palabras clave.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.B. Uso de OPENDATASOURCE con SELECT y el proveedor OLE DB de SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Provider

En el ejemplo siguiente se crea una conexión ad hoc a la instancia de Payroll de SQL ServerSQL Server en el servidor London, y se consulta la tabla 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.

Nota

El uso de SQLNCLI redirigirá SQL ServerSQL Server a la última versión del proveedor OLE DB de SQL Server Native Client.Using SQLNCLI will redirect SQL ServerSQL Server to the latest version of SQL Server Native Client OLE DB Provider. Se espera que el proveedor OLE DB se registre con el PROGID especificado en el registro.The OLE DB provider is expected to be registered with the specified PROGID in the registry.

Importante

El proveedor OLE DB de SQL Server Native Client (SQLNCLI) permanece en desuso y no se recomienda utilizarlo para nuevos trabajos de desarrollo.SQL Server Native Client OLE DB provider (SQLNCLI) remains deprecated and it is not recommended to use it for new development work. En su lugar, use el nuevo Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL), que se actualizará con las características de servidor más recientes.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.C. Usar el proveedor Microsoft OLE DB para JetUsing the Microsoft OLE DB Provider for Jet

En el ejemplo siguiente se crea una conexión ad hoc a una hoja de cálculo de Excel en el formato 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$] ;  

Consulte tambiénSee Also

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