Você está offline; aguardando reconexão

Desempenho mais lento em Jet ou baseada em acesso com base no banco de dados programas após atualizar do Windows NT 4.0 para o Windows 2000 ou para o Windows XP

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Saiba o que isto significa para você e como permanecer protegido.

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: 891176
Sintomas
Após atualizar seu computador do Microsoft Windows NT 4.0 para o Microsoft Windows 2000 ou para o Microsoft Windows XP Professional, você pode enfrentar desempenho mais lento no Microsoft Access - com base ou programas baseados no banco de dados Jet.
Causa
Esse problema pode ocorrer se um ou mais das seguintes condições forem verdadeiras:
  • Você está trabalhando com um banco de dados dividida e o arquivo de banco de dados back-end reside em uma pasta que tem um nome com mais de 8 caracteres. Por exemplo, o arquivo de banco de dados back-end reside em uma pasta que tenha um nome que seja semelhante à seguinte:
    BigFolderName
  • Você está trabalhando com um banco de dados dividida e o nome do arquivo de banco de dados back-end é maior do que 8 caracteres, excluindo a extensão .mdb de três caracteres. Por exemplo, o arquivo de banco de dados back-end tem um nome que seja semelhante à seguinte:
    BigDatabaseFileName.mdb
  • Você está trabalhando com um banco de dados que não é dividido e o nome do arquivo banco de dados não segue a convenção de nomes 8.3. Ou o banco de dados é armazenado em uma pasta que tem um nome longo.
O design cache o serviço Estação de trabalho no Windows 2000 e em versões posteriores do Windows é diferente do design de cache do serviço Estação de trabalho em versões anteriores do Windows.

No Windows 2000 e versões posteriores do Windows, o design de cache do serviço Estação de trabalho foi alterado para favorecer integridade em um ambiente multiusuário do banco de dados. Essa alteração de design faz com que um atraso quando Jet faz chamadas de API para recuperar informações sobre o nome de pasta longa ou sobre o nome de arquivo longo. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
889588Como otimizar o Office Access e o Jet banco de dados de mecanismo de desempenho da rede com clientes baseados no Windows 2000 e baseado no Windows XP
Resolução
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.

