Aracılığıyla paylaş


sp_add_jobstep (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

SQL Server Agent işine bir adım (işlem) ekler.

Transact-SQL söz dizimi kuralları

Önemli

Azure SQL Managed Instance'da çoğu ama tüm SQL Server Agent iş türleri desteklenmez. Detaylar için Azure SQL Managed Instance T-SQL Differences with SQL Server sayfasına bakınız.

Sözdizimi

sp_add_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @step_id = ] step_id ]
    , [ @step_name = ] N'step_name'
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
    [ , [ @step_uid = ] 'step_uid' OUTPUT ]
[ ; ]

Arguments

[ @job_id = ] 'job_id'

Adım ekleneceği işin kimlik numarası. @job_iduniqueidentifier'dır ve varsayılan olarak ' NULLdir.

Ya @job_id ya da @job_name belirtilmelidir, ancak ikisi de belirtilemez.

[ @job_name = ] N'job_name'

Adım ekleneceği işin adı. @job_namesysname'dir ve varsayılan olarak .NULL

Ya @job_id ya da @job_name belirtilmelidir, ancak ikisi de belirtilemez.

[ @step_id = ] step_id

İş adımı için dizi tanımlama numarası. @step_idint, varsayılan olarak .NULL Adım tanımlama numaraları boşluk olmadan başlar 1 ve artar. Mevcut diziye bir adım eklenirse, dizi numaraları otomatik olarak ayarlanır. Eğer @step_id belirtilmemişse bir değer sağlanır.

[ @step_name = ] N'step_name'

Basamağın adı. @step_namesysname'dir, varsayılan yoktur.

[ @subsystem = ] N'alt sistem'

SQL Server Agent servisinin @command çalıştırmak için kullandığı alt sistem. @subsystemnvarchar(40)'dır ve bu değerlerden biri olabilir.

Değer Description
ActiveScripting Aktif Yazı

Önemli: Bu özellik, SQL Server'ın gelecekteki bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
CmdExec İşletim sistemi komutu veya çalıştırılabilir program
Distribution Replikasyon Dağıtım Ajanı işi
Snapshot Replikasyon Anlık Ajanı işi
LogReader Replikasyon Log Okuyucu Ajanı işi
Merge Replikasyon Merge Agent işi
QueueReader Replikasyon Kuyruk Okuyucu Ajanı işi
ANALYSISQUERY Analiz Hizmetleri sorgusu (MDX, DMX)
ANALYSISCOMMAND Analiz Hizmetleri komutası (XMLA)
SSIS Entegrasyon Hizmetleri paket yürütmesi
PowerShell PowerShell Script
TSQL (varsayılan) Transact-SQL açıklaması

[ @command = ] Komut yok

SQL Server Agent servisi tarafından @subsystem aracılığıyla yürütülecek komutlar. @commandnvarchar(max)'dır, varsayılan NULLolarak . SQL Server Agent, yazılım yazarken değişkenlerin sağladığı esnekliği sağlayan token yerine koyma sağlar.

Bir kaçış makrosu, iş adımlarında kullanılan tüm tokenlara eşlik etmelidir, aksi takdirde bu iş adımları başarısız olur. Ayrıca, artık token isimlerini parantez içine koymalı ve token sözdiziminin başına bir dolar işareti ($) koymalısınız. Örneğin: $(ESCAPE_<macro name>(DATE)).

Bu tokenlar hakkında daha fazla bilgi ve iş adımlarınızı yeni token sözdizimi kullanmak için güncellemek için Job Steps'te Token Kullan'a bakınız.

Windows Olay Günlüğü'nde yazma iznine sahip herhangi bir Windows kullanıcısı, SQL Server Agent uyarıları veya WMI uyarılarıyla etkinleştirilen iş adımlarına erişebilir. Bu güvenlik riskinden kaçınmak için, uyarılarla etkinleştirilen işlerde kullanılabilen SQL Server Agent tokenları varsayılan olarak devre dışı bırakılır. Bu tokenlar: A-DBN, A-SVR, A-ERR, A-SEVA-MSG, , , ve WMI(<property>). Bu sürümde token kullanımı tüm uyarılara genişletilmiştir.

