• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zephirus

Passar de Access DB para outra base de dados

31 mensagens neste tópico

Olá,

Tenho um programa que usa uma base de dados de access. Neste momento é usado localmente mas queria alterá-lo para poder ser usado em simultâneo em várias máquinas usando apenas uma base de dados. A base de dados iria estar guardada na máquina X e todas as máquinas A, B, C, .... iriam buscar e adicionar dados nessa mesma base de dados.

Sei que não é possível fazer uma ligação a uma base de dados de access que não esteja na máquina local e penso que Access também não irá funcionar muito bem com ligações simultâneas. Sendo assim, a minha questão é a seguinte:

- Qual a melhor base de dados a usar para o que pretendo e se existe alguma em que não seja necessário instalar software à parte ou que pelo menos possa ser instalado quando instalo a minha aplicação. Outro requisito é que  seja free.

Obrigado,

zephirus

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entretanto encontrei este tópico:

http://www.portugal-a-programar.pt/index.php?showtopic=13489

Segundo o user Weasel, uma boa ideia e penso que se aplica neste meu caso é usar PostgreSQL (Open Source e Free). Mas também se fala no SQLExpress. Sinceramente, SQL não é uma área onde esteja à vontade. Qualquer uma destas hipóteses vai de encontro àquilo que pretendo? Recomendam alguma (ou outra)?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém me sabe orientar neste assunto? Queria uma opção que não implicasse instalar uma segunda aplicação além da minha que estou a desenvolver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sei que não é possível fazer uma ligação a uma base de dados de access que não esteja na máquina local e penso que Access também não irá funcionar muito bem com ligações simultâneas.

É numa rede ?

O Access suporta até 255 ligações em simultâneo, o que provavelmente até é mais do que suficiente para ti, mas se possível utiliza outra base de dados porque oferece melhor performance e segurança, como o SQL (podes usar o SQL Express que é gratuito)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Tenho um programa que usa uma base de dados de access. Neste momento é usado localmente mas queria alterá-lo para poder ser usado em simultâneo em várias máquinas usando apenas uma base de dados. A base de dados iria estar guardada na máquina X e todas as máquinas A, B, C, .... iriam buscar e adicionar dados nessa mesma base de dados.

Sei que não é possível fazer uma ligação a uma base de dados de access que não esteja na máquina local e penso que Access também não irá funcionar muito bem com ligações simultâneas. Sendo assim, a minha questão é a seguinte:

- Qual a melhor base de dados a usar para o que pretendo e se existe alguma em que não seja necessário instalar software à parte ou que pelo menos possa ser instalado quando instalo a minha aplicação. Outro requisito é que  seja free.

Obrigado,

zephirus

pois nao sei qual vai ser a tua utilização em relação a essa Bd mas eu no estágio meti a Bd num servidor e os computadores restantes estavam ligadas a essa mesma BD atraves de um atalho ligado ao servidor.. não sei se me fiz entender.. mas acho que tinha limitações.. nao podia estar mais que uma pessoa a usa-la mas nao tenho a certeza..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É numa rede ?

O Access suporta até 255 ligações em simultâneo, o que provavelmente até é mais do que suficiente para ti, mas se possível utiliza outra base de dados porque oferece melhor performance e segurança, como o SQL (podes usar o SQL Express que é gratuito)

Acho que ele fazia bem seguir com a BD em access visto que disse que nao estava muito dentro do assunto..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É numa rede ?

O Access suporta até 255 ligações em simultâneo, o que provavelmente até é mais do que suficiente para ti, mas se possível utiliza outra base de dados porque oferece melhor performance e segurança, como o SQL (podes usar o SQL Express que é gratuito)

Vou tentar explicar o melhor possível.

Para o programa que tenho neste momento e que está acabado, funciona assim:

- tenho vários PCs numa rede (rede A). Neste momento cada um desses PCs acede a uma base de dados local nesse PC e cada user modifica a BD como quer. O conteúdo da BD é variado mas um dos items é um valor boolean referente ao ping de várias outras máquinas que estão noutra rede (rede B)

O que pretendo:

- Em vez de cada PC ter a sua BD, pretendo ter apenas uma base de dados para todos os utilizadores. A base de dados estaria num dos PCs da rede B e os utilizadores da rede A acederiam a essa BD e poderiam modificá-la. Claro que o que pretendo é que possa haver acesso simultâneo ou pelo menos que não haja problemas de estarem várias pessoas a escrever na BD ao mesmo tempo. Se fosse possível em access, até pode ser mas se sql for melhor também posso mudar. O único senão é que eu não percebo muito disso e essas máquinas da rede B já têm o SQL2005 instalado para uso de outro programa e não sei se pode influenciar alguma coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou tentar explicar o melhor possível.

Para o programa que tenho neste momento e que está acabado, funciona assim:

- tenho vários PCs numa rede (rede A). Neste momento cada um desses PCs acede a uma base de dados local nesse PC e cada user modifica a BD como quer. O conteúdo da BD é variado mas um dos items é um valor boolean referente ao ping de várias outras máquinas que estão noutra rede (rede B)

O que pretendo:

- Em vez de cada PC ter a sua BD, pretendo ter apenas uma base de dados para todos os utilizadores. A base de dados estaria num dos PCs da rede B e os utilizadores da rede A acederiam a essa BD e poderiam modificá-la. Claro que o que pretendo é que possa haver acesso simultâneo ou pelo menos que não haja problemas de estarem várias pessoas a escrever na BD ao mesmo tempo. Se fosse possível em access, até pode ser mas se sql for melhor também posso mudar. O único senão é que eu não percebo muito disso e essas máquinas da rede B já têm o SQL2005 instalado para uso de outro programa e não sei se pode influenciar alguma coisa.

`

é uma questão de meteres a BD num PC master (tipo servidor) e tentares ligar-te a ele atraves de um atalho nos outros PC's

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

`

é uma questão de meteres a BD num PC master (tipo servidor) e tentares ligar-te a ele atraves de um atalho nos outros PC's

Mas penso que não é possível ligar a uma base de dados access noutro pc, ou estou errado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas penso que não é possível ligar a uma base de dados access noutro pc, ou estou errado?

se estão ligados em rede, fazes um atalho para a BD e ligas-te como tivesses no pc "servidor".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas penso que não é possível ligar a uma base de dados access noutro pc, ou estou errado?

Vou perguntar outra vez: É numa rede ou é através de uma internet/intranet ?

Se for um rede normal podes fazer sem qualquer problema, se um internet/intranet então não podes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então eu vou clarificar melhor: todos os PC's podem aceder a uma base de dados Access se essa estiver numa pasta partilhada do Windows acessível. Quantos podem escrever simultaneamente? UM.

Se o teu programa é escrito em VB.NET e usas os Dataset's e compainha a mudança para SQL Express é só uma questão de instalar o serviço na máquina, converter a base de dados, e definir a connection string apropriada na aplicação.

jpaulino: O que é uma rede normal? Conheco internet e intranets..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou perguntar outra vez: É numa rede ou é através de uma internet/intranet ?

Se for um rede normal podes fazer sem qualquer problema, se um internet/intranet então não podes.

É numa intranet. Os PCs cliente estão, por exemplo na rede 10.60.30.xxx e onde eu quero por a base de dados é a rede 10.40.20.xxx.

No meu programa actual, eu estou na rede 10.60.30.xxx e consigo pingar as máquinas da outra rede e o resultado do ping é um dos dados da base de dados. No novo programa, o servidor teria entre outros, esse dado de todas as máquinas da rede 10.40.20.xxx e eu na rede 10.60.30.xxx acederia a essa BD.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então eu vou clarificar melhor: todos os PC's podem aceder a uma base de dados Access se essa estiver numa pasta partilhada do Windows acessível. Quantos podem escrever simultaneamente? UM.

...

Errado,

Como exemplo posso te dizer que tenho uma Base de Dados (mdb) em Access num servidor.

Tenho cerca de 20 utilizadores com BDs em (mde) a trabalhar simultaneamente e sem qualquer tipo de problemas...

Aqui existem é outras situações que tens de saber controlar.

1º Os dados devem ficar apenas numa base de dados (mdb) cada cliente deve ter uma BD (mde) com as tabelas linkadas.

Apenas tens de ter as BD bem estruturadas e teres controlo total de como os utilizadores inserem, actualizam apagam os registos.

Estou a falar de uma rede local e não de Internet ou Intranet...

Cumpts

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Errado,

Como exemplo posso te dizer que tenho uma Base de Dados (mdb) em Access num servidor.

Tenho cerca de 20 utilizadores com BDs em (mde) a trabalhar simultaneamente e sem qualquer tipo de problemas...

Aqui existem é outras situações que tens de saber controlar.

1º Os dados devem ficar apenas numa base de dados (mdb) cada cliente deve ter uma BD (mde) com as tabelas linkadas.

Apenas tens de ter as BD bem estruturadas e teres controlo total de como os utilizadores inserem, actualizam apagam os registos.

Estou a falar de uma rede local e não de Internet ou Intranet...

Cumpts

Ou seja, no meu caso não poderei usar access, certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja, no meu caso não poderei usar access, certo?

Pode depender de vários factores.

Estas duas redes estão dentro da mesma localização física (por exemplo dentro do mesmo escritório) ?

Qual a velocidade de comunicação / rede que tens entre a duas?

Já exprimentas-te colocar a BD no servidor e fazer o link das tabelas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É numa intranet. Os PCs cliente estão, por exemplo na rede 10.60.30.xxx e onde eu quero por a base de dados é a rede 10.40.20.xxx.

Isso não é uma intranet.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode depender de vários factores.

Estas duas redes estão dentro da mesma localização física (por exemplo dentro do mesmo escritório) ?

Qual a velocidade de comunicação / rede que tens entre a duas?

Já exprimentas-te colocar a BD no servidor e fazer o link das tabelas?

Sim estão na mesma localização. Eu consigo aceder remotamente às máquinas da rede B. A comunicação é por Gigabit.

Não testei colocar a DB no servidor. Qual seria o path que teria de colocar? Ou é mais complexo que isso?

Isso não é uma intranet.

Ok. Isso quer dizer que é possível fazer o que pretendo ou mantém-se o problema de, por ser access, não poder ser acedida por várias pessoas ao mesmo tempo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim estão na mesma localização. Eu consigo aceder remotamente às máquinas da rede B. A comunicação é por Gigabit.

Não testei colocar a DB no servidor. Qual seria o path que teria de colocar? Ou é mais complexo que isso?

Ok. Isso quer dizer que é possível fazer o que pretendo ou mantém-se o problema de, por ser access, não poder ser acedida por várias pessoas ao mesmo tempo?

Cria uma pasta no servidor, partilhas e a dás permissões aos utilizadores, depois copias a base de dados para essa pasta.

No VB alteras a connectstring para \\nomeservidor\nomedapasta\basededados.mdb

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cria uma pasta no servidor, partilhas e a dás permissões aos utilizadores, depois copias a base de dados para essa pasta.

No VB alteras a connectstring para \\nomeservidor\nomedapasta\basededados.mdb

Ah ok. Então é simples. A única coisa que me resta saber agora é se é possível fazer alterações na base de dados sabendo que há N pessoas clientes que o podem fazer. A base de dados não é muito complexa, o utilizador pode adicionar, remover ou alterar linhas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PauloR, testei o que disseste e já consigo aceder à base de dados remota. No entanto, só o consigo fazer se antes tiver entrado nessa máquina remota onde tenho a BD. O que é que devo alterar na connection string para poder aceder? Ou será que não é na connectionstring mas sim na função que tenho para saber se o ficheiro existe?

Function DetermineIfFileExists() As Integer
	Dim sFileName As String
	sFileName = "\\10.40.30.40\db\db.mdb"
	Dim fFile As New FileInfo(sFileName)
	If Not fFile.Exists Then
		Return 0
	Else
		Return 1
	End If
End Function

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens que garantir que a maquina servidora nao te vai pedir autenticação... podes por exemplo fazer uma partilha administrativa... assim ninguém vai ver essa pasta partilhada... e funciona quase como se estivesse invisível...

Por outro lado podes mapear a ligação cada vez que abres a ligação e fornecer se for necessário credenciais de acesso.

tudo o resto continua a funcionar como tens

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens que garantir que a maquina servidora nao te vai pedir autenticação... podes por exemplo fazer uma partilha administrativa... assim ninguém vai ver essa pasta partilhada... e funciona quase como se estivesse invisível...

Por outro lado podes mapear a ligação cada vez que abres a ligação e fornecer se for necessário credenciais de acesso.

tudo o resto continua a funcionar como tens

Como é que faço cada uma dessas coisas? Partilha administrativa e mapear a ligação com as credenciais?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora