none
Access como back-end web RRS feed

  • Pergunta

  • Tenho uma base de dados Access e agora precisamos disponibilizar esses dados na web, ou seja, através do site da empresa. Estou ciente que nesse caso é sugerido migrar essa base para SQL Server, pois apesar de ser possível disponibilizar bases em Access na web isso tem algumas desvantagens. Porém, supondo que por qualquer motivo(estratégia, custo, mão de obra especializada em SQL Server, etc...) essa base não possa ser migrada qual seria a solução para tentar amenizar os impactos de ser ter uma base de dados Access na WEB?

    A quantidade de requisições não seria tão grande, pois os dados seriam privados, ou seja, só seriam disponibilizados à um restrito grupo de pessoas que acessem o web site da empresa.

    Não sou especialista SQL Server, mas segundo algumas pesquisas que fiz, descobri no SQL Server o recurso de Servidor Vinculado. Minha ideia aqui é usar o SQL Server Express como servidor vinculado para gerir as requisições que viessem da internet, dessa forma o SQL Server atuaria como um gerenciador para a base de dados em Access.

    Gostaria de opiniões a respeito dessa ideia e também de quais outras soluções poderia ser aplicada nesse caso. Replicação ajudaria?


    domingo, 21 de dezembro de 2014 14:51

Respostas

  • Matheus,

          Um dos seus argumentos para não migrar é o gerenciamento e custos de mo, mas isso não é compatível com a sua solução... Linked Server, replicação, isso tudo exige um custo que no decorrer do tempo pode ser maior do que migrar... Recomendo que você analise a opção de migrar!

          Caso você realmente opte por utilizar o linked server, isso não traria nenhuma vantagem, pois o SQL seria apenas uma "ponte" entre a aplicação e o Access. Performance, segurança, concorrência, bloqueios, isso tudo seria controle do Access e não do SQL.


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 22 de dezembro de 2014 13:16
    Moderador
  • Matheus,

         Em relação à segurança, você está certo, vai passar pelo SQL. Mas independentemente do login, ainda assim, o SQL só vai validar e repassar para o Linked Server, nada mais... Na configuração do Linked Server você pode utilizar uma senha específica, utilizar a senha do login atual, ou não utilizar nenhuma segurança... De qualquer forma, se alguém descobrir a senha, seu Access ficará comprometido... Porque quem faz a segurança do Access é o Access, não o SQL... Eu não sei nem dizer para você SE o Access tem algum nível de segurança e como isso funciona...

        Quanto a performance ou concorrência, também, quem cuida disso é o Access, não o SQL... Se houver qualquer problema de concorrência, o Access tem que decidir o que fazer... lembre-se, o SQL é apenas a "ponte" pro seu Access... Lembre-se também que o linked server seria mais uma "engrenagem" no seu sistema, com os custos associados a isso, mais uma camada, mais lentidão,  mais pontos de falha, etc.

         A única vantagem é que você não iria expor o seu Access na internet, mas apenas a sua aplicação web, considerando ainda que você também não iria expor o SQL Server pois é falha de segurança... 

         Pensando desta forma, não acho que valeria a pena o linked server... proteja o seu Access (diretório, usuário, etc.), desenvolva a aplicação web acessando o Access e pronto!


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 22 de dezembro de 2014 15:49
    Moderador

