Tenho vários bancos de dados em produção e também tenho ambiente de teste. Não tenho permissão para fazer operações de backup e restauração. Na verdade, estou usando o assistente para gerar scripts (esquema + dados) e executar o sql em outro banco de dados. Existe uma maneira de fazer isso via script (SQL, PowerShell, C#, etc.)? Posso mover todos os objetos de banco de dados da produção para testar com um clique idealmente, é possível que o script seja universal e o parâmetro de entrada seja o nome do banco de dados, por exemplo? Os problemas com os scripts gerados são dois => SQL pode ser muito grande para abrir no gerenciador sql e também é demorado executar o assistente sempre, porque preciso de dados de produção com frequência.
A visão final baseada nesse script ou trabalho universal é que eu tenho um painel da web, onde posso clicar no banco de dados ou ter um conjunto de scripts de shell de comando e o banco de dados será replicado para o ambiente de teste onde posso modificar os dados.
Qualquer ideia ?
Você pode usar o SMO para fazer o script de um esquema de banco de dados do Powershell, C# ou VB. Um ótimo artigo sobre o assunto pode ser encontrado aqui .
Com relação aos dados, acho que a opção mais simples é canalizar os dados de cada tabela para um arquivo usando o BCP e importá-los de volta para o banco de dados de destino, novamente usando o BCP. Sugiro fortemente o formato nativo (
-n
opção), pois simplifica enormemente o processo.Você também pode usar a tarefa de transferência de objetos do SQL Server, que é usada para transferir um ou mais objetos do SQL Server para um banco de dados diferente, na mesma ou em outra instância do SQL Server.
Isso permite que você selecione diferentes tipos de objetos que deseja transferir. Você pode selecionar tabelas, visualizações, procedimentos armazenados, funções definidas pelo usuário, etc. Além disso, você pode selecionar uma combinação desses tipos de objetos para transferir e até mesmo selecionar objetos específicos de um determinado tipo de objeto.
Consulte este artigo da MS sobre como obter:
Tarefa Transferir objetos do SQL Server
Também Transferir tarefas de banco de dados e Transferir tarefas de objetos do SQL Server no SSIS