Criar e executar trabalhos do SQL Server Agent no Linux

Aplica-se a:SQL Server – Linux

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

  • Instalar 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 o SQL Server Agent no Linux, consulte as Notas sobre a versão para o SQL Server 2017 em Linux.

Pré-requisitos

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

Os seguintes pré-requisitos são opcionais:

Habilitar o SQL Server Agent

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

  1. Para habilitar o SQL Server Agent, siga as etapas abaixo.

    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

Do SQL Server 2017 (14.x) CU 4 em diante, o SQL Server Agent está incluído no pacote mssql-server e está desabilitado por padrão. Para configurar o agente antes da CU 4, acesse 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. Usar o sqlcmd para executar um comando CREATE DATABASE Transact-SQL.

    /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 o Transact-SQL

As etapas a seguir criam um trabalho de SQL Server Agent no Linux com comandos Transact-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 do SQL Server sqlcmd e bcp no Linux ou Extensão do SQL Server para Visual Studio Code. Em um Windows Server remoto, você também pode executar consultas no SSMS (SQL Server Management Studio) ou usar a interface do usuário para gerenciamento de trabalho, que é descrita 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
    EXEC 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.

    -- Adds a step (operation) to the job
    EXEC 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'
    EXEC 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' schedule to the 'Daily SampleDB Backup' Job
    EXEC 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.

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

    EXEC 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 o SSMS (SQL Server Management Studio) no Windows.

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

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

    Create a SampleDB database
  3. Verifique se o SQL Agent foi instalado no SQL Server Agent no Linux e configurado corretamente. Procure o sinal de adição ao lado do SQL Server Agent no Pesquisador de Objetos. Se o SQL Server Agent não estiver habilitado, tente reiniciar o serviço mssql-server no Linux.

    Screenshot showing how to verify SQL Server Agent was installed.

  4. Criar um novo trabalho.

    Screenshot showing how to create a new job.

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

    Screenshot showing how to create a job step.

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

    Screenshot showing job subsystem.

    Screenshot showing job step action.

  7. Crie uma nova agenda de trabalho.

    Screenshot of the New Job dialog box with the Schedules option highlighted and the New option called out.

    Screenshot of the New Job dialog box with the OK option called out.

  8. Inicie seu trabalho.

    Screenshot showing how to Start the SQL Server Agent job.

Próxima etapa

Neste tutorial, você aprendeu a:

  • Instalar o SQL Server Agent no Linux
  • Usar o Transact-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: