Aracılığıyla paylaş


sys.sp_cdc_add_job (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Mevcut veritabanında bir değişiklik veri yakalama temizliği veya yakalama işi oluşturur.

Transact-SQL söz dizimi kuralları

Sözdizimi

sys.sp_cdc_add_job [ @job_type = ] N'job_type'
    [ , [ @start_job = ] start_job ]
    [ , [ @maxtrans = ] max_trans ]
    [ , [ @maxscans = ] max_scans ]
    [ , [ @continuous = ] continuous ]
    [ , [ @pollinginterval = ] polling_interval ]
    [ , [ @retention ] = retention ]
    [ , [ @threshold ] = 'delete_threshold' ]
[ ; ]

Arguments

[ @job_type = ] N'job_type'

Eklenecek iş türü. @job_typenvarchar(20) ve olamaz NULL. Geçerli girişler capture ve cleanup'dir.

[ @start_job = ] start_job

İş eklendikten hemen sonra başlatılıp başlamayacağını belirten bayrak. @start_jobbit, varsayılan olarak .1

[ @maxtrans ] = max_trans

Her tarama döngüsünde işlem yapılacak maksimum işlem sayısı. @maxtransint ile varsayılan 500olarak . Belirtilirse, değer pozitif bir tamsayı olmalıdır.

@maxtrans sadece yakalama işleri için geçerlidir.

[ @maxscans ] = max_scans

Tüm satırları günlükten çıkarmak için yürütülmesi gereken maksimum tarama döngüsü. @maxscansint ile varsayılan 10olarak .

@max_scan sadece yakalama işleri için geçerlidir.

[ @continuous ] = sürekli

Yakalama işinin sürekli mi (1) yoksa sadece bir kez mı çalıştırılacağını (0) gösterir. @continuousbit, varsayılan olarak 1.

  • @continuous1olduğunda, sys.sp_cdc_scan işi günlüğü tarar ve işlemlere (@maxtrans * @maxscans) kadar işlem yapar. Daha sonra @pollinginterval'de belirtilen saniye sayısını bekler, ardından bir sonraki log taramasına başlar.

  • @continuous0olduğunda, sp_cdc_scan iş günlüğü @maxscans taramaya kadar çalıştırır, her taramada @maxtrans kadar işlemi işler ve ardından çıkış yapar.

@continuous sadece yakalama işleri için geçerlidir.

[ @pollinginterval ] = polling_interval

Log tarama döngüleri arasındaki saniye sayısı. @pollinginterval bigint'tir ve varsayılan olarak .5

@pollinginterval yalnızca @continuous1olarak ayarlandığında yakalama görevleri için geçerlidir. Belirtilirse, değer 24 saatten (86399 saniyeye kadar) daha büyük veya 0 eşit ve daha az olmalıdır. Eğer bir değer 0 belirtilmişse, log taramaları arasında bekleme yok.

[ @retention ] = tutma

Veri satırlarını değiştiren dakika sayısı değişim tablolarında tutulmalıdır. @retentionbüyük bir süredir ve varsayılan 4320 süresi (72 saat). Maksimum değer 52494800 (100 yıl). Belirtilirse, değer pozitif bir tamsayı olmalıdır.

@retention sadece temizlik işleri için geçerlidir.

[ @threshold = ] 'delete_threshold'

Temizleme sırasında tek bir ifade kullanılarak silinebilecek maksimum silme girdisi sayısı. @threshold bigint'tir ve varsayılan olarak '5000dir.

Dönüş kodu değerleri

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

Sonuç kümesi

Yok.

Açıklamalar

Veritabanındaki ilk tablo değişiklik veri yakalama için etkinleştirildiğinde, varsayılan değerler kullanılarak bir temizlik işi oluşturulur. Veritabanındaki ilk tablo değişiklik veri yakalama için etkinleştirildiğinde ve veritabanı için işlemsel yayınlar bulunmadığında, varsayılan değerler kullanılarak bir yakalama işi oluşturulur. İşlemsel bir yayın olduğunda, işlem günlüğü okuyucusu yakalama mekanizmasını çalıştırmak için kullanılır ve ayrı bir yakalama işi zorunlu değildir veya izin verilmez.

Temizleme ve yakalama işleri varsayılan olarak oluşturulduğundan, bu saklanan prosedür yalnızca bir iş açıkça bırakıldığında ve yeniden oluşturulması gerektiğinde gereklidir.

İşin cdc.<database_name>_cleanup adı veya cdc.<database_name>_capture, burada <database_name> mevcut veritabanının adı gösterilir. Aynı isme sahip bir iş zaten varsa, isme bir nokta (.) ve ardından benzersiz bir tanımlayıcı eklenir, örneğin: cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52.

Bir temizleme veya yakalama işinin mevcut yapılandırmasını görmek için sys.sp_cdc_help_jobs kullanın. Bir işin yapılandırmasını değiştirmek için sys.sp_cdc_change_job kullanın.

Permissions

Sabit db_owner veritabanı rolünde üyelik gerektirir.

Örnekler

A. Bir yakalama işi oluşturun

Aşağıdaki örnek bir yakalama işi oluşturur. Bu örnek, mevcut temizlik işinin açıkça bırakıldığını ve yeniden oluşturulması gerektiğini varsayıyor. İş, varsayılan değerler kullanılarak oluşturulur.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_add_job @job_type = N'capture';
GO

B. Bir temizlik işi yarat

Aşağıdaki örnek, AdventureWorks2025 veritabanında bir temizlik işi oluşturmaktadır. @start_job0 parametresi 5760 dakika (96 saat) olarak ayarlanmış ve @retention olarak ayarlanmıştır. Bu örnek, mevcut temizlik işinin açıkça bırakıldığını ve yeniden oluşturulması gerektiğini varsayıyor.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_add_job
    @job_type = N'cleanup',
    @start_job = 0,
    @retention = 5760;