AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 258188
Accepted
Ali
Ali
Asked: 2020-01-26 09:38:50 +0800 CST2020-01-26 09:38:50 +0800 CST 2020-01-26 09:38:50 +0800 CST

SQL Server Automatize a atualização de uma tabela apenas de um ambiente para outro

  • 772

Estou procurando uma melhor prática/opção para atualizar uma tabela apenas do ambiente Prod para Staging.

Detalhes técnicos:

  1. A tabela em Source está sendo carregada diariamente com novos dados.
  2. A tabela no destino deve representar novos dados somente quando atualizada.

Algumas das opções que estou pensando:

  1. Replicação (transacional)
  2. SSIS
  3. Script TSQL - Trabalho do SQL Agent

Minhas primeiras preferências seriam a opção 3. Esta será uma boa opção? Se sim, alguém pode me guiar para um script.

sql-server t-sql
  • 1 1 respostas
  • 838 Views

1 respostas

  • Voted
  1. Best Answer
    LadyBug1
    2020-01-27T04:22:13+08:002020-01-27T04:22:13+08:00

    É uma questão de preferência. Veja abaixo algumas vantagens/desvantagens que encontrei trabalhando com cada um deles.

    1. Replicação (Transacional) - funciona muito bem desde que você não precise tocar na mesa. É em tempo real, então você deixará seus desenvolvedores/testadores realmente felizes com dados "frescos", quase em tempo real. Torna-se complicado se você precisar adicionar uma coluna, remover uma coluna ou se a estrutura da sua tabela mudar porque em quase todos os casos você precisa reinicializar a replicação do zero, mas para apenas uma tabela de alguns MB funcionará rápido, isso se torna um problema de alguns GB porque leva tempo. Se você configurar a replicação com sua conta, certifique-se de que ela não irá expirar ou ser desativada porque você irá travar a replicação; o melhor é usar uma conta de serviço. Outra coisa a considerar são os recursos de rede e servidor - as transações sendo replicadas em tempo real serão "suga" alguma rede e parte da memória do servidor e E/S, mas a menos que sua tabela obtenha algumas centenas de linhas (ou mais) modificadas a cada segundo, não vejo isso como um problema real. Você tem um bom tutorial sobre como configurar issoaqui .
    2. SSIS - você não terá dados (quase) em tempo real em seu ambiente de teste. Portanto, se algum de seus desenvolvedores ou testadores tiver a ideia de comparar dados entre produção e estágio - o tempo de atualização precisa ser considerado. Se você alterar a estrutura da tabela, precisará modificar o pacote (sempre certifique-se de atualizar também os metadados dentro do pacote). Minha experiência é que você trabalha mais para manter um pacote SSIS atualizado do que para recriar a replicação, mas isso é subjetivo às preferências e requisitos pessoais. Além disso, se você configurar seu pacote como 'truncate & load', você excluirá e gravará novamente os mesmos dados todos os dias, independentemente de sua tabela de origem ser atualizada ou não. Se você não quiser, você precisa adicionar alguma lógica em seu pacote e isso pode ser complicado e levar à perda de dados ou duplicatas se você não t conhecer seus dados muito bem. Outra coisa a considerar são seus direitos de acesso: se você quiser implantá-lo, precisará de direitos do tipo SQL Admin, se quiser executar isso de uma pasta local, precisará de direitos RDP para essa máquina e permissões de gravação para copiar seu pacote para um unidade local no servidor. Você ainda precisa de um trabalho do SQL Agent para automatizá-lo (suponho que você não queira executar isso manualmente). Lembre-se de que você precisa usar o Visual Studio com complemento de BI para criar o pacote. Você encontra documentação sobre como configurar o pacote SSIS Você ainda precisa de um trabalho do SQL Agent para automatizá-lo (suponho que você não queira executar isso manualmente). Lembre-se de que você precisa usar o Visual Studio com complemento de BI para criar o pacote. Você encontra documentação sobre como configurar o pacote SSIS Você ainda precisa de um trabalho do SQL Agent para automatizá-lo (suponho que você não queira executar isso manualmente). Lembre-se de que você precisa usar o Visual Studio com complemento de BI para criar o pacote. Você encontra documentação sobre como configurar o pacote SSISaqui e um bom tutorial aqui .
    3. Script TSQL - SQL Agent Job - Essa também é minha preferência pessoal, pois é a mais fácil de configurar e manter, especialmente se você não tem experiência com SSIS e/ou replicação. Assim como no SSIS, você não terá dados (quase) em tempo real. Você tem muito mais controle e é mais fácil mudar se a estrutura da sua tabela mudar. Dependendo do tipo de alterações que você pode ter em sua tabela de origem, pode ser complicado sincronizar seus dados, mas você sempre tem a opção de truncar a tabela e inserir tudo da produção todas as vezes (altamente NÃO recomendado para tabelas grandes e mesmo que seu mesa é pequena hoje, considere quão grande será em 3-5 anos!). Quando configuro trabalhos como este, geralmente levo meu tempo para entender os dados e todas as alterações que podem acontecer e uso uma instrução de mesclagemtanto quanto possível. Se você tiver uma coluna de data de inserção em sua tabela de produção, poderá trabalhar sua lógica em torno disso. Ao configurar o trabalho do SQL Agent, certifique-se de alterar o proprietário para uma conta de serviço, caso contrário, o trabalho falhará se sua conta for desabilitada.

    Para os pontos 2 e 3, considere fazer algum trabalho de índice logo após inserir/modificar os dados para manter seu desempenho em um nível alto.

    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve