COMO FAZER: Use o Controle de Conexão para Evitar que Usuários Efetuem Logon em Tempo de Execução no Access 2002

Traduções deste artigo Traduções deste artigo
ID do artigo: 287655 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi publicado anteriormente em BR287655
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Usando o Microsoft Visual Basic para Aplicações no Microsoft Access, você pode evitar q ue usuários efetuem logon num banco de dados do Jet. Se os usuários já estão no banco de dados, estes irão permanecer conectados; porém, nenhum outro usuário poderá abrir o banco de dados. Isto é chamado de desconexão passiva.

O código de exemplo neste artigo demonstra como executar uma desconexão passiva e também como dar saída de uma lista dos usuários que já estão conectados no banco de dados.

O Controle de Conexão

O recurso do controle de conexão (também conhecido como desconexão passiva) evita que usuários se conectem num banco de dados. Esta capacidade é útil para um administrador de banco de dados que precise adquirir acesso exclusivo num banco de dados para executar manutenção, por exemplo, para compactar o banco de dados, ou quem precisa fazer atualizações no esquema ou nas aplicações do banco de dados.

Quando o controle de conexão é invocado, os usuários conectados atualmente num banco de dados irão permacer conectados até que se desconectem. Neste ponto, eles não conseguem se reconectar até que o controle de conexão seja revogado.

Os seguintes cenários fornecem esclarecimentos adicionais sobre como esta capacidade funciona:
  • Cinco usuários estão no banco de dados. O quinto usuário inicia a desconexão passiva. O sexto usuário tenta se conectar ao banco de dados, mas o acesso é negado e uma mensagem de erro é retornado declarando que o quinto usuário está evitando o banco de dados de ser aberto.
  • Cinco usuários estão no banco de dados. O quinto usuário inicia a desconexão passiva. O primeiro usuário fecha o banco de dados e tenta se reconectar, mas o acesso é negado e uma mensagem de erro é retornada declarando que o quinto usuário está evitando o banco de dados de ser aberto.
  • Cinco usuários estão no banco de dados. O quinto usuário inicia a desconexão passiva. O quinto usuário fecha o banco de dados. O sexto usuário tenta abrir o banco de dados e é bem sucedido. Isto porque a desconexão passiva só persiste enquanto o usuário que chamou esta permanece conectado no banco de dados.
  • Cinco usuários estão no banco de dados. O quinto usuário inicia a desconexão passiva. Os quatro primeiros usuários saem do banco de dados. O quinto usuário chama a funcionalidade da lista e determina que nenhum outro usuário esteja no banco de dados. O quinto usuário fecha o banco de dados e imediatamente compacta o banco de dados.

A Lista de Usuários

O recurso da lista de usuários fornece uma maneira de determinar quem está atualmente conectado num banco de dados do Microsoft Jet. A lista pode ser obtida via interface de programação ADO e retorna as seguintes informações para cada usuário:
  • Nome do computador que está em uso.
  • Nome de segurança, isto é, o ID do usuário.
  • Se o usuário está ou não conectado atualmente ao banco de dados (Um ID de usuário permanece nos bloqueios de banco de dados até que o último usuário se desconecte ou até que a abertura seja regenerada para uma nova conexão de usuário).
  • Se a conexão do usuário foi terminada normalmente ou não.
A capacidade da lista de usuário pode ser usada em conjunto com o controle de conexão para determinar quais usuários ainda estão conectados, assim estes podem ser solicitados a se desconectarem.

A capacidade da lista de usuários é também útil no isolamento de problemas com a corrupção do banco de dados que está associado às atividades de um usuário específico.

Código de Exemplo

A Microsoft fornece exemplos de programação somente para ilustração, sem garantia expressa ou implícita, mas não limitado, às garantias implícitas de comercialização e/ou para um propósito particular. Esse artigo assume que você está familiarizado com as linguagens de programação que estão sendo demonstradas e as ferramentas utilizadas para criar e procedimentos de depuração. Os engenheiros de suporte da Microsoft podem ajudá-lo explicando a funcionalidade de um procedimento particular, mas eles não modificarão estes exemplos para prover funcionalidades adicionais ou construir procedimentos para satisfazer suas necessidades específicas. Se a sua experiência com programação é limitada, entre em contato com um Parceiro Certificado Microsoft para informações sobre como obter suporte técnico pago. Para obter informações adicionais sobre Parceiros Certificados da Microsoft, veja o seguinte site da Web da Microsoft:
http://www.microsoft.com/partner/referral/
Para obter informações adicionais sobre as opções de suporte que estão disponíveis e sobre como contatar a Microsoft, visite o seguinte site Web da Microsoft:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
Para demonstrar o código de exemplo, siga esses passos:
  1. Copie o banco de dados Northwind.mdb para o diretório raiz da unidade C.
  2. No Microsoft Access, abra C:\Northwind.mdb.
  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 então quando for solicitado, salve as alterações para ShutDownDB. (Isto tem quer feito para liberar um bloqueio exclusivo no banco de dados dedvido ao código que você adicionou).
  8. Abra de novo C:\Northwind.mdb.
  9. Pressione CTRL+G para abrir a janela Imediata no Editor do Visual Basic.
  10. Digite a seguinte linha na janela Imediata, e então pressione ENTER:
    ShowUserRosterAndPassiveShutdown
Anote a lista de usuários do banco de dados exibida na janela Imediata.




Referências

Para obter um artigo que mostre como efetuar a desconexão uma aplicação de acesso personalizada remotamente, veja o seguinte artigo na Base de Dados de Conhecimento da Microsoft:
304408 ACC2002: How to Shut Down a Custom Access Application Remotely










Propriedades

ID do artigo: 287655 - Última revisão: quinta-feira, 12 de outubro de 2006 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbdta kbhowto kbhowtomaster KB287655

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com