Gostaria de automatizar a geração de script no SQL Server Management Studio 2008.
Agora o que eu faço é:
- Clique com o botão direito em meu banco de dados, Tarefas, "Gerar Scripts ..."
- selecione manualmente todas as opções de exportação de que preciso e clique em selecionar tudo na guia "selecionar objeto"
- Selecione a pasta de exportação
- Por fim, clique no botão "Concluir"
Existe uma maneira de automatizar essa tarefa?
Editar: desejo gerar scripts de criação , não alterar scripts.
Respostas:
O que Brann está mencionando do Visual Studio 2008 SP1 Team Suite é a versão 1.4 do Database Publishing Wizard. É instalado com sql server 2008 (talvez apenas profissional?) Em \ Arquivos de programas \ Microsoft SQL Server \ 90 \ Tools \ Publishing \ 1.4. A chamada VS do explorador do servidor está simplesmente chamando isso. Você pode obter a mesma funcionalidade por meio da linha de comando, como:
Não sei se a v1.4 tem os mesmos problemas que a v1.1 (usuários são convertidos em funções, as restrições não são criadas na ordem certa), mas não é uma solução para mim porque não faz script de objetos para arquivos diferentes como a opção Tasks-> Generate Scripts no SSMS. Atualmente, estou usando uma versão modificada do Scriptio (usa a API MS SMO) para atuar como um substituto aprimorado para o assistente de publicação de banco de dados (sqlpubwiz.exe). Atualmente não é possível fazer scripts a partir da linha de comando, devo adicionar essa contribuição no futuro.
Scriptio foi postado originalmente no blog de Bill Graziano, mas posteriormente foi liberado para o CodePlex por Bill e atualizado por outros. Leia a discussão para ver como compilar para uso com o SQL Server 2008.
http://scriptio.codeplex.com/
EDIT: Eu comecei a usar o produto SQL Compare da RedGate para fazer isso. É um substituto muito bom para tudo o que o assistente de publicação sql deveria ter sido. Você escolhe um banco de dados, backup ou instantâneo como fonte e uma pasta como local de saída e tudo é despejado em uma estrutura de pastas. Acontece que é o mesmo formato que seu outro produto, o SQL Source Control, usa.
fonte
SqlPubwiz tem opções muito limitadas em comparação com a geração de script no SSMS. Em contraste, as opções disponíveis no SMO correspondem quase exatamente às do SSMS, sugerindo que provavelmente é o mesmo código. (Espero que a MS não o tenha escrito duas vezes!) Existem vários exemplos no MSDN como este que mostra tabelas de script como objetos individuais. No entanto, se você quiser que tudo seja executado corretamente com um esquema 'completo' que inclua objetos 'DRI' (Integridade referencial declarativa) como chaves estrangeiras, então o script de tabelas individualmente não funciona com as dependências corretamente. Descobri que é necessário coletar todos os URNs e entregá-los ao criador de scripts como um array. Este código, modificado a partir do exemplo,
fonte
Microsoft.SqlServer.Management.SqlScriptPublish.ScriptPublishWizard
do assembly C: \ Arquivos de programas (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Microsoft.SqlServer.Management.SqlScriptPublishUI.dll. Isso é o que o SSMS usa. (Como alternativa, você pode olhar para a classeMicrosoft.SqlServer.Management.UI.GenerateScript
do assembly C: \ Arquivos de programas (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ ReplicationDialog.dll.)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 Management Studio e sua saída é mais amigável ao controle de versão. Ele oferece suporte a scripts de esquema e dados.
Para gerar scripts, execute:
Em seguida, para recriar o banco de dados a partir dos scripts, execute:
fonte
Você pode usar o SQL Server Management Object (SMO) para automatizar as tarefas de gerenciamento do SQL Server 2005, incluindo a geração de scripts: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
fonte
Se você é um desenvolvedor, definitivamente opte pelo SMO. Aqui está um link para a classe Scripter, que é o seu ponto de partida:
Classe Scripter
fonte
Não vejo o powershell com SQLPSX mencionado em nenhuma dessas respostas ... Eu pessoalmente não brinquei com ele, mas parece muito simples de usar e idealmente adequado para este tipo de tarefas de automação, com tarefas como:
(ref: http://www.sqlservercentral.com/Forums/Topic1167710-1550-1.aspx#bm1168100 )
Página do projeto: http://sqlpsx.codeplex.com/
A principal vantagem dessa abordagem é que ela combina a configurabilidade / personalização do uso direto do SMO, com a conveniência e facilidade de manutenção de usar uma ferramenta simples existente como o Database Publishing Wizard.
fonte
Em Ferramentas> Opções> Designers> Designers de tabelas e bancos de dados, há uma opção para 'Gerar scripts de alteração automaticamente' que irá gerar um para cada alteração feita no momento em que você salvá-lo.
fonte
Você pode fazer isso com o código T-SQL usando as tabelas INFORMATION_SCHEMA.
Existem também ferramentas de terceiros - eu gosto do Apex SQL Script exatamente pelo uso que você está falando. Eu o executo completamente na linha de comando.
fonte
Experimente as novas ferramentas de linha de comando do SQL Server para gerar scripts T-SQL e monitorar exibições de gerenciamento dinâmico.
Funcionou para mim como charme. É uma nova ferramenta baseada em python da Microsoft que roda na linha de comando. Tudo funciona conforme descrito na página da Microsoft (ver link abaixo) Funcionou para mim com o servidor SQL 2012.
Você o instala com pip:
Visão geral dos parâmetros de comando, como de costume, com h para obter ajuda:
Dica: Se você efetuar login no SQL-Server por meio da autenticação do Windows, deixe de lado o nome de usuário e a senha.
https://cloudblogs.microsoft.com/sqlserver/2017/05/17/try-new-sql-server-command-line-tools-to-generate-t-sql-scripts-and-monitor-dynamic-management- Visualizações/
fonte
Se você deseja uma solução da Microsoft, pode tentar: Microsoft SQL Server Database Publishing Wizard 1.1
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Ele cria um processo em lote que você pode executar a qualquer momento que precisar reconstruir os scripts.
fonte
Tenho usado o DB Comparer - é um script de banco de dados livre e sem complicações e pode ser comparado a outro banco de dados e também produzir um script Diff. Excelente para scripts de mudança de desenvolvimento para produção. http://www.dbcomparer.com/
fonte
Também existe esta ferramenta de linha de comando simples que construí para minhas necessidades.
http://mycodepad.wordpress.com/2013/11/18/export-ms-sql-database-schema-with-c/
Ele pode exportar um banco de dados inteiro e tenta exportar objetos criptografados. Tudo é armazenado em pastas e arquivos sql separados para fácil comparação de arquivos.
O código também está disponível no github.
fonte
Do Visual Studio 2008 SP1 TeamSuite:
Na guia Server Explorer / Data Connections, há uma ferramenta de publicação para provedor que faz o mesmo que "Assistente de publicação de banco de dados do Microsoft SQL Server", mas é compatível com MS Sql Server 2008.
fonte
Estou usando o VS 2012 (para bancos de dados no MSSQL Server 2008). O banco de dados de comparação tem uma opção para salvá-lo, a comparação e as opções. Estas são essencialmente as suas configurações de entrega. Depois disso, você pode atualizar ou gerar o script.
Eu apenas acho um pouco estranho carregá-lo do arquivo mais tarde (arrastar e soltar do Windows Explorer), pois não vejo o arquivo no Solution Explorer.
fonte