Prestazioni basate su Access o Microsoft Jet database programmi dopo l'aggiornamento da Windows NT 4.0 a Windows 2000 o a Windows XP

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 891176
Sintomi
Dopo l'aggiornamento del computer da Microsoft Windows NT 4.0 per Microsoft Windows 2000 e Microsoft Windows XP Professional, non è possibile prestazioni più lente in Microsoft Access - base o programmi basati su database di Jet.
Cause
Questo problema può verificarsi se uno o più delle seguenti condizioni:
  • Lavora con un database di divisione e il file di database back-end risiede in una cartella con un nome più lungo di 8 caratteri. Ad esempio, il file di database back-end risiede in una cartella con un nome simile al seguente:
    BigFolderName
  • Si sta utilizzando un database di divisione, e il nome del file di database back-end è più lungo di 8 caratteri, esclusa l'estensione nome del file mdb di tre caratteri. Ad esempio, il file di database di back-end è un nome simile al seguente:
    BigDatabaseFileName.mdb
  • Si lavora con un database che non è divisa, e non è seguita la convenzione di denominazione 8.3 per il nome del file di database. O il database viene memorizzato in una cartella ha un nome lungo.
La struttura di memorizzazione nella cache del servizio workstation in Windows 2000 e versioni successive di Windows è diversa dalla struttura di memorizzazione nella cache di servizio workstation di versioni precedenti di Windows.

In Windows 2000 e versioni successive di Windows, la struttura di memorizzazione nella cache del servizio workstation è stata modificata Ottimizza per database di integrità in un ambiente multiutente. Questa modifica di progettazione, un ritardo quando Jet esegue chiamate di API per recuperare le informazioni sul nome della cartella lungo o sul nome file lungo. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
889588Come ottimizzare Office Access e Jet database modulo di gestione di prestazioni della rete con client basati su Windows 2000 e basato su Windows XP
Risoluzione
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non è limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma in nessun sono caso a modificare questi esempi per fornire funzionalità aggiuntive o creare procedure per soddisfare specifiche esigenze.

Se si lavora con un database di divisione, è possibile risolvere il problema da ricollegamento delle tabelle Jet esistenti. A tale scopo, è necessario creare codice per inviare una rappresentazione in forma breve del nome lungo l'API di Windows. Questa soluzione richiede il database di backend abbia un nome di file che segue la convenzione di denominazione 8.3. Per creare questo codice, attenersi alla seguente procedura nel database interno:
  1. Impostare un riferimento a Microsoft ADO Ext 2.5 (oppure a una versione successiva di ADO).
  2. Aggiungere il codice riportato di seguito un nuovo modulo.
    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. Eseguire la funzione RefreshLinks . Per effettuare questa operazione, attenersi alla seguente procedura:
    1. In Visual Basic Editor scegliere finestra immediata dal menu Visualizza .
    2. Nella finestra immediata, digitare RefreshLinks . Quindi premere INVIO.
La funzione RefreshLinks eseguito un ciclo tuttavia la tabelle Jet collegate in un database e viene verificato se il collegamento è valido. Se il collegamento è valido, questo codice si utilizza l'API di Windows di funzionare GetShortPathName per creare un nome breve che segue la convenzione di denominazione 8.3. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
142982Come Windows genera nomi di file 8.3 da nomi di file lunghi
Questo codice viene quindi aggiorna il collegamento utilizzando un percorso che include il nuovo nome breve. Se il collegamento punta a un file di database di back-end che non seguita la convenzione di denominazione 8.3, questo codice genera un messaggio per suggerire di rinominare il file di database backend.
Status
Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Nota Se si utilizza Windows XP, è possibile migliorare le prestazioni mediante l'applicazione di Microsoft Windows XP Service Pack 2 (SP2).
Informazioni
Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
209862Come ricollegare le tabelle back-end con il controllo finestra di dialogo comuni in Access 2000
175512Come ottenere un nome di file brevi da un nome di file lungo
ACC2007 Acc2002 Acc2003 verrà XP Jet NT4 NT4.0 Win2000 WinXP

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 891176 - Ultima revisione: 12/01/2007 02:09:17 - Revisione: 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 KbMtit
Feedback