Bu tokenları kullanmanız gerekiyorsa, öncelikle SQL Server'ın bulunduğu bilgisayarın Olay Günlüğü'nde yalnızca güvenilir Windows güvenlik gruplarının üyelerinin, örneğin Yöneticiler grubunun üyelerinin yazma iznine sahip olduğundan emin olun. Sonra, Nesne Gezgin'de SQL Server Agent'a sağ tıklayın, Özellikler'i seçin ve Alert System sayfasında uyarılara verilen tüm iş yanıtları için Replace tokens seçeneğini seçerek bu tokenları etkinleştirin.

[ @additional_parameters = ] N'additional_parameters'

Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.

[ @cmdexec_success_code = ] cmdexec_success_code

Bir CmdExec alt sistem komutu tarafından döndürülen değer, @command başarıyla çalıştırıldığını belirtir. @cmdexec_success_codeint, varsayılan olarak .0

[ @on_success_action = ] on_success_action

Adım başarılı olursa yapılacak eylem. @on_success_actionçok küçük bir şeydir ve bu değerlerden biri olabilir.

Değer Tanım (aksiyon)
1 (varsayılan) Başarıyla bırak
2 Başarısızlıkla vazgeç
3 Bir sonraki adıma geç
4 Adım @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

Bu işte yürütülecek adımın ID'si başarılı olursa ve @on_success_action .4 @on_success_step_idint, varsayılan olarak .0

[ @on_fail_action = ] on_fail_action

Adım başarısız olursa yapılacak eylem. @on_fail_actionçok küçük bir şeydir ve bu değerlerden biri olabilir.

Değer Tanım (aksiyon)
1 Başarıyla bırak
2 (varsayılan) Başarısızlıkla vazgeç
3 Bir sonraki adıma geç
4 Adım @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

Bu işte uygulanacak adımın ID'si eğer adım başarısız olursa ve @on_fail_action 'dir.4 @on_fail_step_idiçi içindir, varsayılan 0olarak .

[ @server = ] N'sunucusu'

Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.

[ @database_name = ] N'database_name'

Transact-SQL adımın yürütüleceği veritabanının adı. @database_namesysname'dir ve varsayılan NULLolarak , bu durumda veritabanı master kullanılır. Parantez içinde ([]) olan isimler yasaktır. Bir ActiveX iş adımı için @database_name , adımın kullandığı betik dilinin adıdır.

[ @database_user_name = ] N'database_user_name'

Transact-SQL adımı çalıştırırken kullanılacak kullanıcı hesabının adı. @database_user_namesysname'dir ve varsayılan olarak ' NULLdir. @database_user_nameNULLolduğunda, adım iş sahibinin kullanıcı bağlamında @database_name üzerinde çalışır. SQL Server Agent bu parametreyi yalnızca iş sahibi SQL Server sistem yöneticisi ise içerir. Eğer öyleyse, verilen Transact-SQL adımı verilen SQL Server kullanıcı adının bağlamında yürütülür. Eğer iş sahibi SQL Server sistem yöneticisi değilse, Transact-SQL adım her zaman bu işi alan girişin bağlamında yürütülür ve @database_user_name parametresi göz ardı edilir.

[ @retry_attempts = ] retry_attempts

Bu adım başarısız olursa tekrar deneme sayısı. @retry_attemptsint ile varsayılan 0olarak tekrar deneme yapılmadığını gösterir.

[ @retry_interval = ] retry_interval

Tekrar deneme denemeleri arasındaki dakika cinsinden süre. @retry_intervalint'tir, varsayılan 0olarak , bu da 0-dakikalık bir aralığı gösterir.

[ @os_run_priority = ] os_run_priority

Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.

[ @output_file_name = ] N'output_file_name'

Bu adımın çıktısının kaydedildiği dosyanın adı. @output_file_namenvarchar(200)'dür ve varsayılan olarak .NULL @output_file_name@command altında listelenen bir veya daha fazla jeton içerebilir. Bu parametre yalnızca Transact-SQL, CmdExec, PowerShell, Entegrasyon Hizmetleri veya Analiz Hizmetleri alt sistemlerinde çalışan komutlar için geçerlidir.

