Crie um script SQL que cria banco de dados e tabelas

102

Tenho um banco de dados SQL e tabelas que gostaria de replicar em outro SQL Server. Gostaria de criar um script SQL que cria o banco de dados e as tabelas em um único script.

Posso criar o script "Criar" usando o SQL Management Studio para cada caso (Banco de Dados e Tabelas), mas gostaria de saber se combinar os dois scripts "Criar" em um único script seria suficiente.

Obrigado.

Tony
fonte
26
você poderia mudar a resposta aceita?
skolima
1
@skolima concordou, a resposta aceita (por Clayton) acabará obtendo o resultado, mas a resposta de CJM é muito mais rápida
elmer007

Respostas:

18

No SQL Server Management Studio, você pode clicar com o botão direito do mouse no banco de dados que deseja replicar e selecionar "Script Database as" para que a ferramenta crie o arquivo SQL apropriado para replicar esse banco de dados em outro servidor. Você pode repetir esse processo para cada tabela que deseja criar e, em seguida, mesclar os arquivos em um único arquivo SQL. Não se esqueça de adicionar uma instrução using depois de criar seu banco de dados, mas antes de qualquer criação de tabela.

Em versões mais recentes do SQL Server, você pode obter isso em um arquivo no SSMS.

  1. Clique com o botão direito em um banco de dados.
  2. Tarefas
  3. Gerar Scripts

Isso iniciará um assistente onde você pode fazer o script de todo o banco de dados ou apenas partes. Não parece haver uma maneira T-SQL de fazer isso.

Gerar scripts do SQL Server

Clayton
fonte
182
Continue rolando ... O método CJM é 99,99999% melhor
ewitkows
A resposta de CJM ainda não é suficiente. Após a aplicação do método CJM, você deve aplicar também o método Shawna Jacobs.
Andrzej Martyna,
De qualquer forma, para fazer isso é SQL padrão para mysql, por exemplo?
Benjamin Goodacre
378

Embora a resposta de Clayton o leve até lá (eventualmente), no SQL2005 / 2008 / R2 / 2012 você tem uma opção muito mais fácil:

Clique com o botão direito do mouse no Banco de dados, selecione Taskse Generate Scripts, em seguida , o que iniciará o Assistente de script. Isso permite que você gere um único script que pode recriar o banco de dados completo, incluindo tabela / índices e restrições / procedimentos armazenados / funções / usuários / etc. Há uma infinidade de opções que você pode configurar para personalizar a saída, mas a maioria é autoexplicativa.

Se você estiver satisfeito com as opções padrão, poderá fazer todo o trabalho em questão de segundos.

Se você deseja recriar os dados no banco de dados (como uma série de INSERTS), também recomendo o SSMS Tools Pack (gratuito para a versão SQL 2008, pago para a versão SQL 2012).

CJM
fonte
5
Isso é excelente, acabei de fazer isso e economizei muito tempo.
Bill Sambrone
@CJM Estou pensando que QUASE amo você! :-P
Piero Alberto
Eu segui essas etapas exatamente, mas ainda recebo toneladas de erros e não consigo corrigi-los. Qualquer ajuda?
user1789573
Eu sugiro que você poste sua própria pergunta sobre isso - certifique-se de postar detalhes sobre as etapas que você executou e os erros que recebeu.
CJM
@ user1789573 - como escreveu Shawna Jacobs - SSMS não se preocupa com dependências (vergonha para SSMS devteam!) então você terá toneladas de erros "por design". Siga as instruções de Shawna Jacobs para lidar com essa fraqueza do SSMS.
Andrzej Martyna de
9

Uma excelente explicação pode ser encontrada aqui: Gerar script no SQL Server Management Studio

Cortesia Ali Issa Aqui está o que você deve fazer:

  1. Clique com o botão direito no banco de dados (não na tabela) e selecione tarefas -> gerar scripts
  2. Próximo -> selecione a tabela / tabelas solicitadas (a partir de objetos de banco de dados específicos selecionados)
  3. Próximo -> clique em avançado -> tipos de dados para script = esquema e dados

Se você deseja criar um script que gere apenas as tabelas (sem dados), você pode pular a parte avançada das instruções!

HelloImKevo
fonte
7

Não sei por que o SSMS não leva em conta a ordem de execução, mas simplesmente não o faz. Isso não é um problema para bancos de dados pequenos, mas e se seu banco de dados tiver 200 objetos? Nesse caso, a ordem de execução é importante porque não é realmente fácil passar por tudo isso.

Para scripts não ordenados gerados por SSMS, você pode seguir

a) Execute o script (alguns objetos serão inseridos de alguma forma, haverá alguns erros)

b) Remova todos os objetos do script que foram adicionados ao banco de dados

c) Volte para a) até que tudo seja eventualmente executado

A opção alternativa é usar uma ferramenta de terceiros, como ApexSQL Script ou qualquer outra ferramenta já mencionada neste tópico (pacote de ferramentas SSMS, Red Gate e outros).

Tudo isso cuidará das dependências para você e economizará ainda mais tempo.

Shawna Jacobs
fonte
1

Sim, você pode adicionar quantas instruções SQL desejar em um único script. Apenas uma coisa a ser observada: a ordem é importante. Você não pode fazer INSERT em uma tabela até que você a CRIE; você não pode definir uma chave estrangeira até que a chave primária seja inserida.

duffymo
fonte