Se você estiver trabalhando com um banco de dados divisão, você pode resolver esse problema vinculando novamente as tabelas de Jet existentes. Para fazer isso, crie o código para enviar uma pequena representação do nome de pasta longa para a API do Windows. Essa resolução requer seu banco de dados back-end com um nome de arquivo que segue a convenção de nomes 8.3. Para criar esse código, execute as seguintes etapas no banco de dados front-end:
  1. Defina uma referência para Microsoft ADO Ext 2.5 (ou para uma versão posterior do ADO).
  2. Adicione o código a seguir a um novo módulo.
    Declare Function GetShortPathName Lib "kernel32" _            Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _           ByVal lpszShortPath As String, ByVal cchBuffer As Long) As LongFunction RefreshLinks()    On Error GoTo ErrorHandler        'Define the ADOX Catalog object.    Dim objCat As New ADOX.Catalog     'Define the ADOX Table object.    Dim objTbl As ADOX.Table     'Database name of the linked table.    Dim strFilename As String     'Path and database name of the linked table.    Dim strFullName As String     Dim blnIsMapi As Boolean    Dim blnIsImex As Boolean    Dim blnIsTemp As Boolean    Dim blnLongFileName As Boolean    Dim blnFailedLink As Boolean    Const srtImex = "IMEX"    Const strMapi = "MAPILEVEL="    'Open the catalog.    objCat.ActiveConnection = CurrentProject.Connection    'Loop through the table collection and update the linked tables.    For Each objTbl In objCat.Tables        'Verify that the table is a linked table.        If objTbl.Type = "LINK" = True Then            blnIsTemp = objTbl.Properties("Temporary Table") Or Left(objTbl.Name, 1) = "~"            blnIsImex = (InStr(1, objTbl.Properties("Jet OLEDB:Link Provider String"), srtImex, vbTextCompare) > 0)            blnIsMapi = (InStr(1, objTbl.Properties("Jet OLEDB:Link Provider String"), strMapi, vbTextCompare) > 0)            If Not blnIsTemp And Not blnIsImex And Not blnIsMapi Then                  'Verify that the table is a Jet table.                strFullName = objTbl.Properties("Jet OLEDB:Link Datasource")                strFilename = Mid(strFullName, InStrRev(strFullName, "\", _                            Len(strFullName)) + 1, Len(strFullName))                'Determine whether the database exists.                If DoesFileExist(strFullName) = True Then                    objTbl.Properties("Jet OLEDB:Link Datasource") = GetShortName(strFullName)                  'Update the link by using the short path name.                Else                    MsgBox "Cannot update: '" & objTbl.Name & "'" & String(2, vbCrLf) & "File not found: " & vbCrLf & strFullName                    blnFailedLink = True                End If                If InStr(strFilename, ".") > 9 Then blnLongFileName = True            End If        End If    Next       If blnFailedLink = False Then        If blnLongFileName = True Then            MsgBox "The table links were successfully updated, but the name of the backend database file does not follow 8.3" & _            vbCrLf & "Please rename the file, relink the tables, and then run the procedure again.", vbExclamation        Else            MsgBox "The links were successfully updated!!! ", vbInformation        End If    Else        MsgBox "The links were not successfully updated." & vbCrLf & "Please verify you table links.", vbExclamation    End IfExitHandler:     Exit FunctionErrorHandler:    MsgBox Err.Description & " " & Err.Number    Resume ExitHandler    End FunctionFunction GetShortName(ByVal sLongFileName As String) As String           Dim lRetVal As Long, sShortPathName As String, iLen As Integer           'Set up a buffer area for the API function call return.           sShortPathName = Space(255)           iLen = Len(sShortPathName)               'Call the function.           lRetVal = GetShortPathName(sLongFileName, sShortPathName, iLen)           'Remove unwanted characters.           GetShortName = Left(sShortPathName, lRetVal) End FunctionFunction DoesFileExist(strFileSpec As String) As Boolean    'Return True if the file that is specified in the    'strFilespec argument exists.    'Return False if strFileSpec is not a valid    'file or if strFileSpec is a directory.    Const INVALID_ARGUMENT As Long = 53    On Error GoTo DoesfileExist_Err    If (GetAttr(strFileSpec) And vbDirectory) <> vbDirectory Then        DoesFileExist = CBool(Len(Dir(strFileSpec)) > 0)    Else        DoesFileExist = False    End IfDoesfileExist_End:    Exit FunctionDoesfileExist_Err:    DoesFileExist = False    Resume DoesfileExist_EndEnd Function
  3. Execute a função RefreshLinks . Para fazer isso, execute as seguintes etapas:
    1. No Editor do Visual Basic, clique em janela imediata no menu Exibir .
    2. Na janela Immediate, digite RefreshLinks . Em seguida, pressione ENTER.
A função RefreshLinks faz um loop Embora as tabelas vinculadas do Jet em um banco de dados e verifica se o link é válido. Se o link é válido, o código usa a API do Windows funciona GetShortPathName para criar um nome curto que segue a convenção de nomes 8.3. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
142982Como o Windows gera nomes de arquivo 8.3 dos nomes de arquivo longos
Esse código, em seguida, atualiza o vínculo usando um caminho que inclui o novo nome curto. Se o link apontar para um arquivo de banco de dados back-end que não segue a convenção de nomeação 8.3, esse código gera uma mensagem para sugerir que você renomeie o arquivo de banco de dados back-end.
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Observação Se você usar o Windows XP, você pode melhorar o desempenho aplicando o Microsoft Windows XP Service Pack 2 (SP2).
Mais Informações
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
209862Como vincular novamente tabelas back-end com o controle diálogo comum no Access 2000
175512Como obter um nome de arquivo curto de um nome de arquivo longo
ACC2007 Acc2002 Acc2003 Microsoft Access XP Jet NT4 NT4.0 Win2000 WinXP

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 891176 - Última Revisão: 12/01/2007 02:09:17 - Revisão: 4.3

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition, Microsoft Access 2000 Standard Edition, Microsoft Access 97 Standard Edition

  • kbmt kbfilesystems kbenv kbtshoot kbhowto kbinfo KB891176 KbMtpt
Comentários