Como fornecer autenticação de usuário quando abrir Jet vinculado tabelas para arquivos ODBC Sources

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 245587
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
No Microsoft Access, quando você vincula primeiro (anexar) uma tabela externa usando um driver de ODBC, você tem a opção para armazenar a ID de usuário e senha para a tabela localmente. Se você não armazena a identificação e a senha localmente, você será solicitado posteriormente para essas informações quando você abre a tabela.

Se você abrir a tabela por meio de ActiveX Data Objects (ADO), você receberá esse erro de tempo de execução:
"Falha de-2147467259(80004005) ODBC--a conexão com a 'Server'"
O erro ocorre porque a seqüência de conexão não foi concluída.

Este artigo demonstra como abrir uma tabela vinculada do Microsoft Access no ADO por pre-connecting para o banco de dados e fornecendo ID de usuário e senha por meio de programação no Visual Basic.
Mais Informações
O artigo,
177594Como ignorar logon prompt ao abrir a tabela vinculada
Descreve como realizar esse processo com Data Access Object (DAO). No entanto, isso não converter diretamente para o ADO. No DAO, todos os bancos de dados são abertos usando a mesma instância do Microsoft Jet. Armazenados em cache em um banco de dados de autenticação estarão disponível para todos. No ADO, cada conexão cria uma nova instância do Microsoft Jet. Autenticação armazenados em cache em uma conexão não está disponível para outras conexões.

Existem três soluções alternativas:
  • Abra fonte de dados ODBC diretamente no ADO ignorar o mecanismo Jet completamente. A vantagem desse método é o desempenho. A desvantagem é que essa técnica não permite heterogêneas associações entre tabelas ODBC e Jet.
  • Ao criar a tabela vinculada, escolha se as informações de autenticação armazenadas como parte do link. A vantagem é que você pode executar associações heterogêneas com dados do Jet locais. A desvantagem é que cada usuário obtém a autenticação do mesma. Além disso, qualquer pessoa que pode abrir o banco de dados poderá ser abrir a tabela vinculada, ignorar proteções de programa, embora você pode contornar isso usando uma senha de banco de dados ou segurança de usuário.
  • Pre-Authenticate o login ODBC usando uma técnica semelhante ao descrito no artigo mencionado no primeiro parágrafo desta seção. A vantagem é que você evite armazenar autenticação no Jet banco de dados, cada usuário pode ter uma autenticação separada, e você poderá executar associações com dados do Jet locais.
Para pre-authenticate acesso ODBC no ADO, você deve usar a mesma conexão em que você abrirá a tabela vinculada. Microsoft Jet fornece a sintaxe para fazer referência a um banco de dados externo e armazenará em cache as informações de autenticação.

O aplicativo de exemplo usa o banco de dados de "pubs" do Microsoft SQL Server para ilustrar a técnica. Para obter um melhor desempenho, você pode criar uma tabela fictícia contendo um único campo e há registros para usar no demonstrativo pré-autenticação.
  1. No Microsoft Access 2000, abra NorthWind.mdb e vincule uma tabela a uma fonte de dados ODBC. Neste exemplo, a tabela vinculada usa o nome da fonte de dados (DSN) do MeuServidor, o banco de dados Pubs e a tabela autores. Não salve a senha.
  2. No Microsoft Visual Basic versão 5.0 ou 6.0, a partir do menu Project, escolha referências e adicione uma referência para o Microsoft ActiveX Data Objects (versão 2.1 ou posterior) biblioteca.
  3. Adicione dois botões de comando (cmdOpenLink e cmdPreAuthenticate).
  4. Adicione o seguinte código ao módulo do formulário:

    Observação Você deve alterar usuário ID = < ID de Usuário > e a senha = < Senha de alta Segurança > para os valores corretos antes de executar esse código. Certifique-se que a ID de usuário tenha as permissões apropriadas para executar esta operação no banco de dados.
    Option ExplicitDim cn As ADODB.connectionPrivate Sub cmdOpenLink_Click()'' Opens a linked table'Dim rs As ADODB.Recordset  Set rs = New ADODB.Recordset  rs.open "dbo_authors", cn, adopenkeyset, adlockoptimistic, adcmdtable  rs.movelast  Debug.Print "There are"; rs.recordcount; "records."  rs.CloseEnd SubPrivate Sub cmdPreAuthenticate_Click()'' Opens a dummy recordset on a table using the same connection properties' as the linked table. This could be a dummy UPDATE statement to avoid the' overhead of recordset creation.'Dim rs As ADODB.Recordset  Set rs = cn.execute("SELECT * FROM [ODBC;DSN=MyServer;uid=<User ID>;pwd=<Strong Password>;database=pubs].Authors WHERE FALSE")  rs.closeEnd SubPrivate Sub Form_Load()  Set cn = New ADODB.connection  cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"End Sub					
  5. Executar o aplicativo e abra o formulário. Clique em cmdOpenLink . Você receberá um erro em tempo de execução.
  6. Finalizar o aplicativo e reinicie. Clique em cmdPreAuthenticate e, em seguida, clique em cmdOpenLink . A janela Immediate/Debug exibirá a contagem de registros.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 245587 - Última Revisão: 12/05/2015 17:24:55 - Revisão: 3.3

Microsoft ActiveX Data Objects 1.5, Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.1 Service Pack 1, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbnosurvey kbarchive kbmt kbclient kbdatabase kbhowto kbjet KB245587 KbMtpt
Comentários