Partilhar via


OPENDATASOURCE (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

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.

Transact-SQL convenções de sintaxe

Syntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Arguments

'provider_name'

O nome registrado como PROGID do provedor OLE DB usado para acessar a fonte de dados. provider_name é um tipo de dados char , sem valor padrão.

Important

O SQL Server Native Client (geralmente abreviado SNAC) foi removido do SQL Server 2022 (16.x) e do SQL Server Management Studio 19 (SSMS). O provedor OLE DB do SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o provedor Microsoft OLE DB herdado para SQL Server (SQLOLEDB) não são recomendados para novos desenvolvimentos. Mude para o novo Microsoft OLE DB Driver (MSOLEDBSQL) para SQL Server daqui em diante.

'init_string'

A cadeia de conexão passada para a interface IDataInitialize do provedor de destino. A sintaxe da cadeia de caracteres do provedor é baseada em pares palavra-chave-valor separados por ponto-e-vírgula, como: 'keyword1=value;keyword2=value'.

Para pares específicos de palavra-chave e valor suportados no provedor, consulte o SDK do Microsoft Data Access. Esta documentação define a sintaxe básica. A tabela a seguir lista as palavras-chave usadas com mais freqüência no argumento init_string .

Keyword Propriedade OLE DB Valores e descrição válidos
Fonte de dados DBPROP_INIT_DATASOURCE Nome da fonte de dados à qual se conectar. Diferentes provedores interpretam isso de maneiras diferentes. Para o provedor OLE DB do SQL Server Native Client, isso indica o nome do servidor. Para o provedor Jet OLE DB, isso indica o caminho completo do arquivo .mdb ou .xls arquivo.
Location DBPROP_INIT_LOCATION Local do banco de dados ao qual se conectar.
Propriedades Estendidas DBPROP_INIT_PROVIDERSTRING A cadeia de conexão específica do provedor.
Tempo limite de conexão DBPROP_INIT_TIMEOUT Valor de tempo limite após o qual a tentativa de conexão falha.
ID de utilizador DBPROP_AUTH_USERID ID de usuário a ser usado para a conexão.
Password DBPROP_AUTH_PASSWORD Senha a ser usada para a conexão.
Catalog DBPROP_INIT_CATALOG O nome do catálogo inicial ou padrão ao se conectar à fonte de dados.
Segurança Integrada DBPROP_AUTH_INTEGRATED SSPI, para especificar a Autenticação do Windows

Remarks

OPENROWSET sempre herda o agrupamento de instâncias, independentemente do conjunto de agrupamento para colunas.

OPENDATASOURCE pode ser usado para acessar dados remotos de fontes de dados OLE DB somente quando a opção de registro DisallowAdhocAccess estiver explicitamente definida como 0 para o provedor especificado e a opção de configuração avançada Ad Hoc Distributed Queries estiver habilitada. Quando essas opções não são definidas, o comportamento padrão não permite acesso ad hoc.

A OPENDATASOURCE função pode ser usada nos mesmos locais de sintaxe Transact-SQL que um nome de servidor vinculado. Portanto, OPENDATASOURCE pode ser usado como a primeira parte de um nome de quatro partes que se refere 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. Em procedimentos armazenados remotos, OPENDATASOURCE deve referir-se a outra instância do SQL Server. OPENDATASOURCE não aceita variáveis para seus argumentos.

Como a função, OPENROWSET só deve fazer referência a OPENDATASOURCE fontes de dados OLE DB que são acessadas com pouca frequência. Defina um servidor vinculado para todas as fontes de dados acessadas mais de várias vezes. Nem OPENDATASOURCE nem OPENROWSET fornecem todas as funcionalidades das definições de servidor vinculado, como gerenciamento de segurança e a capacidade de consultar informações de catálogo. Todas as informações de conexão, incluindo senhas, devem ser fornecidas sempre que OPENDATASOURCE for chamado.

Important

A Autenticação do Windows é muito mais segura do que a Autenticação do SQL Server. Você deve usar a Autenticação do Windows sempre que possível. OPENDATASOURCE não deve ser usado com senhas explícitas na cadeia de conexão.

Os requisitos de conexão para cada provedor são semelhantes aos requisitos para esses parâmetros ao criar servidores vinculados. Os detalhes para muitos provedores comuns estão listados no artigo sp_addlinkedserver (Transact-SQL).

Qualquer chamada para OPENDATASOURCE, OPENQUERYou OPENROWSET na cláusula FROM é avaliada separadamente e independentemente de qualquer chamada para essas funções usadas como destino da atualização, mesmo que argumentos idênticos sejam fornecidos para as duas chamadas. Em especial, as condições de filtragem ou de junção aplicadas ao resultado de uma dessas chamadas não têm incidência nos resultados da outra.

Permissions

Qualquer usuário pode executar OPENDATASOURCE. As permissões usadas para se conectar ao servidor remoto são determinadas a partir da cadeia de conexão.

Limitations

Não suportado com o driver do Mecanismo de Banco de Dados do Microsoft Access.

Examples

A. Usando OPENDATASOURCE com SELECT e o driver OLE DB do SQL Server

O exemplo a seguir usa o driver Microsoft OLE DB para SQL Server para acessar a HumanResources.DepartmentAdventureWorks2025 tabela no banco de dados no servidor Seattle1remoto. Uma SELECT instrução é usada para definir o conjunto de linhas retornado. A cadeia de caracteres do provedor contém as palavras-chave Server e Trusted_Connection. Essas palavras-chave são reconhecidas pelo driver OLE DB do SQL Server.

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

B. Usando OPENDATASOURCE com SELECT e o provedor OLE DB do SQL Server

O exemplo a seguir cria uma conexão ad hoc com a Payroll instância do SQL Server no servidor Londone consulta a AdventureWorks2022.HumanResources.Employee tabela.

Note

O uso do SQLNCLI redirecionará o SQL Server para a versão mais recente do provedor OLE DB do SQL Server Native Client. Espera-se que o provedor OLE DB seja registrado com o PROGID especificado no registro.

Important

O provedor OLE DB do SQL Server Native Client (SQLNCLI) permanece preterido e não é recomendado usá-lo para novos trabalhos de desenvolvimento. Em vez disso, use o novo driver Microsoft OLE DB para SQL Server (MSOLEDBSQL) que será atualizado com os recursos de servidor mais recentes.

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

C. Usando o 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.

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

Próximos passos