恢复sp_add_job

在msdb下

SQL code
   
   

CREATE PROCEDURE sp_add_job
@job_name sysname,
@enabled TINYINT = 1 , -- 0 = Disabled, 1 = Enabled
@description NVARCHAR ( 512 ) = NULL ,
@start_step_id INT = 1 ,
@category_name sysname = NULL ,
@category_id INT = NULL , -- A language-independent way to specify which category to use
@owner_login_name sysname = NULL , -- The procedure assigns a default
@notify_level_eventlog INT = 2 , -- 0 = Never, 1 = On Success, 2 = On Failure, 3 = Always
@notify_level_email INT = 0 , -- 0 = Never, 1 = On Success, 2 = On Failure, 3 = Always
@notify_level_netsend INT = 0 , -- 0 = Never, 1 = On Success, 2 = On Failure, 3 = Always
@notify_level_page INT = 0 , -- 0 = Never, 1 = On Success, 2 = On Failure, 3 = Always
@notify_email_operator_name sysname = NULL ,
@notify_netsend_operator_name sysname = NULL ,
@notify_page_operator_name sysname = NULL ,
@delete_level INT = 0 , -- 0 = Never, 1 = On Success, 2 = On Failure, 3 = Always
@job_id UNIQUEIDENTIFIER = NULL OUTPUT,
@originating_server sysname = NULL -- For SQLAgent use only
AS
BEGIN
DECLARE @retval INT
DECLARE @notify_email_operator_id INT
DECLARE @notify_netsend_operator_id INT
DECLARE @notify_page_operator_id INT
DECLARE @owner_sid VARBINARY ( 85 )
DECLARE @originating_server_id INT

SET NOCOUNT ON

-- Remove any leading/trailing spaces from parameters (except @owner_login_name)
SELECT @originating_server = UPPER ( LTRIM ( RTRIM ( @originating_server )))
SELECT @job_name = LTRIM ( RTRIM ( @job_name ))
SELECT @description = LTRIM ( RTRIM ( @description ))
SELECT @category_name = LTRIM ( RTRIM ( @category_name ))
SELECT @notify_email_operator_name = LTRIM ( RTRIM ( @notify_email_operator_name ))
SELECT @notify_netsend_operator_name = LTRIM ( RTRIM ( @notify_netsend_operator_name ))
SELECT @notify_page_operator_name = LTRIM ( RTRIM ( @notify_page_operator_name ))
SELECT @originating_server_id = NULL

-- Turn [nullable] empty string parameters into NULLs
IF ( @originating_server = N '' ) SELECT @originating_server = NULL
IF ( @description = N '' ) SELECT @description = NULL
IF ( @category_name = N '' ) SELECT @category_name = NULL
IF ( @notify_email_operator_name = N '' ) SELECT @notify_email_operator_name = NULL
IF ( @notify_netsend_operator_name = N '' ) SELECT @notify_netsend_operator_name = NULL
IF ( @notify_page_operator_name = N '' ) SELECT @notify_page_operator_name = NULL

IF ( @originating_server IS NULL ) OR ( @originating_server = ' (LOCAL) ' )
SELECT @originating_server = UPPER ( CONVERT (sysname, SERVERPROPERTY( ' ServerName ' )))

-- only members of sysadmins role can set the owner
IF ( @owner_login_name IS NOT NULL AND ISNULL ( IS_SRVROLEMEMBER (N ' sysadmin ' ), 0 ) = 0 ) AND ( @owner_login_name <> SUSER_SNAME ())
BEGIN
RAISERROR ( 14515 , - 1 , - 1 )
RETURN ( 1 ) -- Failure
END

-- Default the owner (if not supplied or if a non-sa is [illegally] trying to create a job for another user)
-- allow special account only when caller is sysadmin
IF ( @owner_login_name = N ' $(SQLAgentAccount) ' ) AND
(
ISNULL ( IS_SRVROLEMEMBER (N ' sysadmin ' ), 0 ) = 1 )
BEGIN
SELECT @owner_sid = 0xFFFFFFFF
END
ELSE
IF ( @owner_login_name IS NULL ) OR (( ISNULL ( IS_SRVROLEMEMBER (N ' sysadmin ' ), 0 ) = 0 ) AND ( @owner_login_name <> SUSER_SNAME ()))
BEGIN
SELECT @owner_sid = SUSER_SID ()
END
ELSE
BEGIN -- force case insensitive comparation for NT users
SELECT @owner_sid = SUSER_SID ( @owner_login_name , 0 ) -- If @owner_login_name is invalid then SUSER_SID() will return NULL
END

-- Default the description (if not supplied)
IF ( @description IS NULL )
SELECT @description = FORMATMESSAGE ( 14571 )

-- If a category ID is provided this overrides any supplied category name
EXECUTE @retval = sp_verify_category_identifiers ' @category_name ' ,
' @category_id ' ,
@category_name OUTPUT,
@category_id OUTPUT
IF ( @retval <> 0 )
RETURN ( 1 ) -- Failure

-- Check parameters
EXECUTE @retval = sp_verify_job NULL , -- The job id is null since this is a new job
@job_name ,
@enabled ,
@start_step_id ,
@category_name ,
@owner_sid OUTPUT,
@notify_level_eventlog ,
@notify_level_email OUTPUT,
@notify_level_netsend OUTPUT,
@notify_level_page OUTPUT,
@notify_email_operator_name ,
@notify_netsend_operator_name ,
@notify_page_operator_name ,
@delete_level ,
@category_id OUTPUT,
@notify_email_operator_id OUTPUT,
@notify_netsend_operator_id OUTPUT,
@notify_page_operator_id OUTPUT,
@originating_server OUTPUT
IF ( @retval <> 0 )
RETURN ( 1 ) -- Failure


SELECT @originating_server_id = originating_server_id
FROM msdb.dbo.sysoriginatingservers_view
WHERE (originating_server = @originating_server )
IF ( @originating_server_id IS NULL )
BEGIN
RAISERROR ( 14370 , - 1 , - 1 )
RETURN ( 1 ) -- Failure
END


IF ( @job_id IS NULL )
BEGIN
-- Assign the GUID
SELECT @job_id = NEWID ()
END
ELSE
BEGIN
-- A job ID has been provided, so check that the caller is SQLServerAgent (inserting an MSX job)
IF (PROGRAM_NAME() NOT LIKE N ' SQLAgent% ' )
BEGIN
RAISERROR ( 14274 , - 1 , - 1 )
RETURN ( 1 ) -- Failure
END
END

INSERT INTO msdb.dbo.sysjobs
(job_id,
originating_server_id,
name,
enabled,
description,
start_step_id,
category_id,
owner_sid,
notify_level_eventlog,
notify_level_email,
notify_level_netsend,
notify_level_page,
notify_email_operator_id,
notify_netsend_operator_id,
notify_page_operator_id,
delete_level,
date_created,
date_modified,
version_number)
VALUES ( @job_id ,
@originating_server_id ,
@job_name ,
@enabled ,
@description ,
@start_step_id ,
@category_id ,
@owner_sid ,
@notify_level_eventlog ,
@notify_level_email ,
@notify_level_netsend ,
@notify_level_page ,
@notify_email_operator_id ,
@notify_netsend_operator_id ,
@notify_page_operator_id ,
@delete_level ,
GETDATE (),
GETDATE (),
1 ) -- Version number 1
SELECT @retval = @@error

-- NOTE: We don't notify SQLServerAgent to update it's cache (we'll do this in sp_add_jobserver)

RETURN ( @retval ) -- 0 means success
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值