Criar e executar trabalhos SQL Server Agent no Linux

Aplica-se a:SQL Server no Linux

SQL Server Jobs são usados para realizar regularmente a mesma sequência de comandos em seu banco de dados SQL Server. Este tutorial fornece um exemplo de como criar um trabalho SQL Server Agent no Linux usando tanto Transact-SQL (T-SQL) quanto SQL Server Management Studio (SSMS).

  • Ativar o SQL Server Agent no Linux
  • Criar um novo trabalho para executar backups diários de banco de dados
  • Agendar e executar o trabalho
  • Executar as mesmas etapas no SSMS (opcional)

Para problemas conhecidos com SQL Server Agent no Linux, consulte SQL Server em Linux: problemas conhecidos.

Pré-requisitos

Os pré-requisitos a seguir são necessários para concluir esse tutorial:

Os seguintes pré-requisitos são opcionais:

Habilitar SQL Server Agent

Para usar SQL Server Agent no Linux, primeiro você deve habilitar SQL Server Agent em um computador que já tenha SQL Server instalado.

  1. Para habilitar SQL Server Agent, execute o comando a seguir.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. Reinicie SQL Server com o seguinte comando:

    sudo systemctl restart mssql-server
    

Observação

A partir do SQL Server 2017 (14.x) CU 4, o SQL Server Agent está incluído no pacote mssql-server e fica desabilitado por padrão. Para o SQL Server Agent no SQL Server antes do CU 4, veja Instalar o SQL Server Agent no Linux.

Criar banco de dados de exemplo

Use as etapas a seguir para criar um banco de dados de exemplo chamado SampleDB. Esse banco de dados é usado para o trabalho de backup diário.

  1. Em seu computador Linux, abra uma sessão de terminal Bash.

  2. Use sqlcmd para executar um comando T-SQL CREATE DATABASE .

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'
    
  3. Verifique se o banco de dados é criado listando os bancos de dados no servidor.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'SELECT name FROM sys.databases'
    

Criar um trabalho com Transact-SQL

Os passos a seguir criam um trabalho SQL Server Agent no Linux com comandos T-SQL. O trabalho executa um backup diário do banco de dados de exemplo, SampleDB.

Dica

Você pode usar qualquer cliente T-SQL para executar esses comandos. Por exemplo, no Linux, você pode usar Instalar as ferramentas de linha de comando sqlcmd e bcp SQL Server no Linux ou na extensão MSSQL para Visual Studio Code. A partir de um Windows Server remoto, você também pode executar consultas no SQL Server Management Studio (SSMS) ou usar a interface SSMS para gerenciamento de trabalhos, que é descrito na próxima seção.

  1. Use sp_add_job para criar um trabalho chamado Daily SampleDB Backup.

    -- Adds a new job executed by the SQLServerAgent service
    -- called 'Daily SampleDB Backup'
    USE msdb;
    GO
    
    EXECUTE dbo.sp_add_job @job_name = N'Daily SampleDB Backup';
    GO
    
  2. Chame sp_add_jobstep para criar uma etapa de trabalho que cria um backup do banco de dados SampleDB.

    EXECUTE sp_add_jobstep
          @job_name = N'Daily SampleDB Backup',
          @step_name = N'Backup database',
          @subsystem = N'TSQL',
          @command = N'BACKUP DATABASE SampleDB TO DISK = N''/var/opt/mssql/data/SampleDB.bak'' WITH NOFORMAT, NOINIT, NAME = ''SampleDB-full'', SKIP, NOREWIND, NOUNLOAD, STATS = 10',
          @retry_attempts = 5,
          @retry_interval = 5;
    GO
    
  3. Em seguida, crie um agendamento diário para seu trabalho com sp_add_schedule.

    -- Creates a schedule called 'Daily SampleDB'
    EXECUTE dbo.sp_add_schedule
        @schedule_name = N'Daily SampleDB',
        @freq_type = 4,
        @freq_interval = 1,
        @active_start_time = 233000;
    
    USE msdb;
    GO
    
  4. Anexe a agenda de trabalho ao trabalho com sp_attach_schedule.

    -- Sets the 'Daily SampleDB' schedule to the 'Daily SampleDB Backup' job
    EXECUTE sp_attach_schedule
        @job_name = N'Daily SampleDB Backup',
        @schedule_name = N'Daily SampleDB';
    GO
    
  5. Use sp_add_jobserver para atribuir o trabalho a um servidor de destino. Neste exemplo, o destino é o servidor local.

    EXECUTE dbo.sp_add_jobserver
        @job_name = N'Daily SampleDB Backup',
        @server_name = N'(local)';
    GO
    
  6. Inicie o trabalho com sp_start_job.

    EXECUTE dbo.sp_start_job N'Daily SampleDB Backup';
    GO
    

Criar um trabalho com o SSMS

Você também pode criar e gerenciar trabalhos remotamente usando SQL Server Management Studio (SSMS) no Windows.

  1. Inicie o SSMS no Windows e conecte-se à instância do linux SQL Server. Para obter mais informações, consulte Use SQL Server Management Studio no Windows para gerenciar SQL Server em Linux.

  2. Verifique se você criou um banco de dados de exemplo chamado SampleDB.

    Captura de tela da criação de um banco de dados SampleDB.

  3. Verifique se o SQL Server Agent está instalado e configurado corretamente. Procure o sinal de mais ao lado do SQL Server Agent no Pesquisador de Objetos. Se o SQL Server Agent não estiver ativado, tente reiniciar o serviço mssql-server no Linux.

    Screenshot mostrando como verificar se SQL Server Agent estava instalado.

  4. Criar um novo trabalho.

    Captura de tela que mostra como criar uma nova tarefa.

  5. Dê um nome ao seu trabalho e crie sua etapa de trabalho.

    Captura de tela que mostra como criar uma etapa de trabalho.

  6. Especifique que subsistema você deseja usar e o que a etapa de trabalho deve fazer.

    Captura de tela da caixa de diálogo Novo Trabalho no SSMS, mostrando a página Etapas com o botão Novo realçado para criar uma etapa de trabalho.

    Captura de tela da caixa de diálogo Nova Etapa do Trabalho mostrando um comando T-SQL BACKUPDATABASE para SampleDB com o botão OK realçado.

  7. Crie uma nova agenda de trabalho.

    Captura de tela da caixa de diálogo Novo Trabalho com a opção Agendamentos realçada e a opção Novo destacada.

    Captura de tela da caixa de diálogo Novo Trabalho com a opção OK em destaque.

  8. Inicie seu trabalho.

    Screenshot mostrando como iniciar o SQL Server Agent job.

Próxima etapa

Neste tutorial, você aprendeu a:

  • Ativar o SQL Server Agent no Linux
  • Use o T-SQL e os procedimentos armazenados do sistema para criar trabalhos
  • Criar um trabalho que executa backups diários de banco de dados
  • Usar a interface do usuário do SSMS para criar e gerenciar trabalhos

Em seguida, explore outros recursos para criar e gerenciar trabalhos: