Udostępnij za pośrednictwem


SQL Server Agent

Dotyczy:programu SQL ServerAzure SQL Managed Instance

Ten artykuł zawiera omówienie agenta programu SQL Server, który jest usługą systemu Microsoft Windows, która wykonuje zaplanowane zadania administracyjne (nazywane zadaniami ) w programie SQL Server i usłudze Azure SQL Managed Instance.

Ważny

W usłudze Azure SQL Managed Instanceobsługiwane są obecnie większość, lecz nie wszystkie funkcje agenta programu SQL Server. Aby uzyskać szczegółowe informacje, zobacz Różnice języka T-SQL usługi Azure SQL Managed Instance z programu SQL Server.

Zalety agenta programu SQL Server

Program SQL Server Agent używa programu SQL Server do przechowywania informacji o zadaniu. Zadania zawierają jeden lub więcej etapów zadania. Każdy krok zawiera własne zadanie, na przykład tworzenie kopii zapasowej bazy danych.

Agent programu SQL Server może uruchamiać zadanie zgodnie z harmonogramem, w odpowiedzi na określone zdarzenie lub na żądanie. Jeśli na przykład chcesz utworzyć kopię zapasową wszystkich serwerów firmy każdego dnia powszedniego po godzinach, możesz zautomatyzować to zadanie. Zaplanuj wykonywanie kopii zapasowej po 22:00 od poniedziałku do piątku. Jeśli kopia zapasowa napotka problem, agent programu SQL Server może zarejestrować zdarzenie i powiadomić Cię.

Notatka

Domyślnie usługa SQL Server Agent jest wyłączona po zainstalowaniu programu SQL Server, chyba że użytkownik jawnie zdecyduje się automatycznie uruchomić usługę.

Składniki agenta programu SQL Server

Program SQL Server Agent używa następujących składników do zdefiniowania zadań, które mają być wykonywane, kiedy należy wykonać zadania oraz jak zgłosić powodzenie lub niepowodzenie zadań.

Użyj programu SQL Server Configuration Manager do zarządzania usługą SQL Server Agent i użyj programu SQL Server Management Studio (SSMS) w celu łatwego zarządzania właściwościami, zadaniami, alertami, operatorami i serwerami proxy w graficznym interfejsie użytkownika.

Zadania

Zadanie to określona seria akcji, które wykonuje agent programu SQL Server. Za pomocą zadań można zdefiniować zadanie administracyjne, które można uruchomić co najmniej raz i monitorować pod kątem powodzenia lub niepowodzenia. Zadanie można uruchomić na jednym serwerze lokalnym lub na wielu serwerach zdalnych.

Ważny

Zadania Agenta SQL Server, które są uruchomione w momencie wystąpienia zdarzenia przełączania awaryjnego na instancji klastra SQL Server nie są wznawiane po przejściu do innego węzła klastra. Zadania programu SQL Server Agent, które są uruchomione w momencie wstrzymania węzła Hyper-V, nie są wznawiane, jeśli wstrzymanie powoduje przejście w tryb failover do innego węzła. Zadania, które rozpoczynają się, ale nie zostają ukończone z powodu zdarzenia failover, są rejestrowane jako uruchomione, ale nie wyświetlają dodatkowych wpisów dziennika dotyczących ukończenia lub niepowodzenia. Zadania programu SQL Server Agent w tych scenariuszach wydają się nigdy się nie skończyć.

Zadania można uruchamiać na kilka sposobów:

  • Zgodnie z co najmniej jednym harmonogramem.

  • W odpowiedzi na co najmniej jeden alert.

  • Wykonując procedurę składowaną sp_start_job.

Każda operacja w zadaniu jest krokiem zadania . Na przykład krok zadania może składać się z uruchamiania instrukcji Transact-SQL, wykonywania pakietu SSIS lub wydawania polecenia na serwerze usług Analysis Services. Etapy pracy są zarządzane jako część zadania.

Każdy krok zadania jest uruchamiany w określonym kontekście zabezpieczeń. W przypadku kroków zadania korzystających z języka Transact-SQL użyj instrukcji EXECUTE AS, aby ustawić kontekst zabezpieczeń dla kroku zadania. W przypadku innych typów kroków zadania użyj konta serwera proxy, aby ustawić kontekst zabezpieczeń dla kroku zadania.

Użyj procedury składowanej systemu sp_help_job, aby uzyskać informacje o konkretnym zadaniu. Użyj tabeli systemu dbo.sysjobs, aby wyświetlić informacje o zadaniach. Na przykład użyj następującej instrukcji Transact-SQL (T-SQL), aby wyświetlić informacje o wszystkich zadaniach na serwerze:

USE MSDB
GO
SELECT job_id, [name] FROM dbo.sysjobs;

Harmonogramy

Harmonogram określa, kiedy zadanie jest wykonywane. Więcej niż jedno zadanie może być uruchamiane zgodnie z tym samym harmonogramem, a więcej niż jeden harmonogram może być stosowany do tego samego zadania. Harmonogram może definiować następujące warunki dla czasu uruchomienia zadania:

  • Zawsze, gdy program SQL Server Agent jest uruchamiany.

  • Za każdym razem, gdy użycie procesora komputera jest na poziomie zdefiniowanym jako w stanie bezczynności.

  • Jeden raz, w określonej dacie i godzinie.

  • Zgodnie z harmonogramem cyklicznym.

Aby uzyskać więcej informacji, zobacz Tworzenie i dołączanie harmonogramów do zadań.

Alerty

Alert to automatyczna odpowiedź na określone zdarzenie. Na przykład zdarzenie może być zadaniem, które rozpoczyna się, lub zasobami systemowymi, które osiągną określony próg. Należy zdefiniować warunki, w których występuje alert.

Alert może odpowiadać na jeden z następujących warunków:

  • Zdarzenia programu SQL Server

  • Warunki wydajności programu SQL Server

  • Zdarzenia Instrumentacji Zarządzania Windows (WMI) na komputerze, gdzie działa SQL Server Agent.

Alert może wykonywać następujące akcje:

  • Powiadamianie co najmniej jednego operatora

  • Uruchamianie zadania

Aby uzyskać więcej informacji, zobacz Alerts.

Operatorów

Operator definiuje informacje kontaktowe dla osoby odpowiedzialnej za konserwację co najmniej jednego wystąpienia programu SQL Server. W niektórych przedsiębiorstwach obowiązki operatora są przypisywane do jednej osoby. W przedsiębiorstwach z wieloma serwerami wiele osób może współdzielić obowiązki operatora. Operator nie zawiera informacji zabezpieczających i nie definiuje podmiotu zabezpieczeń.

Program SQL Server może powiadamiać operatory alertów za pomocą...

  • E-mail

  • Pager (za pośrednictwem poczty e-mail)

  • net send

Notatka

Aby wysyłać powiadomienia przy użyciu usługi net send, należy uruchomić usługę Windows Messenger na komputerze, na którym znajduje się program SQL Server Agent.

Ważny

Opcje pager i oraz wysyłania net zostaną usunięte z programu SQL Server Agent w przyszłej wersji programu SQL Server. Unikaj używania tych funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tych funkcji.

Aby wysyłać powiadomienia do operatorów przy użyciu poczty e-mail lub pagerów, należy skonfigurować agent SQL Server do korzystania z Database Mail. Aby uzyskać więcej informacji, zobacz Database Mail.

Operator można zdefiniować jako alias dla grupy osób. W ten sposób wszyscy członkowie tego aliasu nie są jednocześnie weryfikowani. Aby uzyskać więcej informacji, zobacz Operatory.

Zabezpieczenia dla administrowania agentem programu SQL Server

