Windows NT 4 .0에서 Windows 2000 또는 Windows XP로 업그레이드한 후 액세스 기반 또는 잉크젯 데이터베이스 기반 프로그램에서 성능이

기술 자료 번역 기술 자료 번역
기술 자료: 891176 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

현상

Microsoft Windows 2000 또는 Microsoft Windows XP Professional 컴퓨터를 Microsoft Windows NT 4 .0에서 업그레이드한 후 Access에서 느린 성능이 저하될 수 있습니다 - 기반으로 또는 Jet 데이터베이스 기반 프로그램.

원인

다음 조건 중 한 경우 이 문제가 발생할 수 있습니다.
  • 분할 데이터베이스를 사용하여 작업하는 및 백 엔드 데이터베이스 파일에 8자 이상의 긴 이름을 있는 폴더에 위치합니다. 예를 들어, 다음과 유사한 이름을 가진 폴더를 백 엔드 데이터베이스 파일에 있는:
    BigFolderName
  • 분할 데이터베이스를 사용하여 작업하고 백 엔드 데이터베이스 파일의 이름을 8자 이상의 세 문자로 된 .mdb 파일 이름 확장명을 제외한 깁니다. 예를 들어, 백 엔드 데이터베이스 파일에 다음과 유사한 이름이 있습니다.
    BigDatabaseFileName.mdb
  • 분할할 수 있는 데이터베이스로 작업하는 및 데이터베이스 파일 이름을 8.3 명명 규칙을 따르지 않습니다. 또는 데이터베이스를 긴 이름을 가진 폴더에 저장됩니다.
캐싱 디자인 워크스테이션 서비스의 Windows 2000 및 이후 버전의 Windows에서 이전 버전의 Windows 워크스테이션 서비스의 캐싱 디자인 다릅니다.

Windows 2000 및 이후 버전의 Windows 워크스테이션 서비스 캐싱 디자인 처리하도록 변경된 무결성 다중 사용자 환경에서 데이터베이스. 이 디자인 변경 Jet API 호출에 대한 긴 폴더 이름 또는 긴 파일 이름에 대한 정보를 검색할 때 지연이 발생합니다. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
889588Office Access 및 Jet 데이터베이스 엔진 네트워크 성능을 Windows 2000 기반 및 Windows XP 기반 클라이언트가 최적화하는 방법

해결 방법

Microsoft는 묵시적인 보증 없이 목적으로만 프로그래밍 예제를 제공합니다. 이 포함되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적인된 보증이 제한되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.

분할 데이터베이스를 사용하여 작업하는 경우, 기존 Jet 테이블을 다시 링크 이 문제를 해결할 수 있습니다. 이렇게 하려면 Windows API 긴 폴더 이름 약식 표현을 보내도록 코드를 만듭니다. 이 백 엔드 데이터베이스를 8.3 명명 규칙을 따르는 파일 이름이 있어야 합니다. 이 코드를 만들려면 프런트 엔드 데이터베이스의 다음과 같이 하십시오.
  1. Microsoft ADO Ext 2.5 (또는 이후 버전의 ADO) 참조를 설정하십시오.
  2. 새 모듈에 다음 코드를 추가하십시오.
    Declare Function GetShortPathName Lib "kernel32" _
                Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
               ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
    
    Function 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 If
    
    ExitHandler:
         Exit Function
    
    ErrorHandler:
        MsgBox Err.Description & " " & Err.Number
        Resume ExitHandler
        
    End Function
    Function 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 Function
    
    Function 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 If
    DoesfileExist_End:
        Exit Function
    DoesfileExist_Err:
        DoesFileExist = False
        Resume DoesfileExist_End
    End Function
    
  3. RefreshLinks 함수를 실행하십시오. 이렇게 하려면 다음과 같이 하십시오.
    1. Visual Basic 편집기에서 [보기] 메뉴에서 [직접 실행 창 을 누릅니다.
    2. 직접 실행 창에 RefreshLinks를 입력하십시오. 그런 다음 Enter 키를 누릅니다.
RefreshLinks 함수를 하지만 데이터베이스에 연결된 Jet 테이블 반복하고 링크를 사용할 수 있는지 여부를 확인합니다. 링크를 사용할 수 있으면 이 코드를 사용하는 Windows API 8.3 명명 규칙을 따르는 간단한 이름을 만들려면 GetShortPathName 기능을. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
142982Windows에서 긴 파일 이름을 8.3 파일 이름을 생성하는 방법을
그런 다음 이 코드는 새 짧은 이름이 포함된 경로를 사용하여 링크를 업데이트합니다. 8.3 명명 규칙을 따르지 않는 백 엔드 데이터베이스 파일에 링크가 가리키는 경우 이 코드를 백 엔드 데이터베이스 파일 이름을 제안하는 메시지를 생성합니다.

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.

참고 Windows XP를 사용할 경우 Windows XP 서비스 팩 2 (SP2) 적용하여 성능을 향상시킬 수 있습니다.

추가 정보

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
209862Access 2000에서 공용 대화 컨트롤 사용하여 백 엔드 테이블 다시 연결 방법
175512짧은 파일 이름을 긴 파일 이름을 가져오는 방법

속성

기술 자료: 891176 - 마지막 검토: 2007년 12월 1일 토요일 - 수정: 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?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Tablet PC Edition
키워드:?
kbmt kbfilesystems kbenv kbtshoot kbhowto kbinfo KB891176 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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