[ @flags = ] bayraklar

Davranışı kontrol eden bir seçenek. @flagsint'tir ve bu değerlerden biri olabilir.

Değer Description
0 (varsayılan) Çıktı dosyasının üzerine yazma
2 Çıkış dosyasına ekle
4 Adım geçmişine Transact-SQL iş adım çıktısı yaz
8 Log'u tabloya yaz (mevcut geçmişin üzerine yaz)
16 Log'u tabloya yaz (mevcut geçmişe ekle)
32 Tüm çıktıları iş geçmişine yaz
64 İşin iptal edilmesi için bir sinyal olarak kullanmak üzere bir Windows olayı cmd oluşturun

[ @proxy_id = ] proxy_id

İş adımının çalıştığı proxy'nin ID numarası. @proxy_idint, varsayılan olarak .NULL Eğer @proxy_id belirtilmemişse, @proxy_name belirtilmemişse ve @database_user_name belirtilmemişse, iş adımı SQL Server Agent için hizmet hesabı olarak çalışır.

[ @proxy_name = ] N'proxy_name'

İş adımının işlediği proxy'nin adı. @proxy_namesysname'dir, varsayılan olarak .NULL Eğer @proxy_id belirtilmemişse, @proxy_name belirtilmemişse ve @database_user_name belirtilmemişse, iş adımı SQL Server Agent için hizmet hesabı olarak çalışır.

[ @step_uid = ] 'step_uid' ÇIKIŞ

@step_uid , benzersiz tanımlayıcı tipte bir OUTPUT parametresidir.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Sonuç kümesi

Yok.

Açıklamalar

sp_add_jobstep veritabanından msdb çalıştırılmalı olmalı.

SQL Server Management Studio işleri yönetmek için kolay, grafik bir yol sağlar ve iş altyapısını oluşturmak ve yönetmek için önerilen yoldur.

Varsayılan olarak, başka bir proxy belirtilmedikçe SQL Server Agent için bir iş adımı hizmet hesabı olarak çalışır. Bu hesabın bir gerekliliği, sistem yöneticisi sabit güvenlik rolünün üyesi olmaktır.

Bir vekil @proxy_name veya @proxy_id ile tanımlanabilir.

Bu saklanan prosedür, Azure SQL Veritabanı için Azure Elastic Jobs hizmeti için benzer bir nesneyle aynı adı paylaşırsp_add_jobstep. Elastic Jobs versiyonu hakkında bilgi için jobs.sp_add_jobstep (Azure Elastic Jobs) bölümüne bakınız.

Permissions

EXECUTE Bu prosedür üzerinde izinler verebilirsiniz, ancak bu izinler SQL Server yükseltmesi sırasında geçersiz kalabilir.

Diğer kullanıcılara, veritabanındaki aşağıdaki sabit veritabanı rollerinden birine msdb sahip olmalıdır:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Bu rollerin izinleri hakkında detaylar için SQL Server Agent Fixed Database Roles bölümüne bakınız.

İş adımının yaratıcısı, iş adımının proxy'sine erişmelidir. Sysadmin sabit sunucu rolündeki üyeler tüm proxy'lere erişebiliyor. Diğer kullanıcılara bir proxy'ye açıkça erişim izni verilmelidir.

Örnekler

Aşağıdaki örnek, Satış veritabanı için veritabanı erişimini yalnızca okunabilir hale getiren bir iş adımı oluşturur. Ayrıca, bu örnek beş kez tekrar deneme girişimi belirtir ve her deneme 5 dakikalık bir bekleme sonrası gerçekleşir.

Uyarı

Bu örnek, işin Weekly Sales Data Backup zaten var olduğunu varsayıyor.

USE msdb;
GO

EXECUTE sp_add_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_name = N'Set database to read only',
    @subsystem = N'TSQL',
    @command = N'ALTER DATABASE SALES SET READ_ONLY',
    @retry_attempts = 5,
    @retry_interval = 5;
GO