AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 56616
Accepted
Harald
Harald
Asked: 2014-01-13 06:03:07 +0800 CST2014-01-13 06:03:07 +0800 CST 2014-01-13 06:03:07 +0800 CST

SQL Server 2012: gerar scripts a partir da linha de comando

  • 772

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 ScriptDBe sqlpubwiz.exetodas parecem ter como alvo o SQL Server 2005. E o SQL Server 2012?

sql-server scripting
  • 5 5 respostas
  • 41417 Views

5 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2014-01-13T10:38:12+08:002014-01-13T10:38:12+08:00

    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 .

    Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlTable | Get-SqlScripter | Set-Content -Path D:\scripts\script.sql
    Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlStoredProcedure | Get-SqlScripter
    Get-SqlDatabase -dbname database1 -sqlserver server | Get-SqlView | Get-SqlScripter
    

    Para ferramentas de terceiros, recomendo verificar (existem muitas ferramentas de terceiros por aí, mas abaixo as que usei e são ótimas):

    • Comparação de dados e comparação de dados do Redgate
    • Pacote de ferramentas SSMS por Mladen Prajdić
    • 21
  2. BradC
    2017-05-23T13:23:10+08:002017-05-23T13:23:10+08:00

    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:

    script mssql

    Mssql-scripter é o equivalente de linha de comando multiplataforma da experiência do Assistente de Geração de Scripts amplamente utilizada no SSMS.

    Você pode usar mssql-scripter no Linux, macOS e Windows para gerar scripts T-SQL de linguagem de definição de dados (DDL) e linguagem de manipulação de dados (DML) para objetos de banco de dados no SQL Server em execução em qualquer lugar, Banco de Dados SQL do Azure e SQL Data Warehouse do Azure . Você pode salvar o script T-SQL gerado em um arquivo .sql ou canalizá-lo para utilitários *nix padrão (por exemplo, sed, awk, grep) para outras transformações. Você pode editar o script gerado ou verificá-lo no controle do código-fonte e, posteriormente, executar o script em seus processos de implantação de banco de dados SQL existentes e pipelines DevOps com ferramentas de linha de comando SQL multiplataforma padrão, como sqlcmd.

    Mssql-scripter é construído usando Python e incorpora os princípios de usabilidade das novas ferramentas Azure CLI 2.0. O código-fonte pode ser encontrado no Github em https://github.com/Microsoft/sql-xplat-cli , e agradecemos suas contribuições e solicitações de pull!

    Alguns exemplos de uso:

    Gerar scripts DDL para todos os objetos de banco de dados (padrão) no banco de dados Adventureworks e saída para stdout

    $ mssql-scripter -S localhost -d AdventureWorks -U sa
    

    Gere scripts DDL para todos os objetos de banco de dados e scripts DML (instruções INSERT) para todas as tabelas no banco de dados Adventureworks e salve o script em um arquivo

    $ mssql-scripter -S localhost -d AdventureWorks -U sa –schema-and-data  > ./output.sql
    
    • 15
  3. Seth Reno
    2015-11-15T16:48:51+08:002015-11-15T16:48:51+08:00

    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:

    script schemazen.exe --server localhost --database db --scriptDir c:\somedir

    Em seguida, para recriar o banco de dados a partir de scripts, execute:

    schemazen.exe create --server localhost --database db --scriptDir c:\somedir
    • 9
  4. Victor Lopes
    2018-11-16T06:36:25+08:002018-11-16T06:36:25+08:00

    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:

    $Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName
    
    $MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
    $MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"
    

    Se você deseja criar scripts de dados e elementos como índices, chaves, gatilhos, etc., você terá que especificar opções de script, assim:

    $scriptOptions = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions
    
    $scriptOptions.NoCollation = $True
    $scriptOptions.Indexes = $True
    $scriptOptions.Triggers = $True
    $scriptOptions.DriAll = $True
    $scriptOptions.ScriptData = $True
    
    $Database.Tables.EnumScript($scriptOptions) | Out-File -FilePath ".\AllMyTables.sql"
    

    Observe que o método Script() não suporta dados de script. Use EnumScript() para tabelas.

    Uma única tabela :

    ($Database.Tables | Where Name -eq "MyTableName").EnumScript($scriptOptions)
    

    Todas as suas visualizações, salve um arquivo por cada visualização, script DROP e CREATE:

    ForEach ($view in $($Database.Views | Where Schema -eq "dbo")) {
    
        "`nIF OBJECT_ID('$($view.Name)') IS NOT NULL DROP VIEW $($view.Name);`n`n" | Out-File -FilePath ".\SqlScripts\$($view.Name).sql"    
        $view.Script() | Out-File -FilePath ".\SqlScripts\$($view.Name).sql" -Append
    }
    

    Espero que isto ajude.

    • 3
  5. Endi Zhupani
    2017-03-22T07:03:18+08:002017-03-22T07:03:18+08:00

    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.

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve