Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Modyfikowanie harmonogramu agentów serwera SQL (T-SQL)

Harmonogramami agenta SQL Server można zarządzać niezależnie od zadań. Oznacza to, że możesz aktualizować harmonogram bezpośrednio bez aktualizowania samego zadania.

Możesz to zrobić za pomocą sp_update_schedule procedura składowana.

Przykład

Utwórz harmonogram

Najpierw utwórzmy harmonogram:

EXEC sp_add_schedule 
    @schedule_name = N'Weekly_Sat_1AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 10000;

Możemy teraz użyć sp_update_schedule aby zmodyfikować ten harmonogram.

Zaktualizuj harmonogram

Oto przykład aktualizacji harmonogramu, który właśnie stworzyliśmy.

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 40000;

W tym przypadku zmieniłem nazwę harmonogramu, a także częstotliwość i godzinę rozpoczęcia.

Zwróć uwagę, że sp_update_schedule zmienia tylko te ustawienia, dla których podane są wartości parametrów. Jeśli parametr zostanie pominięty, bieżące ustawienie zostanie zachowane.

Dlatego, ponieważ niektóre z naszych ustawień pozostały takie same (w szczególności @freq_type i @freq_recurrence_factor ), mogliśmy całkowicie pominąć te parametry.

Tak:

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_interval = 1,
    @active_start_time = 40000;

Wyłącz harmonogram

Możesz ustawić @enabled do 0 aby wyłączyć harmonogram.

Przykład:

EXEC sp_update_schedule 
    @name = N'Weekly_Sun_4AM',
    @new_name = N'Weekly_Sun_4AM (DISABLED)',
    @enabled = 0;

W tym przykładzie zmieniłem również nazwę, aby było jasne, że zadanie jest wyłączone.

Sprawdź harmonogram

Możesz użyć sp_help_schedule aby wyświetlić bieżące ustawienia harmonogramu.

Możesz go używać z parametrami lub bez. W przypadku użycia bez parametrów, zwraca wszystkie harmonogramy.

EXEC sp_help_schedule;

Jeśli chcesz zobaczyć szczegóły tylko jednego harmonogramu, możesz podać nazwę lub identyfikator harmonogramu.

Tak:

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM';

Chociaż podając imię, musisz pamiętać o nazwisku, które podałeś w harmonogramie. W naszym przypadku, jeśli uruchomimy tę procedurę po poprzednim przykładzie (kiedy wyłączyliśmy harmonogram), musielibyśmy to zrobić:

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM (DISABLED)';

Jednak identyfikator harmonogramu pozostaje stały, więc możesz go używać niezależnie od nazwy harmonogramu.

Przykład:

EXEC sp_help_schedule 
	@schedule_id = 16;

Używając identyfikatora, możesz pominąć nazwę parametru, jeśli chcesz.

Przykład:

EXEC sp_help_schedule 16;

Co się dzieje z zadaniami, które korzystają ze zmodyfikowanego harmonogramu?

Wszystkie zadania korzystające z harmonogramu natychmiast korzystają z nowych ustawień. Jednak zmiana harmonogramu nie zatrzymuje aktualnie uruchomionych zadań.

Pełna składnia

Pełna składnia sp_update_schedule idzie tak:

sp_update_schedule   
    {   [ @schedule_id = ] schedule_id   
      | [ @name = ] 'schedule_name' }  
    [ , [ @new_name = ] new_name ]  
    [ , [ @enabled = ] enabled ]  
    [ , [ @freq_type = ] freq_type ]  
    [ , [ @freq_interval = ] freq_interval ]   
    [ , [ @freq_subday_type = ] freq_subday_type ]   
    [ , [ @freq_subday_interval = ] freq_subday_interval ]   
    [ , [ @freq_relative_interval = ] freq_relative_interval ]   
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]   
    [ , [ @active_start_date = ] active_start_date ]   
    [ , [ @active_end_date = ] active_end_date ]   
    [ , [ @active_start_time = ] active_start_time ]   
    [ , [ @active_end_time = ] active_end_time ]   
    [ , [ @owner_login_name = ] 'owner_login_name' ]  
    [ , [ @automatic_post =] automatic_post ]

Zobacz dokumentację Microsoft dla sp_update_schedule dla wyjaśnienia każdego parametru, a także wartości, które każdy akceptuje.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego warto korzystać z poziomu izolacji ODCZYTAJ NIEZAANGAŻOWANE?

  2. SQL SERVER:Uzyskaj całkowitą liczbę dni między dwiema datami

  3. Jak odzyskać *wszystko* z procedury składowanej za pomocą JDBC?

  4. Obliczanie sumy bieżącej z klauzulą ​​OVER i klauzulą ​​PARTITION BY w SQL Server

  5. Uzyskanie minimum dwóch wartości w SQL