문제

MS Access 파일을 DB로 사용하여 데스크탑 제품으로 설계된 제품이 있습니다.

이제 일부 사용자는 몇 개의 PC (2 또는 3이라고하자)에 설치하고 데이터베이스를 공유해야합니다.

MS 액세스 파일을 공유 폴더에 배치하고 PC에서 액세스 할 것이라고 생각했지만 제트 엔진은 여러 사용자 액세스를 위해 설계 되었습니까?

이 작업을 알고있는 팁이나 일이 있습니까?

편집 : 앱은 데이터베이스를 스토리지로 사용하는 앱입니다 (데이터베이스를 프론트 엔드로 사용하지 않음)

도움이 되었습니까?

해결책

이 스레드의 답변에는 너무 많은 잘못된 정보가있어 어디서부터 시작 해야할지 모르겠습니다. 나는 평판에 4 점을 썼다.

  1. 제트 데이터베이스 엔진 (EDIT로 명확한 OP가 명확한 것처럼 여기에 관련된 모든 것)은 기본적으로 멀티 user입니다.

  2. 제트 데이터 스토어 공유는 다음과 같습니다 매우 네트워크가 표준이 아닌 경우 신뢰할 수 있습니다. 이는 대역폭이 LDB 파일 (다중 사용자 잠금의 경우)을 유지하기에 충분해야하기 때문에 WAN이 아닌 무선이 아니라는 것을 의미합니다. 이는 로컬 PC의 Jet Database Engine 인스턴스의 Ping을 초당 1 회 (와 함께) 의미합니다. 기본 설정) 및 제트가 삭제 된 연결에서 복구 할 수 없기 때문에 (무선 환경에서는 매우 일반적).

  3. 액세스가 떨어지는 상황은 프론트 엔드 액세스 응용 프로그램 MDB가 공유 될 때입니다 (이 포스터의 경우는 아닙니다). 그것이 실패한 이유는 확실하게 공유 할 수없고 공유 할 이유가 없기 때문입니다. 액세스 객체가 MDB 파일에 저장되는 방식으로 인해 (전체 액세스 프로젝트는 단일 블로브 필드에 시스템 테이블 중 하나의 한 레코드에 저장됩니다) 여러 사용자가 열면 손상되기 쉽습니다. 내 추정에 따르면 액세스 프론트 엔드 (또는 테이블 및 양식/보고서 등과 함께 불명확 한 MDB를 공유하는 것은 Access/Jet 파일의 손상의 99.99%의 소스입니다.

OP의 질문에 대한 나의 기본 대답은 예, 제트기는 해당 크기의 앱을위한 훌륭한 데이터 저장소가 될 것입니다. 그러나 사용자 모집단이 25 이상으로 성장할 가능성이 전혀 없다면 더 높은 사용자 인구에서 더 강력한 데이터베이스 엔진으로 처음부터 시작하는 것이 좋습니다.

다른 팁

이 작업을 수행하는 것은 완벽하게 실현 가능합니다. 그러나 데이터베이스를 프론트 엔드 (양식, 쿼리, 코드) 및 백엔드 (데이터 만)로 분할해야합니다. 모든 사용자는 공유 백엔드에 연결하여 자신의 컴퓨터에 프론트 엔드가 있어야합니다.

제트가 수많은 네트워크 트래픽을 생성함에 따라 느리게됩니다. Microsoft는 또한 개발 도구로 액세스를 점차적으로 사용하지 않습니다. 예를 들어 Access 2007은 Access 2003보다 훨씬 덜 정교한 보안 모델을 가지고 있습니다.

오랫동안 액세스 개발자로서 저는 점차 액세스에서 멀어지고 있습니다.

하지 마십시오 ... Jet Database는 여러 사용자를 지원할 수 있다고 주장하지만, 액세스 파일을 SQL Express 데이터베이스로 변환하기 위해 Upsizing Wizard를 사용하는 것은 매우 쉽습니다. 해당 데이터베이스 파일은 사용자 나 관리자가 쉽게 잠글 수 있으며 모든 사용자가 데이터베이스를 사용할 수 없습니다.

... 그리고 SQL Express는 무료입니다. 업그레이드 경로는 SQL Server 또는 기타 상용 데이터베이스의 전체 인스턴스로 업그레이드 경로를 간단합니다.

신뢰할 수있는 로컬 네트워크에 2 ~ 3 명의 사용자를 사용하면 네트워크를 자주 추진하는 한 괜찮을 것입니다.

테이블의 비트/부리 필드를 피하십시오 - 제트에는 여러 번 접근 할 수있는 불쾌한 부패 문제가 있습니다.

또한 액세스를 모두 잠그는 것은 낙관적이라는 것을 명심하십시오. 때때로 더러운 읽기를 얻을 수 있습니다.

MS Access는 다음과 같은 작은 사무실 시나리오를 위해 설계되었습니다. 최소한의 프로그래밍으로 설정할 수있는 비 임계 라이트 오피스 사용.

데이터 파일이 매번 손상 될 것으로 예상하고 정기적으로 백업 할 것으로 예상됩니다.

에이스/제트 엔진은 훌륭한 소프트웨어이지만 설계 여러 사용자를 지원하려면 실제로 여러 사용자를 실제로 지원하는 것이 강력한 포인트 중 하나가 아닙니다. 저를위한 마지막 빨대는 엔진에서 사용자 수준 보안 (ULS)을 제거한 곳입니다. 모든 사용자가 동일한 권한을 갖는 간단한 데이터베이스 상황을 상상할 수 있다고 생각합니다 (즉, 관리자 액세스 모두 데이터베이스 개체) 그러나 IMO는 MS SQL Server와 비교할 때 여러 사용자를 잘 지원하지 않는 IMO입니다.

예, 네트워크 파일 공유를 통해 여러 사용자 (즉, 작고 작업 그룹 크기의 숫자)에 의한 액세스를 지원합니다. 그러나 파일 공유 아키텍처는 여러 사용자가 파일에 동시 쓰기를 지원하는 데 이상적이지 않습니다. 클라이언트/서버 데이터베이스 시스템 (SQL Server 등)은 일반적으로 더 나은 성능, 보안 및 안정성을 제공합니다.

Sysadmin은 멀티 사용자에게 액세스를 사용하지 마십시오. Jeff Fritz가 제안한 것을 수행하고 다중 사용자 액세스를 위해 설계된 데이터베이스를 사용하십시오. 당신은 당신의 작은 앱이 소수의 사람들 사이에서만 공유 될 것이라고 생각할 수도 있지만, 연말까지 100 명의 사용자와 50 개의 새로운 기능이있을 것이라고 보장합니다. 그리고 VB/SQL Express가 아닌 모든 접근이라면, OPS 사람들은 어느 날 밤 집에 침입하여 목을 날려 버릴 것입니다.

액세스는 클라이언트-서버 앱이 아니며 백업/복원 방식 또는 자동화 방식이 거의 없습니다. 인터페이스와 DB는 말할 것도없이 매우 단단히 결합되어 있습니다 ... 따라서 이것을 웹 앱으로 바꾸거나 심각한 변화를 원한다면 세상은 고통으로 가득 차 있습니다.

다중 사용자 상황에서 .MDB가 손상되는 것을 보았던 많은 일반 소프트웨어 엔지니어가 여러 번 수행되었습니다. 만약 많은 숙련 된 전문 접근 개발자가 내가 믿는 경향이 있기 때문에, 우리는 일반인들이 무언가 잘못을하고 있어야하며, 우리 중 많은 사람들이 그 일에서 도망 치기 위해서는 상당히 기본적이지만 불쾌한 것이어야합니다. '다시는 절대로!' 따라서 자신이 경험이 풍부한 전문가 액세스 개발자 (또는 찾는 방법을 알고 있음)라고 생각한다면이를 위해 가십시오. 그러나 당신이 가벼운 백엔드를 찾고있는 일반인 또는 캐주얼 사용자라면 다른 곳을 보는 것이 좋습니다 (SQL Server는 좋은 IMO).

원하는 기능의 절반이있는 응용 프로그램을 위해 사용자가 두 배나 길게 기다릴 수 있다면 액세스를 사용하지 마십시오.

제트에는 다중 사용자 시나리오를 지원하는 데 필요한 정교한 잠금 로직이 없습니다. 응용 프로그램이 대부분 읽기 및 저렴한 경우에 사용하면 사용할 수 있습니다.

웹 사이트가 많은 사용자를 지원하는 것을 보았지만 제트기를 선택 해야하는 강력한 이유가 없다면 SQL Express를 추천합니다.

제트 3/3.5가 신뢰할 수 없다는 고통스러운 경험으로 말할 수 있습니다. 나는 가벼운 하중에서 자주 충돌하는 것을 보았고 충돌이 발생했을 때 데이터 손상이 위험에 처해있었습니다. 예전에는 전력 문제, 클라이언트에 충돌하는 클라이언트 (MDB에 연결된 UI) 및 LAN 문제에 매우 민감했습니다. 보다 최근의 JET 버전이 더 좋을지 모르지만 SQL Server로 전환하는 것은 소수의 사용자와 함께 사소한 데이터 입력 이외의 다른 방법으로 제 생각에 전환하는 방법입니다. SQL Express는 무료이며 특히 UI가 액세스하지 않고 .NET에있는 경우 실제로 아무것도 잃지 않습니다.

편집 : Microsoft는 Jet 4에 의존해야한다고 생각하지 않습니다.

에서: http://support.microsoft.com/kb/303528

Microsoft Jet는 스트레스가 많은 서버 애플리케이션, 고음용 서버 응용 프로그램 또는 하루 24 시간, 일주일 내내 서버 응용 프로그램과 함께 사용하기위한 것이 아닙니다. 여기에는 웹 응용 프로그램, 상업 응용 프로그램, 거래 응용 프로그램 및 메시징 서버 응용 프로그램과 같은 서버 응용 프로그램이 포함됩니다. 이러한 유형의 응용 프로그램의 경우 최상의 솔루션은 Microsoft Data Engine (MSDE) 또는 Microsoft SQL Server와 같은 실제 클라이언트/서버 기반 데이터베이스 시스템으로 전환하는 것입니다. Microsoft Internet Information Server (IIS)와 같은 고 스트레스 애플리케이션에서 Microsoft Jet를 사용하면 다음과 같은 문제 중 하나가 발생할 수 있습니다. 데이터베이스 손상 안정성 문제, 예 : IIS 충돌 또는 운전자의 갑작스런 고장 또는 지속적인 실패를 잠그는 것과 같은 문제가 발생할 수 있습니다. IIS 서비스를 다시 시작 해야하는 유효한 데이터베이스에 연결하려면

.LDB와 같은 DB 잠금 파일이 있는지 확인하십시오. 거기에 있다면 누군가 그 파일에 액세스하고 있습니다. 그것이 없다면, 현재 해당 파일에 액세스하는 사람은 없으며 진행할 수 있습니다. 그렇지 않으면 해당 파일 (.ldb)이 더 이상 존재하지 않을 때 기다리십시오.

터미널 서버를 사용하는 경우 성능이 좋습니다. One Access MDB에서 최대 50 명의 사용자 솔루션이 더 많습니다. 개발은 매우 빠르며 배포가 쉽습니다.

문제 :

  • 누구나 데이터 MDB를 복사 할 수 있습니다
  • 액세스 권한이 없습니다
  • 제한된 상점 절차
  • 사용 데이터베이스 없이만 가능한 최적화 (압축 및 수리)
  • 2GB로 제한하십시오!
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top