Pergunta

Eu tenho vários arquivos .SQL que tenho que executar para aplicar alterações feitas por outros desenvolvedores em um banco de dados do SQL Server 2005. Os arquivos são nomeados de acordo com o seguinte padrão:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

Existe uma maneira de executar todos eles de uma só vez?

Foi útil?

Solução

Crie um arquivo .bat com o seguinte comando:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Coloque esse arquivo .bat no diretório do qual deseja que os arquivos .SQL sejam executados, clique duas vezes no arquivo .bat e você terminou!

Outras dicas

Usar POR. Do prompt de comando:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. No SQL Management Studio, abre uma nova consulta e digite todos os arquivos como abaixo

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Vá para o menu de consulta no SQL Management Studio e verifique se o modo SQLCMD está ativado
  3. Clique no modo SQLCMD; Os arquivos serão selecionados em cinza como abaixo

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Agora execute

Verifique se você tem o SQLCMD ativado clicando na opção de consulta> sqlcmd no estúdio de gerenciamento.

  1. Suponha que você tenha quatro arquivos .SQL (script1.sql,script2.sql,script3.sql,script4.sql) em uma pasta c:\scripts.

  2. Crie um arquivo de script principal (main.sql) com o seguinte:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Salve o main.sql em c: scripts.

  3. Crie um arquivo em lote chamado ExecuteScripts.bat com o seguinte:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    Lembre -se de substituir <YourDatabaseName> Com o banco de dados, você deseja executar seus scripts. Por exemplo, se o banco de dados for "funcionário", o comando será o seguinte:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Execute o arquivo em lote clicando duas vezes no mesmo.

Você poderia usar APEXSQL PROPAGATE. É uma ferramenta gratuita que executa vários scripts em vários bancos de dados. Você pode selecionar quantos scripts forem precisar e executá -los em um ou vários bancos de dados (mesmo vários servidores). Você pode criar scripts List e salvá -la e, em seguida, selecione essa lista cada vez que deseja executar esses mesmos scripts na ordem criada (várias listas de scripts também podem ser adicionadas):

Select scripts

Quando scripts e bancos de dados forem selecionados, eles serão mostrados na janela principal e tudo o que você precisa fazer é clicar no botão "Executar" e todos os scripts serão executados em bancos de dados selecionados no pedido especificado:

Scripts execution

Consulta geral

Salve as linhas abaixo no bloco de notas com nome Batch.bat e coloque dentro da pasta onde todo o seu arquivo de script está lá

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

EXEMPLO

para %% g em (*.sql) do sqlcmd /s NFGDDDD23432 /d Emplyeedb -i "%% g" pausa

Em algum momento, se o login falhar para você, use o código abaixo com nome de usuário e senha

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

para %% g em (*.sql) do sqlcmd /s NE8148SERVER /d Emplyeedb -VOCÊ Scott -P tigre -i "%% g" pausa

Depois de criar o arquivo de morcego dentro da pasta em que seus arquivos de script estão lá, basta clicar no arquivo de morcego que seus scripts serão executados

eu escrevi um utilitário de código aberto Em C#, permite arrastar e soltar muitos arquivos SQL e comece a executá -los contra um banco de dados.

O utilitário tem os seguintes recursos:

  • Arraste e solte arquivos de script
  • Execute um diretório de arquivos de script
  • Script SQL Coloque mensagens durante a execução
  • O script passou ou falhou que é colorido verde e vermelho (amarelo para corrida)
  • Pare na opção de erro
  • Abra o script na opção de erro
  • Relatório de execução com tempo necessário para cada script
  • Tempo de duração total
  • Teste a conexão DB
  • Asynchronus
  • .NET 4 e testado com SQL 2008
  • Arquivo exe único
  • Mate a conexão a qualquer hora

O que eu sei que você pode usar os comandos OSQL ou SQLCMD para executar vários arquivos SQL. A desvantagem é que você terá que criar um script para os dois comandos.

Usando o SQLCMD para executar vários scripts do SQL Server

OSQL (isto é para SQL Server 2000)

http://msdn.microsoft.com/en-us/library/aa213087(v=sql.80).aspx

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

Etapa 1: As linhas acima copiam no bloco de anotações salve -o como morcego.

Etapa2: na pasta D Drive D Drive em todos os arquivos SQL em consultas executadas no SQL Server.

Etapa 3: Dê seu IP, ID de usuário e senha.

Você pode criar um único script que chama todos os outros.

Coloque o seguinte em um arquivo em lote:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Quando você executa o arquivo em lote, ele criará um novo script nomeado all.sql No mesmo diretório em que o arquivo em lote está localizado. Ele procurará todos os arquivos com a extensão .sql No mesmo diretório em que o arquivo em lote está localizado.

Você pode então executar todos os scripts usando sqlplus user/pwd @all.sql (ou estenda o arquivo em lote para ligar sqlplus Depois de criar o all.sql roteiro)

Para executar todos os sqlfile no mesmo diretório, use o seguinte comando:

ls | awk '{print "@"$0}' > all.sql

Este comando criará um único arquivo SQL com os nomes de cada arquivo SQL no diretório anexado por "@".

Depois de all.sql é criado simplesmente executar all.sql Com o SQLPlus, isso executará cada arquivo SQL no all.sql.

Se você pode usar o SQL interativo:

1 - Crie um arquivo .bat com este código:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - Altere o nome do PWD e o servidor.

3 - Coloque o arquivo .bat na pasta que contém arquivos .SQL e execute -o.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top