Compartilhar via


OPENDATASOURCE (Transact-SQL)

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.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

OPENDATASOURCE ( provider_name, init_string )

Argumentos

  • 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.

  • init_string
    É a cadeia de conexão passada para a interface IDataInitialize do provedor de destino. A sintaxe de cadeia de caracteres de provedor baseia-se em pares de valor e palavra-chave separados por ponto-e-vírgulas, como: 'keyword1=value; keyword2=value**'**.

    Para ver os pares de valor e palavra-chave específicos com suporte no provedor, consulte o SDK do Microsoft Data Access. Essa documentação define a sintaxe básica. A tabela a seguir lista as palavras-chave usadas mais frequentemente no argumento init_string.

    Palavra-chave

    Propriedade OLE DB

    Valores válidos e descrição

    Fonte de Dados

    DBPROP_INIT_DATASOURCE

    Nome da fonte de dados à qual se conectar. Provedores diferentes interpretam isso de várias formas. Para o provedor OLE DB SQL Server Native Client, isso indica o nome do servidor. Para o provedor OLE DB Jet, indica o caminho completo do arquivo .mdb ou .xls.

    Local

    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 Usuário

    DBPROP_AUTH_USERID

    ID de usuário a ser usada para a conexão.

    Senha

    DBPROP_AUTH_PASSWORD

    Senha a ser usada para a conexão.

    Catálogo

    DBPROP_INIT_CATALOG

    O nome do catálogo inicial ou padrão durante a conexão à fonte de dados.

    Segurança Integrada

    DBPROP_AUTH_INTEGRATED

    SSPI, para especificar a Autenticação do Windows

Comentários

OPENDATASOURCE poderá ser usada para acessar dados remotos de fontes de dados OLE DB somente quando a opção do Registro DisallowAdhocAccess estiver definida explicitamente 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 estão definidas, o comportamento padrão não permite acesso ad hoc.

A função OPENDATASOURCE pode ser usada nos mesmos locais da sintaxe Transact-SQL que um nome de servidor vinculado. 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. Ao executar procedimentos armazenados remotos, OPENDATASOURCE deve fazer referência a outra instância do SQL Server. OPENDATASOURCE não aceita variáveis para seus argumentos.

Assim como a função OPENROWSET, OPENDATASOURCE deve referenciar apenas fontes de dados OLE DB que são acessadas com pouca frequência. Defina um servidor vinculado para qualquer fonte de dados acessada muitas vezes. 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. Todas as informações de conexão, inclusive senhas, devem ser fornecidas sempre que OPENDATASOURCE é chamada.

Observação importanteImportante

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

Os requisitos de conexão de cada provedor são semelhantes aos requisitos desses parâmetros durante a criação de servidores vinculados. Os detalhes dos muitos provedores comuns são listados no tópico sp_addlinkedserver (Transact-SQL).

Qualquer chamada para OPENDATASOURCE, OPENQUERY ou OPENROWSET na cláusula FROM é avaliada separada e independentemente de qualquer chamada para essas funções usadas como o destino da atualização, mesmo se argumentos idênticos forem fornecidos às duas chamadas. Em particular, as condições de filtro ou junção aplicadas no resultado de uma dessas chamadas não têm efeito sobre os resultado da outra.

Permissões

Qualquer usuário pode executar OPENDATASOURCE. As permissões usadas para estabelecer conexão com o servidor remoto são determinadas na cadeia de conexão.

Exemplos

O exemplo a seguir cria um conexão ad hoc com a instância Payroll de SQL Server no servidor Londone consulta a tabela AdventureWorks2012.HumanResources.Employee. (Use SQLNCLI, e o SQL Server será redirecionado para a versão mais recente versão do Provedor OLE DB do SQL Server Native Client.)

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

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$] ;

Consulte também

Referência

OPENROWSET (Transact-SQL)

sp_addlinkedserver (Transact-SQL)