Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure 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