Pergunta

Atualmente estou em uma equipe de 4 pessoas a tarefa de desenvolvimento e manutenção de um legado aplicativo MS Access.

A aplicação é bastante grande, com centenas de formulários, relatórios, consultas e tabelas.

Atualmente, temos a divisão front-end em cerca de 7 componentes mde, cada um dos quais é essencialmente um aplicativo em seu próprio direito, unidos por uma final frente comum que é essencialmente apenas uma GUI menu.

Nós usamos tabelas vinculadas para conectar este front-end para um back-end MS Access, usando OpenDatabase (C: \ Access.mdb) chamadas no próprio código. Esta aplicação tem sido em torno de um tempo, e, portanto, usa DAO para conectar a um backend Access 97.

Isto significa que cada usuário do aplicativo tem sua própria cópia local do banco de dados para fazer alterações. Temos um ambiente cuidadosamente controlado por mudança que garante que apenas uma pessoa pode estar trabalhando sobre os dados de uma só vez, eles têm que validar todas as suas alterações antes de passar o banco de dados mestre para a próxima pessoa.

Este ambiente de controle de mudanças é sufocante para dizer o mínimo, e em breve teremos uma necessidade de mais dados que sejam feitas alterações em um prazo que faz única inviável o acesso do usuário.

Então, precisamos passar para o acesso multi-usuário, mas por multi-utilizador Quero dizer apenas cerca de 4 pessoas. Este povo são, provavelmente, não fisicamente localizado no mesmo escritório, por isso é necessária alguma forma de conexão db remoto.

Toda a aplicação é susceptível de ser re-trabalhado em um ano ou o tempo de dois, movendo-se tanto a frente e para trás acabar longe do MS Access. No entanto, precisamos de multi-usuário o acesso o mais rápido possível.

Então, qual é o caminho mais rápido para a felicidade multiusuário?

As sugestões que estamos considerando incluem:

  • Configurando uma VPN para que MS Access acredita que está acessando uma unidade de rede regular. Isto olha como ele vai ser lento e não estou certo se uma VPN é suficiente confiável, mas é apenas uma solução temporária que estamos atrás de qualquer maneira.
  • Convertendo o backend mdb em algo destinado a multiusuário uso remoto, como o SQL Server. Nós simplesmente não sabemos como fazer isso rapidamente e facilmente (contamos com regras de validação de campo, por exemplo) Gostaríamos também, presumivelmente, tem que converter de volta para o formato MS Access como outras aplicações aceitam os mesmos arquivos .mdb como entrada de dados.
  • Apenas sobre qualquer coisa que pode ser feita por 1 ou 2 pessoas em um par de meses.

EDIT:. Respondendo ao abaixo comentários

Os dados que são processados ??pelo aplicativo é altamente segurança de dados críticos. Ele muda raramente, e deve ser validado para mostrar que não há erros lógicos antes de ser exportado. Na realidade, os dados estão sob restrições mais pesadas do que a própria aplicação!

Os dados são inter-relacionados de maneiras não-triviais. Como tal, uma mudança para um registro em uma tabela pode invalidar um registro em outra tabela, devido à lógica de negócio complicado. Como tal, no momento, uma cópia do arquivo de dados mdb é designado o banco de dados mestre. Apenas uma pessoa tem o mestre a qualquer momento um. Se você quiser alterá-lo, você tem que obter essa base de dados da pessoa que atualmente tem. Isso geralmente não é um problema, pois muda raramente o suficiente para que haja tempo suficiente para que isso ocorra de dados.

No entanto, uma grande mudança está chegando que não foi dado tempo suficiente para trabalhar desta forma. Temos que ter várias pessoas trabalhando sobre os dados de uma só vez. Agora estou ciente de que você pode compartilhar o arquivo mdb em uma unidade de rede e ter várias pessoas no mesmo trabalho de escritório sobre esse arquivo com pouco ou nenhum risco, mas precisamos de pessoas de diferentes empresas para se trabalhar nos dados ao mesmo tempo . como eu o entendo, configurar uma VPN para compartilhar os dados do outro lado é um plano ruim.