Program SQL Server Agent używa stałych ról bazy danych SQLAgentUserRole, SQLAgentReaderRolei SQLAgentOperatorRole w bazie danych msdb do kontrolowania dostępu do programu SQL Server Agent dla użytkowników, którzy nie są członkami stałej roli serwera sysadmin. Oprócz tych stałych ról bazy danych podsystemy i serwery proxy pomagają administratorom baz danych zapewnić, że każdy krok zadania jest uruchamiany z minimalnymi uprawnieniami wymaganymi do wykonania zadania.

Role

Członkowie stałych ról bazy danych SQLAgentUserRole, SQLAgentReaderRolei SQLAgentOperatorRole w msdboraz członkowie stałej roli serwera sysadmin mają dostęp do agenta programu SQL Server. Użytkownik, który nie należy do żadnej z tych ról, nie może używać agenta programu SQL Server. Aby uzyskać więcej informacji na temat ról używanych przez agenta programu SQL Server, zobacz Implementowanie zabezpieczeń agenta programu SQL Server.

Podsystemy

Podsystem to wstępnie zdefiniowany obiekt, który reprezentuje funkcje dostępne dla kroku zadania. Każdy serwer proxy ma dostęp do co najmniej jednego podsystemu. Podsystemy zapewniają bezpieczeństwo, ponieważ rozdzielają dostęp do funkcji dostępnych dla serwera proxy. Każdy krok zadania jest uruchamiany w kontekście serwera proxy, z wyjątkiem Transact-SQL kroków zadania. Transact-SQL kroki zadania używają polecenia EXECUTE AS, aby ustawić kontekst zabezpieczeń na właściciela zadania.

Program SQL Server definiuje podsystemy wymienione w poniższej tabeli:

Nazwa podsystemu Opis
Microsoft ActiveX Script Uruchom krok zadania skryptowego ActiveX.

Ostrzeżenie Podsystem skryptów ActiveX zostanie usunięty z programu SQL Server Agent w przyszłej wersji programu Microsoft SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
System operacyjny (CmdExec) Uruchom program wykonywalny.
PowerShell Uruchom etap zadania skryptowego programu PowerShell.
Dystrybutor replikacji Uruchom krok zadania, który aktywuje Agena Dystrybucji Replikacji.
Replikacja z scalaniem Uruchom krok zadania, który aktywuje agenta scalania replikacji.
Czytelnik kolejki replikacji Uruchom krok zadania, który aktywuje agenta czytnika kolejek replikacji.
Migawka replikacji Uruchom etap zadania, który aktywuje agenta migawki replikacji.
Czytnik dziennika transakcji replikacyjnych Uruchom krok zadania, który aktywuje agenta czytnika dzienników replikacji.
Polecenie usług Analysis Services Uruchom polecenie Usług Analitycznych.
Zapytanie usług Analysis Services Uruchom zapytanie w usługach Analysis Services.
Wykonywanie pakietów usług SSIS Uruchom pakiet usług SSIS.

Notatka

Ponieważ Transact-SQL kroki zadania nie korzystają z serwerów proxy, nie ma podsystemu agenta programu SQL Server dla Transact-SQL kroków zadania.

Agent programu SQL Server wymusza ograniczenia podsystemu nawet wtedy, gdy podmiot zabezpieczeń serwera proxy zwykle ma uprawnienia do uruchamiania zadania w kroku zadania. Na przykład serwer proxy dla użytkownika, który jest członkiem stałej roli serwera o nazwie sysadmin, nie może uruchomić kroku zadania SSIS, chyba że serwer proxy ma dostęp do podsystemu SSIS, mimo że użytkownik może uruchamiać pakiety SSIS.

Proksy

Program SQL Server Agent używa serwerów proxy do zarządzania kontekstami zabezpieczeń. Serwer proxy może być używany w więcej niż jednym kroku zadania. Członkowie sysadmin ustalonej roli serwera mogą tworzyć proxy.

