April 16, 2012

sp_cdc_add_job (Transact-SQL MetaData) Definition

Please note: that the following source code is provided and copyrighted by Microsoft and is for educational purpose only.
The meta data is from an SQL 2012 Server.

I have posted alot more, find the whole list here.

Goto Definition or MetaData

Definition:

sys.sp_cdc_add_job(nvarchar @job_type
, bit @start_job
, int @maxtrans
, int @maxscans
, bit @continuous
, bigint @pollinginterval
, bigint @retention
, bigint @threshold
, bit @check_for_logreader)

MetaData:

 create procedure sys.sp_cdc_add_job  
(
@job_type nvarchar(20),
@start_job bit = 1,
@maxtrans int = null,
@maxscans int = null,
@continuous bit = null,
@pollinginterval bigint = null,
@retention bigint = null,
@threshold bigint = null,
@check_for_logreader bit = 0
)
as
begin
set nocount on

declare @job_name sysname
,@retval int
,@job_id uniqueidentifier
,@old_job_id uniqueidentifier
,@job_step_uid uniqueidentifier
,@index int
,@category_name sysname
,@command nvarchar(1000)
,@server sysname
,@databasename sysname
,@user sysname
,@schedule_name sysname
,@database_id int
,@valid_job bit
,@description nvarchar(100)
,@step_name nvarchar(100)
,@logreader_exists bit

-- Verify SQL Server edition
-- CDC is restricted to Eval, Enterprise and Developer editions
IF (sys.fn_MSrepl_editionid () not in (30,31))
BEGIN
DECLARE @edition sysname
SELECT @edition = CONVERT(sysname, SERVERPROPERTY('Edition'))
RAISERROR(22988, 16, -1, @edition)
RETURN (1)
END

--
-- CDC Job security check
--
exec @retval = [sys].[sp_MScdc_job_security_check]
if @retval <> 0 or @@error <> 0
return (1)

-- Verify database is currently enabled for change data capture
if ([sys].[fn_cdc_is_db_enabled]() != 1)
begin
set @databasename = db_name()
raiserror(22901, 16, -1, @databasename)
return 1
end

set @job_type = rtrim(ltrim(lower(@job_type)))

--
-- Parameter validation
--

-- job type must be either 1 or 2
if ((@job_type is null) or (@job_type not in (N'capture', N'cleanup')))
begin
raiserror(22992, 16, -1, @job_type)
return(1)
end

--
-- Insure that transactional replication is not also enabled for the database
--
if (@job_type = N'capture')
begin
set @logreader_exists = 0
exec @retval = [sys].[sp_MScdc_tranrepl_check] @logreader_exists = @logreader_exists output, @skip_remote_check = @check_for_logreader
if @retval <> 0 or @@error <> 0
return (1)
end
-- coming from sp_cdc_enable_table, when db is published for tran and there is logreader agent already, don't raiserror
if (@logreader_exists = 1) and (@check_for_logreader = 1)
return 0

-- Set job specific defaults
if (@job_type = N'capture')
begin
if (@continuous is null)
set @continuous = 1

if (@maxtrans is null)
set @maxtrans = 500

if (@maxscans is null)
set @maxscans = 10

if (@pollinginterval is null)
begin
if (@continuous = 1)
set @pollinginterval = 5
else
set @pollinginterval = 0
end
end
else
begin
if (@retention is null)
set @retention = 4320
if (@threshold is null)
set @threshold = 5000
end

-- Only @retention, @threshold, and @start_job may have non-null values for cleanup job
if (@job_type = N'cleanup') and
( (@pollinginterval is not null) or
(@maxtrans is not null) or
(@continuous is not null) or
(@maxscans is not null))
begin
raiserror(22996, 16, -1)
return(1)
end

-- Only @pollinginterval, @maxtrans, @maxscans, @continuous, and @start_job may have non-null values for capture job
if (@job_type = N'capture') and ((@retention is not null) or (@threshold is not null))
begin
raiserror(22995, 16, -1)
return(1)
end

if (@job_type = N'capture')
select @retention = 0, @threshold = 0
else
select @pollinginterval = 0, @maxtrans = 0, @continuous = 0, @maxscans = 0

-- 24 hour maximum on polling interval
if (@pollinginterval > (60*60*24)) or (@pollinginterval < 0)
begin
raiserror(22990, 16, -1)
return(1)
end

-- Retention may not be negative or greater than 52594800 if adding cleanup job
if (@job_type = N'cleanup') and ((@retention <= 0) or (@retention > 52594800))
begin
raiserror(22994, 16, -1)
return(1)
end

-- Threshold may not be negative if adding cleanup job
if (@job_type = N'cleanup') and (@threshold <= 0)
begin
raiserror(22850, 16, -1)
return(1)
end

-- maxtrans must be greater than 0
if (@job_type = N'capture') and (@maxtrans <= 0)
begin
raiserror(22991, 16, -1)
return(1)
end

-- maxscans must be greater than 0
if (@job_type = N'capture') and (@maxscans <= 0)
begin
raiserror(22970, 16, -1)
return(1)
end

-- Call internal stored procedure to create the job
exec @retval = sys.sp_cdc_add_job_internal
@job_type,
@start_job,
@maxtrans,
@maxscans,
@continuous,
@pollinginterval,
@retention,
@threshold

if @retval <> 0 or @@error <> 0
return (1)

return 0
end

No comments:

Post a Comment

Total Pageviews