Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure 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$] ;