Todas as Respostas

  • Matheus,

    Se você tem como utilizar o SQL Server Express, então importe sua estrutura e seus dados deste "banco de dados Access" para o SQL Server. Você talvez pode ter um pouco de dificuldades no início mas depois você vai perceber que foi a melhor opção. Conte com a ajuda de todos da Comunidade durante às suas dificuldades em realizar esta migração.

    Caso por outros motivos você não possa migrar para SQL Server, então eu sugiro que você continue acessando diretamente o arquivo em Access, mas armazenando este arquivo em um diretório fora do "root" dos Web Sites do IIS, caso contrário você poderá ter uma falha de segurança.



    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 22 de dezembro de 2014 11:03
  • Druval,

    Agradeço a resposta.

    Você acha que um servidor vinculado para gerenciar a base em access não traria nenhuma vantagem? Seja vantagens de segurança, controle de concorrência, etc. ?

    Por questões de contrato, não posso mexer na base de dados. Fazer a migração para SQL Server, colocar esse banco fisicamente na WEB, acarretaria também algumas mudanças no aplicativo atual. Por isso a ideia de usar SQL Server apenas para controlar as requisições vindas da WEB. A ideia é manter a base de dados access no servidor local e o SQL Server na web se conectando ao servidor local via VPN.

    segunda-feira, 22 de dezembro de 2014 12:23
  • Matheus,

          Um dos seus argumentos para não migrar é o gerenciamento e custos de mo, mas isso não é compatível com a sua solução... Linked Server, replicação, isso tudo exige um custo que no decorrer do tempo pode ser maior do que migrar... Recomendo que você analise a opção de migrar!

          Caso você realmente opte por utilizar o linked server, isso não traria nenhuma vantagem, pois o SQL seria apenas uma "ponte" entre a aplicação e o Access. Performance, segurança, concorrência, bloqueios, isso tudo seria controle do Access e não do SQL.


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 22 de dezembro de 2014 13:16
    Moderador
  • Deleted
    segunda-feira, 22 de dezembro de 2014 13:24
  • Não queria perder tempo contando a história, mas como não existe outro meio de ser entendido.... Eu não sou o mantenedor dessa base em Access. Isso é apenas um trabalho freelancer repassado à mim por um amigo que desenvolveu a aplicação. O mesmo está fora do país e não tem como atender.

    O que o usuário da aplicação precisar é disponibilizar alguns dados na internet, através do web site da empresa, para um pequeno grupo de pessoas, geralmente funcionários e alguns poucos clientes.

    Eu poderia simplesmente fazer o que foi sugerido, trabalhar diretamente com a base de dados em Access, mas sabemos como isso é meio desencorajado em vários blogs net a fora.

    Estamos falando de uma micro empresa, máximo de 10 à 15 funcionários, não estão abertos à gastos excessivos.

    Quanto a usar SQL Server como link server, achei que isso traria alguma melhora ao menos em questões de segurança e gerenciamento de concorrência. Segurança pois todas as conexões externas teriam que passar pelo SQL Server, concorrência pois não haveria conexões individuais acessando os arquivos .accdb além das provindas da rede local. Corrijam-me se eu estiver errado pois então talvez eu não esteja entendendo bem o funcionamento de servidor vinculado.



    segunda-feira, 22 de dezembro de 2014 14:08
  • Por questões de contrato, não posso mexer na base de dados.

    Uma dúvida, Matheus: a base de dados em Access seria somente consultada, sem ocorrência de qualquer atualização, ou também seria passível de ser atualizada?

    Qual é a versão do Access?


        José Diz     Belo Horizonte, MG - Brasil




    Sim, seria atualizada também. A base de dados foi feita em Access 2010.
    segunda-feira, 22 de dezembro de 2014 14:10
  • Matheus,

         Em relação à segurança, você está certo, vai passar pelo SQL. Mas independentemente do login, ainda assim, o SQL só vai validar e repassar para o Linked Server, nada mais... Na configuração do Linked Server você pode utilizar uma senha específica, utilizar a senha do login atual, ou não utilizar nenhuma segurança... De qualquer forma, se alguém descobrir a senha, seu Access ficará comprometido... Porque quem faz a segurança do Access é o Access, não o SQL... Eu não sei nem dizer para você SE o Access tem algum nível de segurança e como isso funciona...

        Quanto a performance ou concorrência, também, quem cuida disso é o Access, não o SQL... Se houver qualquer problema de concorrência, o Access tem que decidir o que fazer... lembre-se, o SQL é apenas a "ponte" pro seu Access... Lembre-se também que o linked server seria mais uma "engrenagem" no seu sistema, com os custos associados a isso, mais uma camada, mais lentidão,  mais pontos de falha, etc.

         A única vantagem é que você não iria expor o seu Access na internet, mas apenas a sua aplicação web, considerando ainda que você também não iria expor o SQL Server pois é falha de segurança... 

         Pensando desta forma, não acho que valeria a pena o linked server... proteja o seu Access (diretório, usuário, etc.), desenvolva a aplicação web acessando o Access e pronto!


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    segunda-feira, 22 de dezembro de 2014 15:49
    Moderador
  • Druval,

    Agradeço a resposta.

    Você acha que um servidor vinculado para gerenciar a base em access não traria nenhuma vantagem? Seja vantagens de segurança, controle de concorrência, etc. ?

    Por questões de contrato, não posso mexer na base de dados. Fazer a migração para SQL Server, colocar esse banco fisicamente na WEB, acarretaria também algumas mudanças no aplicativo atual. Por isso a ideia de usar SQL Server apenas para controlar as requisições vindas da WEB. A ideia é manter a base de dados access no servidor local e o SQL Server na web se conectando ao servidor local via VPN.

    Matheus,

    Criar apenas um linkedserver para transitar dados pode apenas piorar o desempenho de sua aplicação, porque você estará criando mais uma camada de transferência de dados completamente desnecessária, uma vez que você deverá manter o arquivo Access no mesmo servidor.

    Se você manter o arquivo em um servidor local, sendo apenas acessado através de VPN você sofrerá com lentidão de rede para manipular os dados e o I/O em disco deste outro servidor para escrever (Incluir/atualizar/excluir dados) e devolver as informações de volta para sua aplicação. Além disso, caso o servidor Web perca o link com a VPN todo o sistema ficará fora do ar.

    Como disse, se você manter o arquivo dentro do Web Site você poderá sofrer riscos, mas se você armazenar o arquivo em outro diretório (talvez até de outro drive deste mesmo servidor, com acesso exclusivo para usuário do servidor Web) você não terá problemas.

    Segue abaixo um artigo interessante, utilizando "Server.MapPath" (caminho lógico). No lugar disto, eu recomendo que você use um diretório fora deste mapeamento, com acesso apenas local e fora dos diretórios virtuais.

    http://social.technet.microsoft.com/wiki/contents/articles/3404.aspx

    Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 22 de dezembro de 2014 15:52
  • Matheus,

         Em relação à segurança, você está certo, vai passar pelo SQL. Mas independentemente do login, ainda assim, o SQL só vai validar e repassar para o Linked Server, nada mais... Na configuração do Linked Server você pode utilizar uma senha específica, utilizar a senha do login atual, ou não utilizar nenhuma segurança... De qualquer forma, se alguém descobrir a senha, seu Access ficará comprometido... Porque quem faz a segurança do Access é o Access, não o SQL... Eu não sei nem dizer para você SE o Access tem algum nível de segurança e como isso funciona...

        Quanto a performance ou concorrência, também, quem cuida disso é o Access, não o SQL... Se houver qualquer problema de concorrência, o Access tem que decidir o que fazer... lembre-se, o SQL é apenas a "ponte" pro seu Access... Lembre-se também que o linked server seria mais uma "engrenagem" no seu sistema, com os custos associados a isso, mais uma camada, mais lentidão,  mais pontos de falha, etc.

         A única vantagem é que você não iria expor o seu Access na internet, mas apenas a sua aplicação web, considerando ainda que você também não iria expor o SQL Server pois é falha de segurança... 

         Pensando desta forma, não acho que valeria a pena o linked server... proteja o seu Access (diretório, usuário, etc.), desenvolva a aplicação web acessando o Access e pronto!


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    Perfeito Roberto!

    Além disso, o "tiro pode acertar o próprio pé"!

    Isto porque uma vez se o SQL Server não for definido com as restrições de segurança adequadas, é possível obter diversos dados do próprio servidor Windows, inclusive executar comandos DOS, como: DIR, DELTREE, entre outros... 

    Se o projeto não é seu, e você ainda permanecer com dúvidas, eu sugiro que você também converse com seu amigo. Afinal, ele também é responsável para que seu trabalho seja bem feito. Senão ambos podem ficar com a imagem arranhada junto ao cliente (ele que indicou e você por ter feito). A decisão é sua, então faça com tranquilidade.

    Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 22 de dezembro de 2014 16:02