문제

을 만들었 MS Access2003 응용 프로그램,설정으로 분할 프런트 엔드/back-end 구성,사용자와 그룹의 다섯 사람입니다.프런트 엔드.mdb 앉아 있는 네트워크에서 파일이 서버에 포함되는 모든 쿼리,형태,보고서 및 VBA 코드로 연결되는 링크가 모든 테이블에 다시 끝입니다.mdb 일부 링크 ODBC 데이터 소스는 다음과 같 AS/400.다시 끝에 앉아 있는 동일한 네트워크 파일 서버,그리고 그것은 단지는 테이블에서 데이터습니다.

이 일이 잘 될 때까지 나가"가"그리고 내 소수의 사용자가 들어오기 시작했으로 개선 요청,버그 보고,etc.나는 새로운드에 의해 개발/에서 테스트하는 내 자신의 복사본다.mdb 에서 다른 네트워크 폴더(연결 같은 back-end.mdb),다음 게시물 내 완료된 파일에서"올 및 얻을 수-그것은"폴더에게 경고,사용자 및 그들은 복사/붙여 새로운 프런트 엔드 파일을 자신의 폴더에 네트워크입니다.이 방법,각 사용자 업데이트할 수 있습니다 그들의 앞 끝날 때 그들이에서'포인트를 중지'하지 않고 부팅이 모두 밖으로 한다.

이 아니라면 나는 개발 이제,때로는 액세스가 매우 느립니다.다음과 같을 때,내가 개발하는 양식을 클릭하면 드롭다운 특성에 대한 상자,드롭다운 화살표 밀어서지만,그것은 몇 초 정도 걸릴 것입니다 전에는 옵션 목록이 나타납니다.나이 톤의 지연의를 선택하고 이동 컨트롤 형태입니다.또는 많은 키보드의 지연이 있습니다.

그런 다음 다른 시간에,거의 없는 지연이다.

나이기 때문에 나는 연결 같은 다시 끝으로 다른 사용자.나는 합리적인 노력을 설정하는 쿼리,형태,보고서 등입니다.최소한의 기록 잠금,모든 경우,필요에 따라 달라집니다.하지만 난 뭔가를 놓친 수 있습니,또는 아마도 다른 어떤 성능 문제 내가 원하고 있습니다.

하지만 내가 궁금해 있는 경우에는 더 나은 방법 설정하는 내 자신의 개발 back-end.mdb,그래서 될 수 있는 테스 코드에서"안전한"대신 데이터의 동일한 라이브 데이터의 사용자.나는 그것을 문제시하기 전에 내가 손상된 일부 데이터,아마도 최악의 순간에.

분명히,나는 그냥 수립니다.mdb 및 수동으로 재구성 테이블의 링크 프론트 엔드에서 매 시간 사용하여 연결된 테이블 관리자입니다.그러나 나는 희망이 더 우아하는 솔루션입니다.

고는지 궁금하네요가 있는 경우 다른 어떤 성능 문제 I 고려 되어야에서 다중 사용자,분할 데이터베이스를 구성합니다.

편집:I 을 추가해야는 나와 함께 붙어 MS 액세스하지 않는(MS-SQL 또는 다른"실제"다시 끝);자세한 내용을 참조하십시오 나의 코멘트이다.

도움이 되었습니까?

해결책

모든 사용자가 프론트 엔드를 공유하는 경우 잘못된 구성입니다.

각 사용자는 프론트 엔드의 개별 사본이 있어야합니다. 프론트 엔드를 공유하는 것은 공유 프론트 엔드의 빈번한 부패뿐만 아니라 프론트 엔드의 형태와 모듈의 이상한 손상으로 이어질 수 있습니다.

A2000으로 시작한 이후로 최종 사용자가 사용하는 것과 동일한 프론트 엔드의 사본에서 어떻게 개발할 수 있는지는 확실하지 않습니다. 시스템 테이블 중 하나에서 단일 레코드의 단일 블로브 필드에서.

