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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure (somente a Instância Gerenciada) nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Fornece informações de conexão ad hoc como parte de um nome de objeto de quatro partes sem usar um nome de servidor vinculado.Provides ad hoc connection information as part of a four-part object name without using a linked server name.

Ícone de link Convenções de sintaxe Transact-SQLlink icon Transact-SQL Syntax Conventions

SintaxeSyntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

ArgumentosArguments

'provider_name''provider_name'
É o nome registrado como PROGID do provedor OLE DB usado para acessar a fonte de dados.Is the name registered as the PROGID of the OLE DB provider used to access the data source. provider_name é um tipo de dados char sem nenhum valor padrão.provider_name is a char data type, with no default value.

Importante

O Microsoft OLE DB Provider para SQL Server (SQLOLEDB) anterior e o provedor SQL Server Native Client OLE DB (SQLNCLI) permanecem preteridos e não é recomendável usar nenhum dos dois para um novo trabalho de desenvolvimento.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. Em vez disso, use o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL), que será atualizado com os recursos de servidor mais recentes.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'
É a cadeia de conexão passada à interface IDataInitialize do provedor de destino.Is the connection string passed to the IDataInitialize interface of the destination provider. A sintaxe de cadeia de caracteres de provedor é baseada em pares palavra-chave e valor separados por ponto e vírgula, como: ' palavra-chave1=valor ; palavra-chave2=valor ' .The provider string syntax is based on keyword-value pairs separated by semicolons, such as: 'keyword1=value ; keyword2=value'.

Para ver os pares de valor e palavra-chave específicos com suporte no provedor, consulte o SDK do MicrosoftMicrosoft Data Access.For specific keyword-value pairs supported on the provider, see the MicrosoftMicrosoft Data Access SDK. Essa documentação define a sintaxe básica.This documentation defines the basic syntax. A tabela a seguir lista as palavras-chave mais usadas no argumento init_string.The following table lists the most frequently used keywords in the init_string argument.

Palavra-chaveKeyword Propriedade OLE DBOLE DB property Valores válidos e descriçãoValid values and description
fonte de dadosData Source DBPROP_INIT_DATASOURCEDBPROP_INIT_DATASOURCE Nome da fonte de dados à qual se conectar.Name of the data source to connect to. Provedores diferentes interpretam isso de várias formas.Different providers interpret this in different ways. Para o provedor OLE DB SQL ServerSQL Server Native Client, isso indica o nome do servidor.For SQL ServerSQL Server Native Client OLE DB provider, this indicates the name of the server. Para o provedor OLE DB Jet, indica o caminho completo do arquivo .mdb ou .xls.For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.
LocalLocation DBPROP_INIT_LOCATIONDBPROP_INIT_LOCATION Local do banco de dados ao qual se conectar.Location of the database to connect to.
Propriedades estendidasExtended Properties DBPROP_INIT_PROVIDERSTRINGDBPROP_INIT_PROVIDERSTRING A cadeia de conexão específica do provedor.The provider-specific connect-string.
Tempo limite de conexãoConnect timeout DBPROP_INIT_TIMEOUTDBPROP_INIT_TIMEOUT Valor de tempo limite após o qual a tentativa de conexão falha.Time out value after which the connection try fails.
ID de usuárioUser ID DBPROP_AUTH_USERIDDBPROP_AUTH_USERID ID de usuário a ser usada para a conexão.User ID to be used for the connection.
SenhaPassword DBPROP_AUTH_PASSWORDDBPROP_AUTH_PASSWORD Senha a ser usada para a conexão.Password to be used for the connection.
CatálogoCatalog DBPROP_INIT_CATALOGDBPROP_INIT_CATALOG O nome do catálogo inicial ou padrão durante a conexão à fonte de dados.The name of the initial or default catalog when connecting to the data source.
Segurança IntegradaIntegrated Security DBPROP_AUTH_INTEGRATEDDBPROP_AUTH_INTEGRATED SSPI, para especificar a Autenticação do WindowsSSPI, to specify Windows Authentication

RemarksRemarks

OPENROWSET sempre herda o agrupamento da instância, independentemente do conjunto de agrupamentos para colunas.OPENROWSET always inherits the instance collation, irrespective of collation set for columns.

OPENDATASOURCE pode ser usado para acessar dados remotos de fontes de dados OLE DB somente quando a opção do Registro DisallowAdhocAccess está definida explicitamente como 0 para o provedor especificado, e a opção de configuração avançada Consultas Distribuídas Ad Hoc 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. Quando essas opções não estão definidas, o comportamento padrão não permite acesso ad hoc.When these options are not set, the default behavior does not allow for ad hoc access.

