ID do artigo: 198756 - Última revisão: quinta-feira, 23 de junho de 2005 - Revisão: 3.0

COMO: Utilizar controle de conexão para evitar o logon do usuário em tempo de execução no Access 2000

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Usando o Microsoft Visual Basic for Applications no Microsoft Access, você pode impedir os usuários fazer logon em um banco de dados Jet. Se os usuários já estiverem no banco de dados, eles permanecerão conectados; no entanto, nenhum outro usuário será capaz de abrir o banco de dados. Isso é chamado uma desconexão passiva.

O exemplo de código neste artigo demonstra como executar uma desconexão passiva e bem como gerar uma lista de usuários que já estejam logon para o banco de dados.

O controle da conexão

O recurso de controle (também conhecido como desconexão passiva) de conexão impede que usuários se conectar a um banco de dados. Esse recurso é útil para um administrador de banco de dados que precise adquirir acesso exclusivo a um banco de dados para executar manutenção, por exemplo, compactar o banco de dados, ou quem precisa fazer atualizações no esquema de banco de dados ou aplicativos.

Quando controle de conexão é invocado, usuários atualmente conectados a um banco de dados permanecerão inalterados até a desconexão. Nesse ponto, eles não consegue se reconectar até que o controle de conexão foi revogado.

Os cenários a seguir fornecem idéias adicional sobre como esse recurso funciona:
  • Os cinco usuários estão no banco de dados. Usuário inicia cinco passiva. Usuário seis tenta se conectar ao banco de dados, mas o acesso negado e uma mensagem de erro é retornada declarando que o quinto usuário está evitando o banco de dados de que está sendo aberto.
  • Os cinco usuários estão no banco de dados. Usuário inicia cinco passiva. Usuário um fecha o banco de dados e tenta se reconectar ao banco de dados, mas é acesso negado e uma mensagem de erro é retornado declarando que o quinto usuário está evitando o banco de dados de que está sendo aberto.
  • Os cinco usuários estão no banco de dados. Usuário inicia cinco passiva. O quinto usuário fecha o banco de dados. Usuário seis tenta abrir o banco de dados e é bem-sucedido. Isso ocorre porque a desconexão passiva só persiste enquanto o usuário que chamou permanece conectado ao banco de dados.
  • Os cinco usuários estão no banco de dados. Usuário inicia cinco passiva. Usuários 1 através de quatro sair do banco de dados. Usuário cinco chama a funcionalidade de lista de usuário e determina que nenhum outro usuário está no banco de dados. O quinto usuário fecha o banco de dados e imediatamente compacta o banco de dados.

Lista do usuário

O recurso de lista de usuário fornece uma maneira de determinar quem está conectado no momento a um banco de dados Microsoft Jet. A lista pode ser obtida por meio da interface de programação ADO e retorna as seguintes informações para cada usuário:
  • Nome do computador que está sendo usado.
  • Nome de segurança, ou seja, a identificação do usuário.
  • Se o usuário é conectado no momento para o banco de dados (ID do usuário A permanece no banco de dados bloqueio até que o último usuário se desconecta ou até que o slot é recuperado para uma nova conexão de usuário.).
  • Se a conexão de usuário foi encerrada normalmente.
A capacidade da lista usuário pode ser usada em conjunto com o recurso de controle de conexão para determinar quais usuários ainda estão conectados, para que eles podem ser solicitados a se desconectar.

A capacidade da lista usuário também é útil para isolar problemas de corrupção de banco de dados que está associado com as atividades de um usuário específico.

Exemplo de código

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades. Para demonstrar o exemplo de código, execute estas etapas:
  1. Copie o banco de dados de exemplo Northwind para o diretório C:\.
  2. No Microsoft Access, abra C:\Northwind.
  3. Crie um novo módulo chamado ShutDownDB .
  4. No menu Ferramentas , clique em referências .
  5. Na caixa de diálogo referências , clique para selecionar a seguinte referência:
    Microsoft ActiveX Data Objects 2.1 Library
  6. Digite o seguinte código no novo módulo:
    Sub ShowUserRosterAndPassiveShutdown()
        Dim cn As New ADODB.Connection
        Dim cn2 As New ADODB.Connection
        Dim cn3 As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        Dim j As Long
    
        On Error GoTo ErrHandler
        
        cn.Provider = "Microsoft.Jet.OLEDB.4.0"
        cn.Open "Data Source=c:\Northwind.mdb"
        
        cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=c:\Northwind.mdb"
        
        ' Restrict other users from opening the database
        cn.Properties("Jet OLEDB:Connection Control") = 1
        
        ' Attempt to open another connection to the database
        cn3.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=c:\Northwind.mdb"
        
        ' The user roster is exposed as a provider-specific
        ' schema rowset in the Jet 4 OLE DB provider.  You have to use
        ' a GUID to reference the schema, as provider-specific schemas
        ' are not listed in ADO's type library for schema rowsets
        
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, , _
        "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
        
        ' Output the list of all users in the current database.
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
        
        Do While Not rs.EOF
           Debug.Print rs.Fields(0), rs.Fields(1), _
           rs.Fields(2), rs.Fields(3)
           rs.MoveNext
        Loop
        
        ' Close one of the remaining connections
        cn2.Close
        
        ' Reopen the user roster to verify that no other users are in the
        ' database Output the list of all users in the current database.
        
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, , _
        "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
        
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
        
        Do While Not rs.EOF
           Debug.Print rs.Fields(0), rs.Fields(1), _
           rs.Fields(2), rs.Fields(3)
           rs.MoveNext
        Loop
        
        cn.Close
        
        Exit Sub
    
    ErrHandler:
    
        For j = 0 To cn.Errors.Count - 1
           Debug.Print "Conn Err Num : "; cn.Errors(j).Number
           Debug.Print "Conn Err Desc: "; cn.Errors(j).Description
        Next j
        
        For j = 0 To cn2.Errors.Count - 1
           Debug.Print "Conn Err Num : "; cn2.Errors(j).Number
           Debug.Print "Conn Err Desc: "; cn2.Errors(j).Description
        Next j
        
        For j = 0 To cn3.Errors.Count - 1
           Debug.Print "Conn Err Num : "; cn3.Errors(j).Number
           Debug.Print "Conn Err Desc: "; cn3.Errors(j).Description
        Next j
        
        Resume Next
    
    End Sub
    					

  7. Feche o banco de dados Northwind e quando solicitado, salve as alterações para ShutDownDB. (Isso deve ser feito para liberar um bloqueio exclusivo no banco de dados devido ao código que você acabou de adicionar.)
  8. Reabra C:\Northwind.mdb.
  9. Pressione CTRL+G para exibir a janela imediata no Editor do Visual Basic.
  10. Digite o seguinte na janela Verificação imediata e pressione ENTER:
    ShowUserRosterAndPassiveShutdown
    					
Observe a lista de usuários do banco de dados exibidos na janela Verificação imediata.






A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbhowto kbhowtomaster KB198756 KbMtpt
Tradução automáticaTradução automática
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: 198756  (http://support.microsoft.com/kb/198756/en-us/ )