나는 실제로 생산 데이터를 사용함으로써 문제가 발생한다고 생각하지 않습니다 (다른 사람들이 말했듯이 생산 데이터에 대해 개발하는 것이 좋지는 않지만). 나는 그들이 코딩 관행이 열악하고 프론트 엔드 코드의 유지 관리 부족으로 인해 발생한다고 생각합니다.

  1. VBE 옵션에서 주문형으로 컴파일을 끕니다.

  2. 옵션 명시 적이 필요한지 확인하십시오.

  3. 몇 줄의 코드 라인마다 코드를 자주 컴파일하십시오.이를 쉽게 만들려면 컴파일 버튼을 VBE 도구 모음에 추가하십시오 (제가있는 동안 호출 스택 버튼도 추가).

  4. 주기적으로 프론트 엔드를 백업하고 코드를 디 컴파일하고 다시 컴파일하십시오. 이것은 /디 컴파일 스위치를 사용하여 액세스를 시작하고, 프론트 엔드를 열고, 액세스를 닫고, 액세스 (스타트 업 코드를 우회하기 위해 시프트 키가 고정 된 상태에서) 프런트 엔드를 열고, 디 컴파일 된 프런트 엔드 (Shift)를 압축함으로써 이루어집니다. Key Held Down), 그런 다음 전체 프로젝트를 컴파일하고 마지막으로 하나를 압축합니다. 주요 코드 릴리스 전에이 작업을 수행해야합니다.

몇 가지 다른 생각 :

  1. Windows 서버인지는 말하지 않습니다. Samba를 통해 액세스 한 Linux 서버는 과거에 문제를 보여 주었고 (일부 사람들은 Windows 서버보다 훨씬 빠르다고 말하지만) 역사적으로 Novell 서버는 제트 파일을 안정적으로 편집 할 수 있도록 설정을 조정해야했습니다. Windows 서버에서 조정할 수있는 일부 설정 (Oplocks 등)도 있습니다.

  2. Jet MDB를 짧은 경로로 공유로 저장하십시오. server data myProject MyReallyLongfolderName Access Databases 는 Server Database보다 읽기 데이터가 훨씬 느려질 것입니다. 이것은 실제로 큰 차이를 만듭니다.

  3. 링크 된 테이블은 구식이 될 수있는 메타 데이터를 저장합니다. 두 가지 쉬운 단계와 하나는 그것을 고치기 위해 촬영해야합니다. 먼저 백엔드를 압축 한 다음 프론트 엔드를 압축하십시오. 그것은 쉬운 것입니다. 도움이되지 않으면 링크를 완전히 삭제하고 처음부터 다시 만들어냅니다.

  4. 컴파일을 해제 할 수 없으므로 MDB 대신 최종 사용자에게 MDE를 배포하는 것을 고려할 수도 있습니다 (MDB가 할 수있는).

  5. 보다 Tony Toews의 성능 FAQ 다른 일반화 된 성능 정보.

다른 팁

1) 코드에서 액세스 테이블을 다시 링크합니다http://www.mvps.org/access/tables/tbl0009.htm

새로운 MDE를 사용자에게 게시 할 준비가되면 테이블을 연결하고 MDE를 만들고 MDE를 서버에 복사하십시오.

2) 나는 구체적으로 무료 Auto FE 업데이트 유틸리티를 만들어 내가 원하는만큼 자주 FE MDE를 변경할 수있게되었고 다음에 누군가가 앱을 실행하여 최신 버전을 가져올 것이라고 확신 할 수있게되었다. 오류 또는 Auto FE 업데이트 유틸리티에 대한 자세한 내용은 무료 자동 FE 업데이트 유틸리티를 참조하십시오. http://www.granite.ab.ca/access/autofe.htm 내 웹 사이트에서 각 PC의 FE를 최신 상태로 유지합니다.

3) 이제 클라이언트에서 현장에서 일할 때 모든 사람이 시스템을 벗어난 시간 후에 테이블 구조를 업데이트합니다. 방법보기 : Access 2000 (Q210297)의 사용자 유휴 시간 또는 비 활동 감지 http://support.microsoft.com/?kbid=210297 ACC : 사용자 유휴 시간 또는 비 활동을 감지하는 방법 (Q128814) http://support.microsoft.com/?kbid=128814

그러나 타이머 이벤트에서 실행되는 코드는 프로그래머에 대해 비활성화되어야한다는 것을 발견했습니다. 그렇지 않으면 코드를 편집 할 때 이상한 일이 일어나기 시작합니다.

또한 인쇄 미리보기는 때때로 사용자가 메뉴 항목을 실행하여 보고서를 Excel 또는 다른 사람으로 내보낼 수 없습니다. 따라서 미리보기 보고서를 마우스 오른쪽 버튼으로 클릭하여 보고서에 일부 유형의 내부 초점을 다시 가져 와서 내보낼 수있었습니다. 이것은 또한 타이머를 5 분으로 연장하여 도움이되었습니다.

타이머를 5 분으로 연장하는 단점은 사람이 동일한 형태로 유지되고 하루 중 상당한 부분에 대해 동일한 제어를하는 경우, 누군가 같은 문의를하는 사람이라면, 일상은 실제로 무언가를했다는 것을 깨닫지 못했습니다. 프로그램에서 무언가를 할 때 마다이 타이머를 재설정하기 위해 언젠가 논리를 넣을 것입니다.

4) 스크립트에 대해 의견을 말하는 다른 사람과 관련하여 스키마 업데이트를 참조하십시오. http://home.gci.net/~mike-noel/compareem-lite/compareem.htm. 그것은 단점이 있지만 테이블, 필드, 인덱스 및 관계를 업데이트하기 위해 VBA 코드를 만듭니다.

VBA를 사용하여 DEV에서 PROD로 전환 할 때 테이블을 새 대상으로 링크하고 다시 링크하십시오. 구문을 기억하는 것은 몇 년이 지났습니다. 그 기능이 글을 쓰는 것이 간단하다는 것을 알고 있습니다.

또는 MS-Access를 사용하여 ODBC 또는 클라이언트 MDB 외부에있는 다른 데이터 연결을 통해 MS-Access와 대화하십시오.

모든 파일 기본 데이터베이스와 마찬가지로, 결국 피크 사용법이나 2에서 30 사이의 작은 마법의 숫자를 넘어갈 때 결국 문제가 발생합니다.

또한 액세스는 자주 손상되는 경향이 있으므로 백업, 컴팩트 및 수리는 빈번하게 수행해야합니다. 이 작업을 자동화하는 데 사용되는 제 3 자 도구.

성능이 진행되는 한 데이터가 클라이언트 측면으로 처리되고 있으므로 NetMeter와 같은 것을 사용하여 와이어를 통해 얼마나 많은 데이터가 진행되는지를 확인할 수 있습니다. 인덱싱 및 피하는 테이블 스캔에 대한 동일한 원칙은 파일 기본 DBS에도 적용됩니다.

다른 사람들의 많은 좋은 제안. 여기 내 2 밀리 멘트가 있습니다. 내 백엔드 데이터는 드라이브 매핑을 통해 액세스하는 서버에 있습니다. 제 경우에는 y 드라이브입니다. 프로덕션 사용자는 Active Directory를 사용하여 로그인 스크립트를 통해 매핑을받습니다. 그런 다음 다음 시나리오는 배치 파일로 쉽게 수행됩니다.

  • 배치 파일로 SUBT 명령을 수행하여 로컬 컴퓨터에 대해 개발
  • y를 백업 서버에 포인트하여 지난 밤 데이터에 대한 보고서를 실행합니다 (읽기 만하)
  • 오른쪽 디렉토리를 가리켜서 월말 데이터에 대한 보고서 실행
  • 특수 디렉토리를 유지하여 특수 시나리오에 대해 테스트합니다

내 환경에서 (평균 5 명의 동시 사용자, 10,000 행, 10,000 행.) 부패가 발생했지만 드물고 관리 가능합니다. 지난 몇 년 동안 한 번만 우리는 전날 백업에 의지했습니다. 우리는 더 많은 볼륨 항목에 SQL Server를 사용하지만 현장에 SQL 관리자가 없기 때문에 개발하는 것이 편리하지 않습니다.

수도 있습의 일부를 찾을 답변하는 이 질문(을 추출하는 방법 스키마에서 액세스) 유용한 것 같습니다.추출하기만 하면 스키마 중 하나를 사용하는 기술들이 제시되었을 얻을 당신의 전체 범위에 새로운 옵션이 사용할 수있는 능력을원 제어 스키마에,뿐만 아니라 수 있다는 것은 쉽게 구축""깨끗한 테스트 환경이다.

편집에 응답하는 논평:쉬운 방법은 없을 소스 컨트롤에 액세스는 데이터베이스에 그것의 기본 형식으로지 스키마 파일은 단순한 텍스트 파일을 다음과 같습니다.따라서 확인할 수 있습니다,그들의 근원을 제어 소프트웨어의 선택에 대한 쉽게 버전 관리/취소.

또는 과정,그것은에 의존하고 당신의 시리즈는 스크립트 설정을 다시 구축하는 데이터베이스에서 스키마.일단 당신,그것은 일반적으로 상당히 사소한 옵션을 만들/alternative 는 버전을 재건에서 다른 위치,당신은 테스트 환경에서 모든 이전력 버전의 스키마.난 명확히 하는 비트!

클라이언트에 새 FE를 릴리스 할 때 백엔드 MDB 스키마를 자동으로 업데이트하려면 Compare'em을 참조하십시오. http://home.gci.net/~mike-noel/compareem-lite/compareem.htm MDB를 재현하는 데 VBA 코드가 행복하게 생성됩니다. 또는 두 개의 MDB 간의 차이점을 생성하여 이미 존재하는 MDB의 버전 업그레이드를 수행 할 수 있습니다. 조금 기발하지만 작동합니다.

나는 항상 그것을 사용합니다.

데이터의 공유 MDB 파일은 강력한 솔루션이 아니라는 것을 이해해야합니다. Microsoft는 SQL Server 또는 일부 다른 서버 기반 데이터베이스가 훨씬 더 나은 솔루션이 될 것이며 동일한 액세스 프런트 엔드를 사용할 수 있다고 제안합니다. 마이그레이션 마법사는 그런 식으로 가고 싶다면 전환을 만드는 데 도움이됩니다.

다른 용도로 지적했듯이 부패가 발생합니다. 그것은 단순히 만약이 아니라 얼마나 자주 얼마나 자주 있는지에 대한 질문입니다.

성능 문제를 이해하려면 서버에 데이터가 포함 된 MDB 파일이 단순히 파일이라는 것을 이해해야합니다. 서버에서 코드가 실행되지 않기 때문에 서버는 트랜잭션, 레코드 잠금 등을 이해하지 못합니다. 단순히 많은 사람들이 동시에 읽고 쓰려고하는 파일이 있다는 것을 알고 있습니다.

SQL Server, Oracle, DB2와 같은 데이터베이스 시스템을 사용합니다. MySQL 등 데이터베이스 프로그램은 서버에서 실행되며 데이터베이스 파일에 액세스하는 단일 프로그램처럼 서버를 살펴 봅니다. 레코드 잠금, 트랜잭션, 동시성, 로깅, 데이터 백업/복구 및 데이터베이스에서 원하는 다른 모든 좋은 것들을 처리하는 데이터베이스 프로그램 (서버에서 실행)입니다.

서버에서 실행되도록 설계된 데이터베이스 프로그램은이를 수행하도록 설계되었으므로 공유 파일 작성 (MDB) 작성을 읽는 것과 같은 프로그램이 훨씬 더 효과적이고 더 효과적으로 수행 할 수 있습니다.

라이브 데이터에 대한 개발에 대한 두 가지 규칙이 있습니다

첫 번째 규칙은입니다. . . 라이브 데이터에 대해 결코 개발하지 마십시오. 결코.

두 번째 규칙은입니다. . . 실시간 데이터에 대해 발전하지 않습니다. 결코.

연결된 테이블의 바인딩을 프로그래밍으로 변경할 수 있으므로 새 버전을 배포 할 때 매크로를 작성하여 링크를 변경할 수 있습니다.

애플리케이션은 MS 액세스이기 때문에 느리게 진행되며 동시 사용자가 많지 않습니다 (많은 사람들이 숫자> 1).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top