A função OPENDATASOURCE pode ser usada nos mesmos locais da sintaxe Transact-SQLTransact-SQL que um nome do servidor vinculado.The OPENDATASOURCE function can be used in the same Transact-SQLTransact-SQL syntax locations as a linked-server name. Portanto, OPENDATASOURCE pode ser usada como a primeira parte de um nome de quatro partes que faz referência a um nome de tabela ou exibição em uma instrução SELECT, INSERT, UPDATE ou DELETE, ou a um procedimento armazenado remoto em uma instrução 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. Ao executar procedimentos armazenados remotos, OPENDATASOURCE deve fazer referência a outra instância do SQL ServerSQL Server.When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL ServerSQL Server. OPENDATASOURCE não aceita variáveis para seus argumentos.OPENDATASOURCE does not accept variables for its arguments.

Assim como a função OPENROWSET, OPENDATASOURCE deve referenciar apenas fontes de dados OLE DB que são acessadas com pouca frequência.Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. Defina um servidor vinculado para qualquer fonte de dados acessada muitas vezes.Define a linked server for any data sources accessed more than several times. Nem OPENDATASOURCE nem OPENROWSET fornecem todas as funcionalidades de definições de servidor vinculado, como gerenciamento de segurança e capacidade de consultar informações do catálogo.Neither OPENDATASOURCE nor OPENROWSET provides all the functionality of linked-server definitions, such as security management and the ability to query catalog information. Todas as informações de conexão, inclusive senhas, devem ser fornecidas sempre que OPENDATASOURCE é chamada.All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.

Importante

A Autenticação do Windows é muito mais segura do que a Autenticação do SQL ServerSQL Server.Windows Authentication is much more secure than SQL ServerSQL Server Authentication. Sempre que possível, você deve usar a Autenticação do Windows.You should use Windows Authentication whenever possible. OPENDATASOURCE não deve ser usada com senhas explícitas na cadeia de conexão.OPENDATASOURCE should not be used with explicit passwords in the connection string.

Os requisitos de conexão de cada provedor são semelhantes aos requisitos desses parâmetros durante a criação de servidores vinculados.The connection requirements for each provider are similar to the requirements for those parameters when creating linked servers. Os detalhes dos muitos provedores comuns estão listados no artigo sp_addlinkedserver (Transact-SQL).The details for many common providers are listed in the article sp_addlinkedserver (Transact-SQL).

Qualquer chamada a OPENDATASOURCE, OPENQUERY ou OPENROWSET na cláusula FROM é avaliada separada e independentemente de qualquer chamada a essas funções usadas como o destino da atualização, mesmo se argumentos idênticos forem fornecidos às duas chamadas.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. Em particular, as condições de filtro ou junção aplicadas no resultado de uma dessas chamadas não têm efeito sobre os resultados da outra.In particular, filter or join conditions applied on the result of one of those calls has no effect on the results of the other.

PermissõesPermissions

Qualquer usuário pode executar OPENDATASOURCE.Any user can execute OPENDATASOURCE. As permissões usadas para estabelecer conexão com o servidor remoto são determinadas na cadeia de conexão.The permissions that are used to connect to the remote server are determined from the connection string.

ExemplosExamples

A.A. Usar OPENDATASOURCE com SELECT e o Driver do OLE DB para SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Driver

O exemplo a seguir usa o Driver do Microsoft OLE DB para SQL Server Native Client para acessar a tabela HumanResources.Department do banco de dados AdventureWorks2012AdventureWorks2012 no 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. Uma instrução SELECT é usada para definir o conjunto de linhas retornado.A SELECT statement is used to define the row set returned. A cadeia de caracteres de provedor contém as palavras-chave Server e Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. Essas palavras-chave são reconhecidas pelo Driver do 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.B. Usar OPENDATASOURCE com SELECT e o Provedor do OLE DB para SQL ServerUsing OPENDATASOURCE with SELECT and the SQL Server OLE DB Provider

O exemplo a seguir cria uma conexão com a instância Payroll do SQL ServerSQL Server no servidor London e consulta 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.

Observação

Usar SQLNCLI redirecionará o SQL ServerSQL Server para a última versão do provedor OLE DB do SQL Server Native Client.Using SQLNCLI will redirect SQL ServerSQL Server to the latest version of SQL Server Native Client OLE DB Provider. Espera-se que o provedor OLE DB seja registrado com o PROGID especificado fornecido no Registro.The OLE DB provider is expected to be registered with the specified PROGID in the registry.

Importante

O SQL Server Native Client OLE DB (SQLNCLI) permanece preterido e não é recomendável usá-lo para um novo trabalho de desenvolvimento.SQL Server Native Client OLE DB provider (SQLNCLI) remains deprecated and it is not recommended to use it for new development work. Em vez disso, use o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL), que será atualizado com os recursos de servidor mais recentes.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. Usando o Microsoft OLE DB Provider for JetUsing the Microsoft OLE DB Provider for Jet

O exemplo a seguir cria uma conexão ad hoc com uma planilha do Excel no 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 TambémSee Also

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