Eu acredito que nós temos que mudar o backend longe de MS Access e passar para algo como servidor SQL. Mas como é que é fácil para converter um esquema desta forma? Como são as regras de validação de tabela MS Access representados no SQL Server?

Foi útil?

Solução

Como o direito regra acccess geral da caixa é acessa vários usuário como um compartilhamento de arquivo. O que isto significa é que você pode levar o banco de dados de back-end (mdb) e colocá-lo em uma pasta compartilhada em um servidor. Isso permitiria que algumas pessoas em seu escritório para executar o aplicativo ao mesmo tempo. No entanto isso significa que estamos a falar de um escritório típico LAN. Quando você começar a falar sobre conexões remotas e VPN e redes de longa distância (WANs), Em seguida, usando o acesso como um compartilhamento de arquivos não é estável.

Assim, se este é de apenas três ou quatro pessoas em um ambiente de rede típico de escritório, então dependendo da aplicação, é muito provável que você pode simplesmente colocar o backend em uma pasta compartilhada no servidor e continuar a ter todos os front-ends implantado em cada computador, e eles estão ligados a esse arquivo de um banco de dados backend (mdb) na pasta compartilhada. Acesso MS bastante funciona bem desta forma.

No entanto, para falar sobre algum tipo de VPN ou WAN, em seguida, uma solução possível é mover o arquivo mdb de back-end para o servidor SQL, e continuar a usar todos os formulários, relatórios etc. a partir da aplicação de corrente (maior parte do seu aplicativo será executado como antes, quando você faz isso).

Outro realmente grande tecnologia a considerar é thin client, ou os chamados serviços de terminal. serviços de terminal apenas uma edição fantasia de um sistema de desktop remoto. TS permite que as pessoas mais ainda bastante limitada largura de banda para executar e usar o aplicativo a partir de locais remotos.

No entanto, se você está falando de três a quatro usuários em um escritório típico LAN, que é muito possível que o seu aplicativo será executado com muito poucas modificações como é, e você simplesmente mover o arquivo de banco de dados back-end para uma pasta compartilhada em um servidor algum lugar. Não posso salientar, porém, que isso só funciona se todas as pessoas estão no mesmo pequeno escritório LAN, e não algum tipo de conexão remota ou a / VPN WAN. Assim, no caso de WAN / VPN, use os serviços de terminal, ou considerar que se deslocam a infra-estrutura de servidor SQL, e continuar a usar o front-end aplicação como é.


Editar - mais informações: Ok, então com mais informações aqui podemos avançar. Como mencionado, MS-Access é multi-user para a direita fora da caixa. Você precisa de pessoas de diferentes locais para trabalhar sobre este dados. Então, isso significa que a sua aplicação tem de ser configurado para a capacidade multi-usuário, independentemente desta questão local diferente. Uma vez que você tem a configuração pedido de multi-usuários, então você em seguida, abordar a questão de permitir que as pessoas a usar o software de diferentes locais.

Isto não é diferente do que se temos algo para gerenciar a empresa festa de Natal. Se nós temos um projeto de tal forma que após a festa de Natal que excluir o arquivo inteiro para começar de novo para a festa de Natal do próximo ano, então podemos ainda permitir usos múltiplos para esta aplicação. No entanto, o projeto é tal que você não pode ter várias festas de Natal ativas ao mesmo tempo por causa de seus projetos. Portanto, neste caso, não é o fato de que a aplicação é multi usuário. Neste tipo de cenário, pode realmente adicionar uma nova tabela chamada tabela ano partido do Natal. Em seguida, pode-se relacionar todas as tabelas no aplicativo para esta tabela mestre como uma criança mesas. Dessa forma, você pode ter vários Natal Festas de ativos ao mesmo tempo para este projeto. Então, quando você iniciar o aplicativo, os usuários são solicitados com algum tipo de lista para escolher o que festa de Natal que você deseja trabalhar.

