SQL Server: Importando/Exportando um banco de dados
Este guia está divido em dois tipos de migração:
Migração via script: Consiste em gerar um script SQL em seu banco de dados de origem, e executar esse script dentro do banco de dados da Umbler, de forma que a estrutura e dados de seu banco sejam recriados.
Migração via Import and Export Wizard: É ideal para transferir um banco que pode ser acessado remotamente (que não esteja apenas em seu PC local), e é uma alternativa caso não tenha conseguido migrar o banco de dados via script. O banco remoto geralmente está em outro provedor, ou na própria Umbler.
Para seguir os tutoriais abaixo você precisa do SQL Server Management Studio, ferramenta da Microsoft para administração de bancos de dados.
Migração via script
Acesse o Management Studio e faça uma conexão com os dados de acesso externo disponíveis no App da Umbler.
Na base de dados desejada, clique com o botão direito e selecione Tasks - Generate Scripts.
Você será direcionado para o assistente de criação de scripts. Clique em Next.
Nessa tela você deve selecionar que tipo de objetos que deseja. No exemplo, selecionamos apenas Tabelas. Depois de marcar as opções, clique em Next.
Você deve especificar onde quer que o script seja salvo ou publicado. Definimos aqui um arquivo específico. Clicando em Advanced, você pode determinar o tipo de dados a fazer parte do script.
O próximo passo é revisar as configurações do script. Se tudo estiver correto, você pode clicar em Next.
Você verá um arquivo como o seguinte:
Para importar, acesse o Management Studio, conecte na base de destino e abra o arquivo .sql gerado. Clique, depois, em !Execute para importar as tabelas e os dados.
Pronto, o script SQL vai ser executado e o banco vai ser recriado na Umbler :)
Migração via Import and Export Wizard
Para migrar um banco remoto para a Umbler, vamos usar a ferramenta SQL Server Import and Export Wizard. Ela vem no pacote padrão do SQL Server Management Studio.
Exportando Primary Keys
Para exportar as suas Primary Keys, conecte no banco de dados de origem via SQL Server Management Studio e execute a query abaixo. Essa query vai retornar os scripts que vão recriar as suas Primary Keys. Após migrar o banco de dados com o SQL Server Import and Export Wizard, é só executar dentro do banco de dados de destino os scripts gerados, e as Keys vão ser recriadas :)
SELECT DISTINCT 'ALTER TABLE ' + colinfo.table_name
+ ' WITH CHECK ADD CONSTRAINT ['
+ colinfo.constraint_name
+ '] PRIMARY KEY CLUSTERED ('
+ (SELECT Stuff((SELECT ',' + column_name
FROM information_schema.key_column_usage
WHERE constraint_name
= colinfo.constraint_name
FOR xml path('')), 1, 1, ''))
+ ')'
FROM information_schema.key_column_usage colinfo
INNER JOIN information_schema.table_constraints tblC
ON tblC.constraint_name = colinfo.constraint_name
AND tblC.constraint_schema = colinfo.constraint_schema
WHERE tblC.constraint_type = 'PRIMARY KEY'
Exportando Foreign Keys
Para exportar as suas Foreign Keys é o mesmo procedimento. Conecte no banco de dados de origem via SQL Server Management Studio e execute a query abaixo. Essa query vai retornar os scripts que vão recriar as suas Foreign Keys. Após migrar o banco de dados com o SQL Server Import and Export Wizard, é só executar dentro do banco de dados de destino os scripts gerados, e as Keys vão ser recriadas :)
SELECT DISTINCT 'ALTER TABLE ' + ReferencingConstraint.table_name
+ ' ADD CONSTRAINT [' + FK.constraint_name + '] FOREIGN KEY ('
+ (SELECT Stuff((SELECT ',' + column_name
FROM information_schema.key_column_usage
colInfo
WHERE colInfo.constraint_name =
FK.constraint_name
FOR xml path('')), 1, 1, ''))
+ ') REFERENCES ' + PK_cons.table_name + ' ('
+ (SELECT Stuff((SELECT ',' + column_name
FROM information_schema.key_column_usage
colInfo
WHERE colInfo.constraint_name =
FK.unique_constraint_name
FOR xml path('')), 1, 1, ''))
+ ')' + ' ON DELETE ' + fk.update_rule
+ ' ON UPDATE ' + FK.delete_rule
FROM information_schema.referential_constraints AS FK
INNER JOIN information_schema.key_column_usage AS ReferencingConstraint
ON FK.constraint_schema = ReferencingConstraint.constraint_schema
AND FK.constraint_name = ReferencingConstraint.constraint_name
INNER JOIN information_schema.key_column_usage AS PK_cons
ON FK.constraint_schema = ReferencingConstraint.constraint_schema
AND FK.unique_constraint_name = PK_cons.CONSTRAINT_NAME
Os scripts serão exibidos na opção Results do Management Studio.
Para realizar a migração do banco de dados, é só abrir a ferramenta dar um Next.
Você precisa definir que o Data Source vai ser SQL Server Native Cliente 11.0, e logo após vai informar o Server name e porta do seu banco de dados de origem.
Na opção de Authentication, marque Use SQL Server Authentication, e informe o usuário e senha do seu banco de dados de origem.
Em seguida clique em Refresh, e selecione o nome de seu banco de dados de origem no dropdown que fica logo ao lado.
Feito isso, pode dar um Next para configurar o banco de dados de destino.
A opção de destino é semelhante, você precisa definir que o Destination vai ser SQL Server Native Cliente 11.0, e logo após vai informar o Server name e porta do seu banco de dados de destino.
Na opção de Authentication, marque Use SQL Server Authentication, e informe o usuário e senha do seu banco de dados de destino.
Em seguida clique em Refresh, e selecione o nome de seu banco de dados de destino no dropdown que fica logo ao lado.
Após clicar em Next, Selecione a opção Copy data from one or more tables or views e prossiga novamente.
Na próxima tela você tem a opção de selecionar quais tabelas e views deseja migrar. Para migrar o banco completamente, certifique-se de que todas as tabelas e views estão selecionadas.
Após clicar em Next, confirme que a opção Run immediately está marcada, e pode clicar em Finish para realizar a migração.
Pronto, em alguns minutos (dependendo do tamanho da base) seu banco de dados vai estar replicado aqui na Umbler.
Lembrete: Após a migração ser concluída, não esqueça de recriar as Primary e Foreign Keys do banco de dados (caso ele possua alguma). Clique aqui caso não tenha exportado as Keys ;)