Sdílet prostřednictvím


Vytváření a spouštění úloh agenta SQL Serveru v Linuxu

platí pro:SQL Server – Linux

Úlohy SQL Serveru se používají k pravidelnému provádění stejné posloupnosti příkazů v databázi SQL Serveru. Tento kurz obsahuje příklad vytvoření úlohy agenta SQL Serveru v Linuxu pomocí Transact-SQL i aplikace SQL Server Management Studio (SSMS).

  • Instalace agenta SQL Serveru v Linuxu
  • Vytvoření nové úlohy pro provádění denních záloh databáze
  • Naplánování a spuštění úlohy
  • Stejný postup proveďte v nástroji SSMS (volitelné)

Známé problémy s Agentem SQL Serveru na Linuxu najdete v poznámkách k verzi pro SQL Server 2017 na Linuxu.

Požadavky

K dokončení tohoto kurzu jsou vyžadovány následující požadavky:

Následující požadavky jsou volitelné:

Povolení agenta SQL Serveru

Pokud chcete používat agenta SQL Serveru v Linuxu, musíte nejprve povolit agenta SQL Serveru na počítači s nainstalovaným SQL Serverem.

  1. Pokud chcete povolit agenta SQL Serveru, postupujte podle následujícího postupu.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. Restartujte SQL Server pomocí následujícího příkazu:

    sudo systemctl restart mssql-server
    

Poznámka

Od verze SQL Server 2017 (14.x) CU 4 je agent SQL Serveru součástí balíčku mssql-server a je ve výchozím nastavení zakázaný. Informace o nastavení agenta před CU 4 najdete v tématu Instalace agenta SQL Serveru v Linuxu.

Vytvoření ukázkové databáze

Pomocí následujícího postupu vytvořte ukázkovou databázi s názvem SampleDB. Tato databáze se používá pro úlohu denního zálohování.

  1. Na vašem systému s Linuxem otevřete relaci terminálu bash.

  2. Ke spuštění příkazu Transact-SQL CREATE DATABASE použijte sqlcmd.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'
    
  3. Ověřte, že je databáze vytvořena tím, že si na serveru vypíšete seznam databází.

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

Vytvoření úlohy pomocí Transact-SQL

Následující kroky vytvoří úlohu agenta SQL Serveru v Linuxu s příkazy Transact-SQL. Úloha spouští denní zálohu ukázkové databáze SampleDB.

Spropitné

Ke spuštění těchto příkazů můžete použít libovolného klienta T-SQL. Například v Linuxu můžete použít Nainstalovat nástroje příkazového řádku SQL Serveru sqlcmd a bcp v Linuxu nebo rozšíření SQL Serveru pro Visual Studio Code. Ze vzdáleného Windows Serveru můžete také spouštět dotazy v aplikaci SQL Server Management Studio (SSMS) nebo použít rozhraní uživatelského rozhraní pro správu úloh, které je popsáno v další části.

  1. Pomocí sp_add_job vytvořte úlohu s názvem 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. Voláním sp_add_jobstep vytvořte krok úlohy, který vytvoří zálohu SampleDB databáze.

    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. Pak vytvořte denní plán pro úlohu pomocí sp_add_schedule.

    -- Creates a schedule called 'Daily'
    EXECUTE dbo.sp_add_schedule
        @schedule_name = N'Daily SampleDB',
        @freq_type = 4,
        @freq_interval = 1,
        @active_start_time = 233000;
    
    USE msdb;
    GO
    
  4. Připojte plán úlohy k úloze pomocí sp_attach_schedule.

    -- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job
    EXECUTE sp_attach_schedule
        @job_name = N'Daily SampleDB Backup',
        @schedule_name = N'Daily SampleDB';
    GO
    
  5. Pomocí sp_add_jobserver přiřaďte úlohu cílovému serveru. V tomto příkladu je cílem místní server.

    EXECUTE dbo.sp_add_jobserver
        @job_name = N'Daily SampleDB Backup',
        @server_name = N'(local)';
    GO
    
  6. Spusťte úlohu pomocí sp_start_job.

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

Vytvoření úlohy pomocí SSMS

Úlohy můžete také vytvářet a spravovat vzdáleně pomocí aplikace SQL Server Management Studio (SSMS) ve Windows.

  1. Spusťte SSMS ve Windows a připojte se k instanci SQL Serveru s Linuxem. Další informace najdete v tématu Použití aplikace SQL Server Management Studio ve Windows ke správě SQL Serveru v Linuxu.

  2. Ověřte, že jste vytvořili ukázkovou databázi s názvem SampleDB.

    vytvoření databáze SampleDB
  3. Ověřte, že SQL Agent byl nainstalován SQL Server Agent na Linuxu a správně nakonfigurován. V Průzkumníku objektů vyhledejte znaménko plus vedle agenta SQL Serveru. Pokud agent SQL Serveru není povolený, zkuste restartovat službu mssql-server v Linuxu.

    snímek obrazovky ukazující, jak ověřit, že byl nainstalován agent SQL Serveru.

  4. Vytvořte novou úlohu.

    Snímek obrazovky znázorňující, jak vytvořit novou úlohu

  5. Pojmenujte svoji úlohu a vytvořte krok úlohy.

    Snímek obrazovky ukazující, jak vytvořit krok úlohy

  6. Určete, který subsystém chcete použít a co by měl krok úlohy udělat.

    Snímek obrazovky zobrazující subsystém úloh

    snímek obrazovky zobrazující akci kroku úlohy.

  7. Vytvořte nový plán úlohy.

    Snímek obrazovky s dialogovým oknem Nová úloha, kde je zvýrazněna možnost Plány a zvlášť označena možnost Nový

    Snímek obrazovky s dialogovým oknem Nová úloha s vyvolanou možností OK

  8. Začněte svou úlohu.

    snímek obrazovky znázorňující, jak spustit úlohu agenta SQL Serveru

Další krok

V tomto kurzu jste se naučili:

  • Instalace agenta SQL Serveru v Linuxu
  • Vytváření úloh pomocí Transact-SQL a systémových uložených procedur
  • Vytvoření úlohy, která provádí denní zálohy databáze
  • Vytváření a správa úloh pomocí uživatelského rozhraní SSMS

Dále prozkoumejte další možnosti vytváření a správy úloh:

Dokumentace k agentu SQL Serveru