none
UNIFICAR BANCO DE DADOS RRS feed

  • Pergunta

  • Olá, amigos.

    Estou encarregado de um sistema de armazenamento e cadastro de dados de moradores, e estou precisando do seguinte.

    Tenho que cadastrar 2mil moradores, porém isso está dividido para 3 pessoas, em 3 computadores diferentes, no fim desses cadastros, preciso unir todos os bancos dos 3 computadores e fazer assim 1 só.

    Como faço isso ? Uso o SQL SERVER 2014.

    Minha aplicação está funcionando e gravando os dados perfeitamente, meu unico problema que passa na minha cabeça seria o"ID" que iria se repetir de cada banco de dados, pois foi feita em IDENTITY PRIMARY KEY.

    Alguem sabe como me ajudar ?

    quarta-feira, 18 de outubro de 2017 20:28

Respostas

  • Mas inicialmente estar ou não na nuvem ,não influencia, vejo como solução se as as maquinas estiverem na mesma rede ,da conection string possuir o id da maquina

    veja um exemplo, assim , em resumo, aplicações vai se conectar em apenas uma maquina(central)

    onde estará o banco de dados.

    SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password");

    faça uma pesquisa no google por 

    connection string sql server remote machine

    se nada disso for possível, a alternativa  é,

    1) vc escolher qual banco de dados ficara todos os cadastros.

    2) vc pode usar o assistente de migração para buscar esses dados , mas o Id antigo ficára perdido, ou seja 

    se no banco 1 o cliente A tem o Id 1 ,no novo banco terá outro Id.

    3) vc tambem pode inserir isso em uma planilha e fazer um insert.

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"






    Wesley Neves

    • Marcado como Resposta Gabriel Swich quinta-feira, 19 de outubro de 2017 13:51
    quinta-feira, 19 de outubro de 2017 11:49

Todas as Respostas

  • Gabriel,

    Os três bancos de dados são SQL Server?

    Basicamente você pode fazer este tipo de implementação de diversas maneiras desde um simples select salvando dados para arquivo texto, como também, através do próprio assistente de importação/exportação do SQL Server.

    Você poderia detalhar um pouco mais o seu ambiente?


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 18 de outubro de 2017 22:39
  • Sim, todos os bancos são com o mesmo nome de database, de tabela e colunas identicas, todos no SQL Server 2014.

    Só preciso juntar todos os dados registrados, porém tem ids que vão se repetir, pois cada maquina está cadastrando separadamente.

    Preciso juntar todos em um só, para minha aplicação apresentar eles como se fosse todos gravados direto de uma só maquina.


    • Editado Gabriel Swich quinta-feira, 19 de outubro de 2017 00:33
    quinta-feira, 19 de outubro de 2017 00:32
  • Sim, todos os bancos são com o mesmo nome de database, de tabela e colunas identicas, todos no SQL Server 2014.

    Só preciso juntar todos os dados registrados, porém tem ids que vão se repetir, pois cada maquina está cadastrando separadamente.


    Pelo que vc afirma , isso pode causar diversos problemas principalmente de inconsistência de dados e redundância, me responda a pergunta

    1) por que a necessidade de ter 3 bancos idênticos com 3 tabelas idênticas em 3 maquinas distintas ?

    2) temos 3 tabelas em 3 bancos, hoje essas tabelas estão populadas nos três bancos ??

    veja ,como garantir que esses dois mil moradores serão cadastrados corretamente ou seja 

    no banco 1 fica de 1 a 500 , no banco 2 fica de 500 a 1000 e no banco 3 fica de 1000 a 2000??

    isso pode ser facilmente apontando a conection string das aplicações que vão fazer o insert , apenas para um BANCO só. 

    feito isso não identifiquei nenhum problema.

     

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"



    • Editado Wesley Neves quinta-feira, 19 de outubro de 2017 10:34 complemento
    quinta-feira, 19 de outubro de 2017 10:29
  • Sim, todos os bancos são com o mesmo nome de database, de tabela e colunas identicas, todos no SQL Server 2014.

    Só preciso juntar todos os dados registrados, porém tem ids que vão se repetir, pois cada maquina está cadastrando separadamente.


    Pelo que vc afirma , isso pode causar diversos problemas principalmente de inconsistência de dados e redundância, me responda a pergunta

    1) por que a necessidade de ter 3 bancos idênticos com 3 tabelas idênticas em 3 maquinas distintas ?

    2) temos 3 tabelas em 3 bancos, hoje essas tabelas estão populadas nos três bancos ??

    veja ,como garantir que esses dois mil moradores serão cadastrados corretamente ou seja 

    no banco 1 fica de 1 a 500 , no banco 2 fica de 500 a 1000 e no banco 3 fica de 1000 a 2000??

    isso pode ser facilmente apontando a conection string das aplicações que vão fazer o insert , apenas para um BANCO só. 

    feito isso não identifiquei nenhum problema.

     

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"



    1) por que a necessidade de ter 3 bancos idênticos com 3 tabelas idênticas em 3 maquinas distintas ?

    - Por que três pessoas estão adicionando os moradores, e eu não tenho um banco de dados hospedado online em nuvem, assim cada um está fazendo no proprio banco de dados local do seu computador particular, entende ?

    Eu sou novo na area, e ainda não sei como adicionar um banco de dados online em nuvem, por isso o problema ... se não, era só cadastrar na nuvem direto e não teria essa apurrinhação ...

    2) temos 3 tabelas em 3 bancos, hoje essas tabelas estão populadas nos três bancos ??

    - Temos 3 bancos com o mesmo nome, com 1 tabela em cada também com o mesmo nome, e as mesmas colunas, oque muda são as informações que estão sendo salvas nessas colunas ( nome, telefone, endereço e etc) , e as informações não vao se repetir, pois cada um está encarregado de um setor de moradores, então não corre o risco de ter o mesmo morador cadastrado em mais de um dos bancos  diferentes ... 

    "isso pode ser facilmente apontando a conection string das aplicações que vão fazer o insert , apenas para um BANCO só. "

    Foi oque eu falei ali em cima, acontece que eu não tenho uma nuvem hospedada online para minha aplicação, pois ainda não sei fazer isso ... 

    Acho que agora já deu p entender a situação, no inicio quando fiz isso pensei em fazer cada um no seu computador com seu banco de dados local, no fim juntar as informações dos 3 bancos em 1 só e pronto, mas depois me veio o problema dos "IDS" em mente ... ainda consigo fazer desse jeito ? ou é impossivel ?


    quinta-feira, 19 de outubro de 2017 11:03
  • Mas inicialmente estar ou não na nuvem ,não influencia, vejo como solução se as as maquinas estiverem na mesma rede ,da conection string possuir o id da maquina

    veja um exemplo, assim , em resumo, aplicações vai se conectar em apenas uma maquina(central)

    onde estará o banco de dados.

    SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password");

    faça uma pesquisa no google por 

    connection string sql server remote machine

    se nada disso for possível, a alternativa  é,

    1) vc escolher qual banco de dados ficara todos os cadastros.

    2) vc pode usar o assistente de migração para buscar esses dados , mas o Id antigo ficára perdido, ou seja 

    se no banco 1 o cliente A tem o Id 1 ,no novo banco terá outro Id.

    3) vc tambem pode inserir isso em uma planilha e fazer um insert.

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"






    Wesley Neves

    • Marcado como Resposta Gabriel Swich quinta-feira, 19 de outubro de 2017 13:51
    quinta-feira, 19 de outubro de 2017 11:49
  • Mas inicialmente estar ou não na nuvem ,não influencia, vejo como solução se as as maquinas estiverem na mesma rede ,da conection string possuir o id da maquina

    veja um exemplo, assim , em resumo, aplicações vai se conectar em apenas uma maquina(central)

    onde estará o banco de dados.

    SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password");

    faça uma pesquisa no google por 

    connection string sql server remote machine

    se nada disso for possível, a alternativa  é,

    1) vc escolher qual banco de dados ficara todos os cadastros.

    2) vc pode usar o assistente de migração para buscar esses dados , mas o Id antigo ficára perdido, ou seja 

    se no banco 1 o cliente A tem o Id 1 ,no novo banco terá outro Id.

    3) vc tambem pode inserir isso em uma planilha e fazer um insert.

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"






    Wesley Neves

    No meu caso, eu perder o ID original e ser feito outro não me afeta em nada, só preciso que os cadastros sejam exibidos e migrados todos para UM SÓ BANCO .

    E você tem o link onde eu possa baixar esse assistente de migração ?

    Vou procurar isso que você recomendou, já me guiou e deu uma luz !! Muito obrigado, Posso te contatar caso ainda tenha dificuldades ? Não tenho ninguém proximo que entenda e possa tirar um tempinho do tempo pra me ajudar nessa minha caminhada em programação ... mas desde já, muito obrigado !!

    • Editado Gabriel Swich quinta-feira, 19 de outubro de 2017 13:54
    quinta-feira, 19 de outubro de 2017 13:51
  • Pode sim ,

    seque o link de como migrar dados usando o assitente.

    https://docs.microsoft.com/pt-br/sql/integration-services/import-export-data/connect-to-a-sql-server-data-source-sql-server-import-and-export-wizard

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"






    Wesley Neves

    quinta-feira, 19 de outubro de 2017 14:40
  • Pode sim ,

    seque o link de como migrar dados usando o assitente.

    https://docs.microsoft.com/pt-br/sql/integration-services/import-export-data/connect-to-a-sql-server-data-source-sql-server-import-and-export-wizard

    Wesley Neves - Brasilia-DF

     
    https://wesleyneves.wordpress.com/
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"






    Wesley Neves

    Obrigado, mas ainda estou com duvidas/problemas pra entender como funciona a exportação !!

    Teria algum contato seu p me passar ? te segui no twitter, mas acho que voce nao usa muito .

    Na hora de copiar os dados e escolher o banco de dados de destino, como faço p botar o banco de outro computador ? como faço esse link entre as duas maquinas ? Eu posso até por o nome do servidor com a autenticação, mas como eles vao se conectar ?

    quinta-feira, 19 de outubro de 2017 22:54
  • Gabriel,

    Mas a questão que você deve analisar não é como colocar os bancos na mesma máquina, inicialmente é analisar como os dados vão ser unificados essa é a questão.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 21 de outubro de 2017 15:12
  • Gabriel,

    Mas a questão que você deve analisar não é como colocar os bancos na mesma máquina, inicialmente é analisar como os dados vão ser unificados essa é a questão.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Sim !!

    Eu consegui restaurar o banco de um servidor para o outro, porém agora o problema é como UNIFICAR eles, pois quando eu restauro dois bancos de dados em um banco novo vazio, só consigo se ativar a opção " SUBSTITUIR O BANCO DE DADOS EXISTENTE " e isso faz o banco anterior ser excluido e só prevalecer o banco novo, não juntando as duas tabelas ...

    Quando tento a opção sem marcar a caixa " SUBSTITUIR O BANCO DE DADOS EXISTENTE ", me aparece o seguinte erro :

    O conjunto de backup mantém um backup de um banco de dados diferente do banco de dados 'X' existente.
    RESTORE DATABASE está sendo encerrado de forma anormal. (Microsoft SQL Server, Erro: 3154)

    Não sei também se esse é o metodo correto de fazer

    Alguem saberia como resolver isso ? 

    domingo, 22 de outubro de 2017 12:26
  • Gabriel,

    Então, o que você pode fazer é através do comando Restore realizar a restauração deste backup para um novo banco de dados realizando a movimentação dos arquivos, ou seja, salvando os arquivos em outro local.

    Veja se este exemplo ajuda:

    Restore Database NovoBanco
    From Disk = 'F:\Backup-Servidores\SEUBANCO-20120731.bak'
    With Replace, Recovery,
    Stats=10,
    Move 'NovoBanco_Data' TO 'E:\MSSQL2016\DATA\NovoBancoData.mdf',
    Move 'NovoBanco_log' To 'E:\MSSQL2016\LOG\NovoBancoLog.Ldf'
    Go

    Através das opções Move, você pode definir a movimentação e o local de armazenamento dos arquivos que estarão sendo restaurados.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 27 de outubro de 2017 11:41