Windows NT 4.0'dan Windows 2000'e veya Windows XP'ye yükselttikten sonra Access tabanlı veya Jet veritabanı tabanlı programlarda performans düşüyor

Office 2003 desteği sona erdi

Microsoft, Office 2003 desteğini 8 Nisan 2014'te sona erdirdi. Bu değişiklik yazılım güncelleştirmelerinizi ve güvenlik seçeneklerinizi etkiledi. Bunun sizin için ne anlama geldiğini ve korunmaya nasıl devam edebileceğinizi öğrenin.

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:891176
Belirtiler
Bilgisayarınızı Microsoft Windows NT 4. 0'dan Microsoft Windows 2000 veya Microsoft Windows XP Professional'a yükselttikten sonra Microsoft Access'te, düşük performansla karşılaşabilirsiniz - tabanlı veya veritabanı tabanlı programlarda Jet.
Neden
Bu sorun, aşağıdaki koşullardan biri veya daha fazlası doğru olduğunda oluşabilir:
  • Bölünmüş veritabanını ile çalışıyorsanız ve arka uç veritabanı dosyasını 8 karakterden daha uzun bir adı olan bir klasörü bulunur. Örneğin, arka uç veritabanı dosyasını aşağıdakine benzer bir ada sahip bir klasör bulunur:
    BigFolderName
  • Bölünmüş veritabanını ile çalışıyorsanız ve üç karakterlik bir .mdb dosya adı uzantısı dışında 8 karakterden uzun bir arka uç veritabanı dosyasının adı. Örneğin, arka uç veritabanı dosyasını, aşağıdakine benzer bir ada sahiptir:
    BigDatabaseFileName.mdb
  • Bölünmüş bir veritabanıyla çalışıyorsanız ve veritabanı dosyasının adı 8.3 adlandırma izleyin. Veya, veritabanında uzun bir adı olan bir klasörde saklanır.
Önbelleğe alma tasarımı, iş istasyonu hizmeti Windows 2000'de ve Windows'un sonraki sürümleri, Windows'un önceki sürümlerinde iş istasyonu hizmetindeki önbellek tasarımını farklıdır.

Windows 2000 ve Windows'un sonraki sürümlerinde, önbelleğe alma tasarımı, iş istasyonu hizmeti dikkate için değiştirilmiş olan bütünlük çok kullanıcılı bir ortamda veritabanı. Jet, uzun bir klasör adı hakkında veya uzun dosya adı hakkında bilgi almak için API çağrıları yaptığında, bu tasarım değişikliği gecikmeye neden olur. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
889588Windows 2000 ve Windows XP tabanlı istemcilerde Office Access ve Jet veritabanı alt yapısı ağ performansı nasıl en iyi duruma getirilir
Çözüm
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Bölünmüş veritabanını ile çalışıyorsanız, varolan Jet tabloları yeniden bağlama göre bu sorunu çözümleyebilirsiniz. Bunu yapmak için <a0></a0>, Windows API için uzun bir klasör adı daha kısa bir gösterimini göndermek için bir kod oluşturun. Bu çözüm, arka uç veritabanınız bir dosya adı 8.3 adlandırma izleyen gerektirir. Bu kodu oluşturmak için <a0></a0>, ön uç veritabanı'ndaki adımları izleyin:
  1. Microsoft ADO Ext 2.5 (veya daha ileri bir sürümüne ADO), bir başvuru oluşturun.
  2. Aşağıdaki kod yeni bir modüle ekleyin.
    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. RefreshLinks işlevini çalıştırın. Bunu yapmak için şu adımları izleyin:
    1. Visual Basic Düzenleyicisi'nde Anlık pencere, Görünüm menüsünde tıklatın.
    2. Komut penceresi içinde RefreshLinks yazın. Ardından, ENTER'E basın.
RefreshLinks işlevi, ancak veritabanı Jet bağlantılı tablolarda döngüsü ve bağlantıyı geçerli olup olmadığını doğrular. Bağlantıyı geçerli GetShortPathName 8.3 adlandırma izleyen bir kısa ad oluşturmak için bu kodu kullanır (Windows API işlevi ise. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
142982Windows 8.3 dosya adlarını uzun dosya adları nasıl oluşturur
Bu kod, bağlantıyı daha sonra yeni kısa ad içeren bir yol kullanarak güncelleştirir. Bu kod, 8.3 adlandırma izleyen bir arka uç veritabanı dosyasını bağlantı noktaları, arka uç veritabanı dosyasını yeniden adlandırma öneren bir ileti oluşturur.
Durum
Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.

Not Windows XP kullanıyorsanız, Microsoft Windows XP Service Pack 2 (SP2)'i uygulayarak performansı iyileştirebilir.
Daha fazla bilgi
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
209862Access 2000'de ortak iletişim denetimi arka uç tablolar bağlamak hakkında
175512Uzun dosya adı bir kısa dosya adı nasıl
ACC2007 Acc2002 Acc2003 Microsoft Access XP Jet NT4 NT4.0 Win2000 WinXP

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Властивості

Ідентифікатор статті: 891176 – останній перегляд: 12/01/2007 02:09:17 – виправлення: 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 KbMttr
Зворотний зв’язок