Każdy serwer proxy odpowiada każdemu poświadczeniu zabezpieczeń. Każdy serwer proxy może być skojarzony z zestawem podsystemów i zestawem identyfikatorów logowania. Serwer proxy może być używany tylko w przypadku kroków zadań, które używają podsystemu skojarzonego z serwerem proxy. Aby utworzyć krok zadania używający określonego serwera proxy, właściciel zadania musi użyć loginu skojarzonego z tym serwerem proxy lub być członkiem roli z nieograniczonym dostępem do serwerów proxy. Członkowie stałej roli serwera sysadmin mają nieograniczony dostęp do serwerów proxy. Członkowie SQLAgentUserRole, SQLAgentReaderRolelub SQLAgentOperatorRole mogą używać tylko serwerów proxy, do których udzielono im określonego dostępu. Każdy użytkownik będący członkiem dowolnej z tych stałych ról bazy danych programu SQL Server Agent musi mieć dostęp do określonych serwerów proxy, aby umożliwić użytkownikowi utworzenie kroków zadań korzystających z tych serwerów proxy.

Automatyzowanie administrowania

Wykonaj następujące kroki, aby skonfigurować agenta programu SQL Server w celu zautomatyzowania administrowania programem SQL Server:

  1. Ustal, które zadania administracyjne lub zdarzenia serwera są wykonywane regularnie i czy te zadania lub zdarzenia mogą być administrowane programowo. Zadanie jest dobrym kandydatem do automatyzacji, jeśli obejmuje przewidywalną sekwencję kroków i występuje w określonym czasie lub w odpowiedzi na określone zdarzenie.

  2. Definiowanie zestawu zadań, harmonogramów, alertów i operatorów przy użyciu programu SQL Server Management Studio, skryptów Transact-SQL lub obiektów zarządzania programu SQL Server (SMO). Aby uzyskać więcej informacji, zobacz Create Jobs.

  3. Uruchom zdefiniowane zadania agenta programu SQL Server.

Notatka

W przypadku domyślnego wystąpienia programu SQL Server usługa SQL Server nosi nazwę SQLSERVERAGENT. W przypadku nazwanych wystąpień usługa SQL Server Agent nosi nazwę SQLAgent$nazwa wystąpienia.

Jeśli używasz wielu wystąpień programu SQL Server, możesz użyć administracji wieloserwerowej, aby zautomatyzować zadania wspólne we wszystkich wystąpieniach. Aby uzyskać więcej informacji, zobacz Automated Administration Across an Enterprise.

Aby rozpocząć pracę z programem SQL Server Agent, wykonaj następujące zadania:

Opis Artykuł
Opisuje sposób konfigurowania agenta programu SQL Server. konfigurowanie agenta programu SQL Server
Opisuje sposób uruchamiania, zatrzymywania i wstrzymywania usługi SQL Server Agent. uruchamianie, zatrzymywanie lub wstrzymywanie usługi agenta programu SQL Server
Opisuje zagadnienia dotyczące określania konta dla usługi SQL Server Agent. Wybierz konto dla usługi SQL Server Agent
Opisuje sposób używania dziennika błędów agenta programu SQL Server. dziennika błędów agenta programu SQL Server
Opisuje sposób używania obiektów wydajności. Użyj Obiektów Wydajności
Opisuje Kreatora planu konserwacji, narzędzie służące do tworzenia zadań, alertów i operatorów w celu zautomatyzowania administracji instancją programu SQL Server. Użyj Kreatora planu konserwacji
Opisuje sposób automatyzowania zadań administracyjnych przy użyciu programu SQL Server Agent. Zautomatyzowane Zadania Administracyjne (Agent programu SQL Server)

NOSQLPS

Począwszy od programu SQL Server 2019, można wyłączyć program SQLPS. W pierwszym wierszu kroku zadania typu PowerShell można dodać #NOSQLPS, co uniemożliwia agentowi SQL automatyczne ładowanie modułu SQLPS. Teraz zadanie agenta SQL uruchamia wersję programu PowerShell zainstalowaną na maszynie, a następnie możesz użyć dowolnego innego modułu programu PowerShell.

Aby użyć modułu SqlServer w kroku Zadania agenta SQL, możesz umieścić ten kod w dwóch pierwszych wierszach skryptu.

#NOSQLPS
Import-Module -Name SqlServer