Portanto, não confunda os dois acima questões separadas. Não faz sentido perguntar como os serviços de terminal permite que o aplicativo para ser multi usuário, ele faz tal coisa. O TS faz é permitir que você tome um aplicativo que já é multi usuário e permitir que as pessoas a partir de locais remotos para usar esse aplicativo. Então TS é um sistema que permite que as pessoas para executar e usar o aplicativo a partir de locais remotos em qualquer lugar na internet. Seus projetos ainda vai ditar se o seu aplicativo para permitir-nos mais do que uma festa de Natal para ser ativo em tele mesmo tempo, porém.

Assim você não faz MS multiusuário acesso, o acesso MS é multiusuário para fora da direita da caixa e você não tem que fazer nada, a não ser adotar algumas tecnologias que permitem aos usuários em diferentes localizações usar o aplicativo. Então, isso é o que TS faz, e também servidor SQL pode fazer por você.

Se o seu projeto é apenas permite que um projeto, então podemos permitir que vários usuários de diferentes locais do mundo a utilizar uma aplicação, mas eles só podem ser autorizados a ter um projeto ativo por causa das limitações de design da aplicação.

Assim, todos de sua tabela lógica atualização etc pode trabalhar como antes. Você simplesmente tem que perguntar é se o applicaion agora permitem que um usuário para sair do applcaion, e outro usuário entrar nele e fazer o seu trabalho? Finja que há apenas um computador autônomo no escritório. Pode diffent funcionários durign o dia sit para baixo e uso que um computador e que uma aplicação com o back-end para cada um de seus projetos separados?

Então, o servidor SQL, ou serviços de terminal não faz a sua aplicação mais (ou menos) de vários usuários, então é agora. Estas tecnologias podem certamente aumentar o número de usuários que podem usar o aplicativo ao mesmo tempo.

Acesso Então MS é multi-usuário agora. No entanto o que servidor SQL faz, ou TS faz é permitir muito mais flexibilidade em termos de como os usuários conectados remotamente para esta aplicação.

Outras dicas

IMO você definitivamente precisa para converter o banco de dados para um servidor multi-usuário, independentemente do que outras soluções que você considerar. Há um Assistente de conversão que deve ser útil ( http://support.microsoft.com/kb/237980), você provavelmente vai encontrar itens que o Access permite e servidor SQL não, mas para a maior parte deve ser indolor. Você pode apontar suas cópias de acesso local para usar esta nova fonte de dados (através de ODBC, por exemplo) e eu acredito que deve todo o trabalho praticamente da mesma forma. Não fiz isso em anos, nenhuma idéia do que essas regras de validação de campo (se não eles ainda estar em forma?) Viria em. Você pode baixar uma cópia de avaliação do servidor SQL e fazer isso em menos de uma hora para obter uma sensação de quanto esforço seria necessário.

Como de costume você tem uma excelente resposta de Albert Kallal.

Se você considerar upsizing para o SQL Server não é uma ferramenta do grupo SQL Server. Assistente de Migração do SQL Server para Access (SSMA Access) http://www.microsoft.com/sql/solutions/migration/ acesso / default.mspx que é melhor do que o Assistente de conversão Access.

Também ver meus pensamentos aleatórios no SQL Server Upsizing do Microsoft Access página Dicas em http: //www.granite.ab.ca/access/sqlserverupsizing.htm

Como você pode ver a partir dos comentários para o seu postando o controle de mudanças mandato como seus usos organização não é tradicional e bastante interessante. Embora eu possa ver como alguém anos tentando descobrir uma solução para escritórios remotos alterar dados viria com esta solução. Eu também posso ver embora como seria sufocante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top