CREATE Procedure EjecutaDtsRun @ServerName varchar(30), @UserName varchar(30), @Password varchar(30), @DtsName varchar(30), @DtsPassword varchar(30), @GlobleVariableList varchar(500) -- lista de variables globales que tendran el formato siguiente -- <GlobalVariableName>:<datatypeid>=<GlobalVariableValue> AS DECLARE @ERROR int -- Para almacenar el numero de error DECLARE @CMD varchar(1000) -- Instruccion para ejecutar el DTS BEGIN -- Ponemos el error a 0 SET @ERROR = 0 IF( @GlobleVariableList IS NULL) -- Si no tiene variables globales BEGIN SET @CMD = 'dtsrun /S '+@ServerName+' /U '+@UserName+' /P '+@Password+' /N '+@DtsName+' /M '+ @DtsPassword END ELSE BEGIN -- si tiene variables globales SET @CMD = 'dtsrun /S '+@ServerName+' /U '+@UserName+' /P '+@Password+' /N '+@DtsName+ ' /M '+@DtsPassword+' '+@GlobleVariableList+'' END EXECUTE @ERROR = master..xp_cmdshell @CMD -- Comprueba si se ha producido algun error SELECT @ERROR = COALESCE( NULLIF ( @ERROR, 0 ), @@ERROR ) IF @ERROR <> 0 BEGIN ROLLBACK TRANSACTION RETURN @ERROR END END -- Devuelve el error RETURN @ERROR GO Fuente 1. |