레거시 MS 액세스 애플리케이션은 여러 사용자를 지원해야합니다

StackOverflow https://stackoverflow.com/questions/1063997

  •  21-08-2019
  •  | 
  •  

문제

저는 현재 레거시 MS 액세스 애플리케이션의 개발 및 유지 관리 작업을 수행하는 4 인 팀에 있습니다.

응용 프로그램은 수백 가지 형태, 보고서, 쿼리 및 테이블과 함께 상당히 큽니다.

현재 우리는 프론트 엔드가 약 7 개의 MDE 구성 요소로 분할되어 있으며, 각 구성 요소는 본질적으로 자체적으로 응용 프로그램이며, 본질적으로 메뉴 GUI 인 공통 프론트 엔드에 합류합니다.

우리는 링크 된 테이블을 사용하여 코드 자체의 OpenDatabase (c : access.mdb) 호출을 사용 하여이 프론트 엔드를 MS 액세스 백엔드에 연결합니다. 이 응용 프로그램은 한동안 주변에 있었으므로 DAO를 사용하여 Access 97 백엔드에 연결합니다.

이는 응용 프로그램의 모든 사용자가 변경을위한 자체 데이터베이스 사본을 가지고 있음을 의미합니다. 우리는 신중하게 변경된 환경을 가지고있어 한 사람만이 데이터를 한 번에 작업 할 수 있도록하며 마스터 데이터베이스를 다음 사람에게 전달하기 전에 모든 변경 사항을 검증해야합니다.

이 변경 제어 환경은 가볍게 만들기 위해 혼란스러워지고 있으며 곧 단일 사용자 액세스 할 수없는 기간 동안 더 많은 데이터 변경이 필요할 것입니다.

따라서 우리는 다중 사용자 액세스로 이동해야하지만 다중 사용자는 약 4 명을 의미합니다. 이 사람들은 아마도 같은 사무실에 물리적으로 위치하지 않으므로 일부 형태의 원격 DB 연결이 필요합니다.

전체 응용 프로그램은 1 년 또는 2 년 안에 재 작업 될 가능성이 높으며 전면 및 후면을 MS 액세스에서 멀리 이동시킵니다. 그러나 다중 사용자 액세스가 최대한 빨리 필요합니다.

그렇다면 멀티 우스터 블리스로가는 가장 빠른 경로는 무엇입니까?

우리가 고려하고있는 제안에는 다음이 포함됩니다.

  • MS Access가 일반 네트워크 드라이브에 액세스하고 있다고 생각하도록 VPN을 설정합니다. 이것은 느리게 보일 것 같고 VPN이 충분히 신뢰할 수 있는지 확실하지 않지만 어쨌든 우리가 뒤 따르는 임시 솔루션 일뿐입니다.
  • MDB 백엔드를 SQL Server와 같은 Multiuser 원격 사용을위한 것으로 변환합니다. 우리는이 작업을 신속하고 쉽게 수행하는 방법을 모릅니다 (예 : 필드 검증 규칙에 의존합니다) 다른 응용 프로그램이 데이터 입력과 동일한 .MDB 파일을 수락하므로 MS 액세스 형식으로 다시 변환해야 할 것입니다.
  • 몇 달 안에 1 ~ 2 명이 수행 할 수있는 모든 것.

편집 : 아래 주석에 응답합니다.

애플리케이션에서 처리 한 데이터는 매우 안전한 중요한 데이터입니다. 드물게 변하지 않으며 내보내기 전에 논리적 오류가 없음을 보여주기 위해 검증되어야합니다. 실제로, 데이터는 응용 프로그램 자체보다 더 무거운 제한을 받고 있습니다!

데이터는 사소한 방식으로 서로 관련되어 있습니다. 따라서, 한 테이블의 레코드로의 변경은 복잡한 비즈니스 로직으로 인해 다른 테이블의 레코드를 무효화 할 수 있습니다. 따라서 현재 MDB 데이터 파일의 한 사본이 마스터 데이터베이스로 지정됩니다. 한 번에 한 사람 만 주인이 있습니다. 변경하려면 현재 데이터베이스가있는 사람으로부터 해당 데이터베이스를 얻어야합니다. 데이터가 거의 변경 될 정도로 충분한 시간이있을 정도로 거의 변화가 없기 때문에 이것은 일반적으로 문제가되지 않습니다.

그러나 우리가 이런 식으로 일할 시간이 충분하지 않은 큰 변화가 발생하고 있습니다. 여러 사람이 한 번에 데이터를 작업해야합니다. 이제 네트워크 드라이브에서 MDB 파일을 공유하고 위험이 거의 없거나 전혀없는 동일한 사무실에서 동일한 사무실에 여러 사람이 작업 할 수 있다는 것을 알고 있지만 동시에 데이터를 사용하려면 다른 회사의 사람들이 필요합니다. . 내가 이해 한 바와 같이, 데이터를 공유하기 위해 VPN을 설정하는 것은 나쁜 계획입니다.

백엔드를 MS 액세스에서 멀어지게하고 SQL Server와 같은 것으로 이동해야한다고 생각합니다. 그러나 이러한 방식으로 스키마를 변환하는 것이 얼마나 쉬운가요? MS 액세스 테이블 유효성 검사 규칙은 SQL Server에 어떻게 표시됩니까?

도움이 되었습니까?

해결책

일반적으로 상자의 오른쪽은 파일 공유로 다중 사용자에게 액세스하는 것입니다. 이것이 의미하는 바는 백엔드 데이터베이스 (MDB 파일)를 가져 와서 서버의 공유 폴더에 넣을 수 있다는 것입니다. 이를 통해 사무실의 몇몇 사람들이 동시에 신청서를 실행할 수 있습니다. 그러나 그것은 우리가 전형적인 사무실 LAN에 대해 이야기하고 있음을 의미합니다. 원격 연결 및 VPN 및 WANS (Wide Area Network)에 대해 이야기하기 시작하면 파일 공유로 액세스를 사용하는 것이 안정적이지 않습니다.

따라서 일반적인 사무실 네트워크 환경에서 3-4 명에 불과한 경우 응용 프로그램에 따라 서버의 공유 폴더에 백엔드를 넣고 각각의 모든 프론트 엔드를 각각에 계속 배포 할 수 있습니다. 컴퓨터는 공유 폴더의 해당 데이터베이스 백엔드 (MDB) 파일에 연결되어 있습니다. MS Access는 이런 식으로 잘 작동합니다.

그러나 어떤 종류의 VPN 또는 WAN에 대해 이야기하려면 백엔드 MDB 파일을 SQL Server로 이동하고 현재 응용 프로그램에서 모든 양식, 보고서 등을 계속 사용하는 것입니다 (대부분의 응용 프로그램이 실행됩니다. 이전과 마찬가지로이 작업을 수행 할 때와 마찬가지로).

고려해야 할 또 다른 훌륭한 기술은 얇은 클라이언트 또는 소위 터미널 서비스입니다. 터미널 서비스는 원격 데스크탑 시스템의 멋진 판 만 있습니다. TS를 통해 상당히 제한된 대역폭을 사용하면 원격 위치에서 응용 프로그램을 실행하고 사용할 수 있습니다.

그러나 일반적인 Office LAN에서 3 ~ 4 명의 사용자에 대해 이야기하는 경우 응용 프로그램이 그대로 거의 수정되지 않으면 서 응용 프로그램이 실행될 가능성이 매우 높으며 백엔드 데이터베이스 파일을 서버의 공유 폴더로 이동합니다. 그러나 나는 모든 사람들이 같은 작은 사무실 LAN에 있고, 원격 연결이나 WAN/VPN이 아닌 경우에만 효과가 있다고 강조 할 수 없습니다. 따라서 WAN/VPN의 경우 터미널 서비스를 사용하거나 백엔드를 SQL Server로 옮기고 응용 프로그램 프론트 엔드를 계속 사용하는 것을 고려하십시오.


편집 - 자세한 정보 : 좋아요, 자세한 정보를 사용하면 앞으로 나아갈 수 있습니다. 언급했듯이 MS-Access는 다중 사용자입니다. 이 데이터 작업을 수행하려면 다른 위치의 사람들이 필요합니다. 따라서 이는 다른 위치 문제에 관계없이 애플리케이션이 다중 사용자 능력을 위해 설정되어야 함을 의미합니다. 다중 사용자에 대한 응용 프로그램 설정이 있으면 사람들이 다른 위치에서 소프트웨어를 사용할 수 있도록하는 문제를 해결합니다.

회사 크리스마스 파티를 관리 할 것이있는 것과 다르지 않습니다. 크리스마스 파티이 끝난 후 내년 크리스마스 파티에서 다시 시작할 전체 파일을 삭제하는 디자인이 있다면이 애플리케이션에 여러 가지 용도로 사용할 수 있습니다. 그러나 디자인은 디자인으로 인해 여러 크리스마스 파티를 동시에 활성화 할 수없는 것입니다. 따라서이 경우 응용 프로그램이 다중 사용자라는 사실은 아닙니다. 이 유형의 시나리오에서는 실제로 크리스마스 파티 연도 테이블이라는 새 테이블을 추가 할 수 있습니다. 그런 다음 응용 프로그램의 모든 테이블을이 마스터 테이블과 하위 테이블로 관련시킬 수 있습니다. 이렇게하면이 디자인을 위해 여러 크리스마스 파티를 동시에 활성화 할 수 있습니다. 그런 다음 응용 프로그램을 시작하면 사용자에게 어떤 유형의 목록이 있어야하는지 크리스마스 파티를 선택할 수 있습니다.

따라서 위의 별도의 두 가지 문제를 혼동하지 마십시오. 터미널 서비스가 어떻게 응용 프로그램이 다중 사용자가 될 수 있는지 묻는 것은 의미가 없습니다. TS가하는 일은 이미 다중 사용자 인 응용 프로그램을 사용하여 원격 위치의 사람들이 해당 응용 프로그램을 사용할 수 있도록 허용하는 것입니다. 따라서 TS는 사람들이 인터넷의 어느 곳에서나 원격 위치에서 응용 프로그램을 실행하고 사용할 수있는 시스템입니다. 그러나 귀하의 디자인은 귀하의 응용 프로그램을 통해 여러 크리스마스 파티를 동시에 활성화 할 수 있도록하는 경우에도 여전히 지시됩니다.

따라서 MS Access Multiuser를 만들지 않으며 MS Access는 상자 밖으로 멀티 우스터입니다. 다른 위치의 사용자가 응용 프로그램을 사용할 수있는 일부 기술을 채택하는 것 외에는 아무것도 할 필요가 없습니다. 이것이 바로 TS가하는 일이며 SQL Server도 귀하를 위해 할 수 있습니다.

디자인이 하나의 프로젝트 만 허용하는 경우 전 세계 여러 위치의 여러 사용자가 응용 프로그램을 사용할 수 있지만 응용 프로그램의 설계 제한으로 인해 하나의 활성 프로젝트 만 허용 할 수 있습니다.

따라서 모든 테이블 업데이트 로직 등이 이전과 같이 작동 할 수 있습니다. 단순히 당신은 단순히 응용 프로그램이 이제 한 사용자가 Applcaion을 종료 할 수있게하고 다른 사용자가 그것을 입력하고 그들의 작업을 수행 하는가? 사무실에는 독립형 컴퓨터가 하나만 있다고 가정하십시오. 다른 직원들이 하루를 빙빙 돌리고 각각의 별도 프로젝트에 대해 하나의 백엔드와 함께 하나의 컴퓨터와 하나의 응용 프로그램을 사용할 수 있습니까?

따라서 SQL Server 또는 터미널 서비스를 사용해도 애플리케이션이 더 많은 (또는 그 이하) 멀티 사용자가되지는 않습니다. 이러한 기술은 반드시 응용 프로그램을 동시에 사용할 수있는 사용자 수를 늘릴 수 있습니다.

따라서 MS 액세스는 이제 다중 사용자입니다. 그러나 SQL Server 또는 TS가하는 일은 사용자 가이 응용 프로그램에 원격으로 연결하는 방식에있어 훨씬 더 많은 유연성을 허용하는 것입니다.

다른 팁

IMO 다른 솔루션에 관계없이 데이터베이스를 다중 사용자 서버로 변환해야합니다. 유용한 것으로 입증되는 업 사이징 마법사가 있습니다 (http://support.microsoft.com/kb/237980), 액세스가 허용하고 SQL Server가 허용하는 항목이있을 수 있지만 대부분은 고통이 없어야합니다. 로컬 액세스 사본을 가리키면이 새로운 데이터 소스 (예 : ODBC를 통해)를 사용하여 모두 같은 방식으로 거의 작동해야한다고 생각합니다. 몇 년 동안이 작업을 수행하지 않았으며, 그 필드 검증 규칙 (여전히 형태에 도달하지 않습니까?)이 어떻게 될지 알지 못합니다. SQL Server의 평가판 사본을 다운로드하여 한 시간 안에이 작업을 수행하여 얼마나 많은 노력이 필요한지 느낄 수 있습니다.

평소와 같이 Albert Kallal의 훌륭한 답변을 얻었습니다.

SQL Server 로의 업 크기를 고려하려면 SQL Server 그룹의 도구가 있습니다. Access 용 SQL Server Migration Assistant (SSMA 액세스)http://www.microsoft.com/sql/solutions/migration/access/default.mspx 그것은 액세스 업 사이징 마법사보다 낫습니다.

또한 Microsoft Access Tips 페이지에서 SQL Server에 대한 임의의 생각을 참조하십시오. http://www.granite.ab.ca/access/sqlserverupsizing.htm

주석에서 볼 수 있듯이 귀하의 조직이 사용하는 것은 전통적이고 다소 흥미 롭습니다. 몇 년 전에 누군가가 원격 사무실을 변경하는 솔루션을 찾으려고 노력하는 방법을 알 수 있지만이 솔루션이 어떻게 발생하는지 알 수 있습니다. 나는 또한 그것이 어떻게 굳어 질지 볼 수 있습니다.

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