Estou executando o SQL Server 2012.
O SQL Server Management Studio tem a opção de clicar com o botão direito do mouse em um banco de dados e selecionar Tarefas e Gerar Scripts.
Existe uma maneira de automatizar isso via linha de comando de alguma forma?
Quero criar um script que inclua o esquema e os dados de todo o banco de dados.
Ferramentas como ScriptDB
e sqlpubwiz.exe
todas parecem ter como alvo o SQL Server 2005. E o SQL Server 2012?
O melhor é usar o Powershell - se você for usá-lo com frequência. Você pode consultar Geração automatizada de scripts com Powershell e SMO .
Além disso, as extensões do SQL Server PowerShell (SQLPSX) são de grande valor ao trabalhar com o Powershell. Todos os módulos possuem arquivos de ajuda, por exemplo Get-SqlScripter .
Para ferramentas de terceiros, recomendo verificar (existem muitas ferramentas de terceiros por aí, mas abaixo as que usei e são ótimas):
Tara Raj, da Microsoft , anunciou recentemente que a equipe do Microsoft SQL lançou um conjunto de ferramentas de linha de comando para gerar scripts T-SQL que parecem fazer exatamente o que você pediu:
Alguns exemplos de uso:
Eu escrevi um utilitário de linha de comando de código aberto chamado SchemaZen que faz isso. É muito mais rápido do que o script do estúdio de gerenciamento e sua saída é mais amigável ao controle de versão. Ele suporta scripts de esquema e dados.
Para gerar scripts execute:
Em seguida, para recriar o banco de dados a partir de scripts, execute:
Apenas uma atualização: nas versões atuais dos módulos powershell do SQL Server (SQL Server 2014 em diante, eu acredito. Testado no SSMS 17), a maioria dessas opções são comandos e métodos nativos.
Por exemplo, você pode usar Get-SqlDatabase e métodos como .Script() e .EnumScript(). É realmente útil e simples, especialmente se você deseja uma abordagem mais granular (tabelas específicas e outros objetos).
Por exemplo, isso irá gerar scripts CREATE para funções definidas pelo usuário e salvá-lo no arquivo:
Se você deseja criar scripts de dados e elementos como índices, chaves, gatilhos, etc., você terá que especificar opções de script, assim:
Observe que o método Script() não suporta dados de script. Use EnumScript() para tabelas.
Uma única tabela :
Todas as suas visualizações, salve um arquivo por cada visualização, script DROP e CREATE:
Espero que isto ajude.
Você pode usar as versões de linha de comando do xSQL Schema Compare e do xSQL Data Compare . Com as versões de linha de comando, você pode agendar dados periódicos e comparações de esquema com um banco de dados vazio e isso sempre tem os scripts para construir uma réplica exata da versão mais recente do seu banco de dados do zero.
Divulgação: sou afiliado ao xSQL.