stored - Trabajo del Agente de SQL Server-¿Existe entonces Drop?
sql server create job to execute stored procedure (4)
Puede crear una tarea Ejecutar script y ejecutarla como un trabajo ...
¿Existe una forma similar en SQL para lograr lo siguiente, pero con trabajos de servidor de SQL en su lugar?
así es como lo hago para los procedimientos almacenados ...
if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[storedproc]'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1)
drop procedure [dbo].[storedproc]
GO
CREATE PROCEDURE [dbo].[storedproc] ...
Pruebe algo como esto:
DECLARE @jobId binary(16)
SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name = N''Name of Your Job'')
IF (@jobId IS NOT NULL)
BEGIN
EXEC msdb.dbo.sp_delete_job @jobId
END
DECLARE @ReturnCode int
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N''Name of Your Job''
Lo mejor es leer los documentos sobre todos los parámetros necesarios para ''sp_add_job'' y ''sp_delete_job''
IF EXISTS (SELECT job_id
FROM msdb.dbo.sysjobs_view
WHERE name = N''Your Job Name'')
EXEC msdb.dbo.sp_delete_job @job_name=N''Your Job Name''
, @delete_unused_schedule=1
Si genera la secuencia de comandos SQL para un trabajo (probado con el administrador de la empresa), crea automáticamente la verificación de las declaraciones de presencia y exclusión. Ejemplo a continuación: -
DECLARE @JobID BINARY(16)
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
-- Delete the job with the same name (if it exists)
SELECT @JobID = job_id
FROM msdb.dbo.sysjobs
WHERE (name = N''My test job'')
IF (@JobID IS NOT NULL)
BEGIN
-- Check if the job is a multi-server job
IF (EXISTS (SELECT *
FROM msdb.dbo.sysjobservers
WHERE (job_id = @JobID) AND (server_id <> 0)))
BEGIN
-- There is, so abort the script
RAISERROR (N''Unable to import job ''''My test job'''' since there is already a multi-server job with this name.'', 16, 1)
END
ELSE
-- Delete the [local] job
EXECUTE msdb.dbo.sp_delete_job @job_name = N''My test job''
SELECT @JobID = NULL
END